Usb Video Class 및 공 검증 개발


기본 정보

프로젝트

소개

버디엑스에서 새롭게 진행하는 Android External Usb Camera를 이용한 골프 게임 사업입니다. Unity에 연결할 수 있는 Android External Usb Camera 라이브러리를 제작할 수 있는지 검증 작업과 골프 공이 감지 경계에 들어왔을 때 출발 여부와 공 인지 여부를 검증할 수 있는지 진행한 프로젝트 입니다.

개발 관련

설명

🤔 어려움 & 도전해 본 것들


Android - Unity 플러그인 개발

<aside> 💡 먼저 Android 환경에서 External USB Camera가 작동하고 Image가 취득되는지 확인했습니다. 정보를 얻은 Repository는 Github에 존재하는 AndroidUSBCamera Repository를 이용하여 R&D를 진행하였습니다. 이 과정에서 Android 환경에서도 프레임을 얻어올 수 는 있지만 해상도에 따라서 PC 환경에서 보장된 60 Frame이 48 ~ 50 Frame 사이로 고정될 수 있다는 것을 알게 되었습니다.

</aside>

48 ~ 50 Frame 이라도 Unity로 Callback 시켜야 한다

<aside> 💡 이 과정에서 Unity로 Frame을 전달하니 5 ~ 10 사이의 프레임이 유지되는 것을 찾아내게 되었고 이 원인을 확인하기 위해 Profiler를 사용하게 되었습니다. 이 과정에서 Profiler를 사용하는 방법에 대해서 배우게 되었습니다. 그리고 결과적으로 Android → Unity 간 리플렉션으로 인하여 Thread Run Time이 길어지는 것을 확인하였고 이 과정에서 Frame이 5까지 줄어드는 것을 확인하여 개발을 Unity 프로젝트로 이동하는 걸로 종료하였습니다.

</aside>

주어진 목표는 끝까지 도전하기

<aside> 💡 결과적으로 JNI 수준에서 Unity Shader로 직접 pointer를 설정하여 Image를 전달하는 라이브러리를 찾아내었고 내부 구현 플러그인도 주석을 달아서 Unity 개발자에게 전달하였습니다. 주어진 목표를 끝까지 도전한 경험이었습니다.

</aside>

공 감지 및 공 시작 검증 개발