2017년 11월 14일 화요일

Unity WebcamTexture 의 동작에 문제가 있다면? - 해결 대안 제시

Unity API 를 통해서 장착된 WebCam을 컨트롤 해봤다.
되긴 되는데 신통찮다.

살아있는지 여부를 확인 하기 어렵고(try ~ catch 로 에러 핸들링도 불가),
각 캠이 지원하는 해상도 리스트도 가져올 수 없고 등등 불편하다.
 
안되는 장치도 있다.

Windows 10 출시 이후 발매된 웹캠 (특히, 마이크로소프트 스튜디오 시리즈)은 제대로 인식이 안된다.
장치가 1개만 설치되어 있을  때는 어영부영 돌아가는데, 2개 이상 설치되어 있을 때는 제대로 안된다.

Devices 에 인식이 제대로 안되고, 장치 이름 조차도 제대로 가져오지 못한다.

Logitech 의 웹캠은 대부분 잘 되는데, 이도 문제가 있으니...

Logitech Brio 4K 같은 경우는 고급 웹캠이라 그런지 화질과 동작 성능 양쪽에 문제가 없고
다양한 해상도와 컬러 포맷을 지원해서 그런지 Unity 와의 호환성에 크게 문제가 없다.

문제는 국민캠으로 불리는 Logitech C920 은 큰 문제가 없으나,
이 모델의 후속 기종인 C922가 문제가 된다.

640x480 의 기본 해상도는 별 차이 없이 잘 동작하는데,
1280x720 해상도를 요청하면 C922 의 경우에는 60FPS로만 동작하게 된다.
 
그러면  Unity 화면 상에서 뭔가 끊기는 느낌으로 동작하게 되는데...
왜 이런 거동을 보이는지 이해를 할 수 없지만,
내부를 본게 아니니 이해는 잠시 접어두고 방법 해결에만 집중했다.


이래저래 구글링 해외 포럼을 뒤져보니 비슷한 문제를 가진 사람이 많았고,
DirectShow를 이용해서 웹캠을 출력하면 될거라는 결론에 도달했다.

직접 만들어야 하나?
음... 더 이상 내부에서 작업량을 늘리고 싶지 않았다.


조금 더 찾아보니 다행히도 누군가 만들어둔 플러그인이 있었다. (영국의 RenderHeads 社)
AssetStore에서 아래의 Plugin의 데모 버전으로 시험해보니 큰 문제 없었기에 구입하는 것으로 결정.


[AVPro Live Camera]
https://www.assetstore.unity3d.com/kr/#!/content/3683

덱링크사의 제품까지 지원한다는데 이런 장비가 집에 없으니 모르겠고,
캡쳐카드를 통한 캡쳐도 화면이 이상하게 잘리거나 하는 문제 없이 거의 잘 되는 것 같다.

지원 플랫폼은 DirectShow를 이용하는 탓인지 Window Standalone 전용이기 때문에,
Windows에서 다양한 웹캠을 지원해야 하는
나와 비슷한 특수한 경우에 해당되는 사람들에게 추천한다.

댓글 없음:

댓글 쓰기