사용 스팩
Mobile - Galuxy22
UnrealEngine - 4.27.2
Plugin - AndroidCamera
상황
순서대로 폰 카메라 캡쳐, 자이로 값을 UE 카메라에 연동, 캡쳐 영상에 크로마키 적용.
세 가지 상황의 테스트를 마치고 각 기능들을 합치던 중 문제 발생.
문제 1 - 별 문제는 아닌데,,
화면 캡쳐 버튼을 누리면 어플리케이션 종료.
문제 원인
모바일 카메라의 영상을 가져오기 위해 방법들을 찾다가 설치한 ARCore plugin.
카메라 폰(Pawn) 액터 생성 시 세션을 실행하도록 해뒀었는데 두 plugin 사이에 충돌이 발생했다.
해결
ARCore plugin 호출 안 함.
문제 2
문제1은 간단히 해결 되었지만, 모바일 카메라의 영상이 안 나왔다.
문제 원인
원인 파악에 시간이 많이 소모되었는데, 간단한 문제였다. 카메라 권한 요청이 문제였다.
원인 파악 과정
디바이스 로그를 보았다. 에러 로그가 노랗다.
D/UE4 : [2022.05.25-06.39.07:042][326]LogAndroidCamera: Warning: Failed to set data source for URL vidcap://rear |
안드로이드 카메라 어플을 파고파고 들어가보면 cameraplayer14.java 파일을 훑어봤다.
setDataSourceURL함수 내부에 이런 부분이 있는데, 카메라 아이디 오류 로그는 찍히지 않았었다.
try
{
mCamera = Camera.open(cameraId);
}
catch (Exception e)
{
mCamera = null;
GameActivity.Log.debug("setDataSource: could not open camera: " + cameraId);
return false;
}
그럼 좀 더 위쪽으로 올라가며 최종적으로 로그가 찍히는 부분을 찾아보았다.
로그가 찍혀있지않아 무심코 지나쳤던 필터부분. 여기가 문제였다.
if (!CameraSupported)
{
return false;
}
그리고 로그 색이 노랗지 않을 뿐 찍혀있었다.
D/UE4 : [GameActivity] Camera supported D/UE4 : [GameActivity] Camera permission not granted |
카메라 권한, 권한을 달라!
해결
권한요청 노드 추가.
해결 과정
1. ARCore 플러그인의 경우 세션실행 시 요청이 갔었기에, 해당 플러그인(AndroidCamera)에도 요청하는 곳이 있는지 찾아보았다. 그 과정에서 AndroidCamera_UPL.xml 파일을 봤더니 요청하는 부분이 적혀있었다. 다만, 자동으로 호출하지는 않는지 여전히 카메라 권한 요청을 하지 않았다.
2. 프로젝트 세팅 - 안드로이드 - 고급 apk 패키징 - 추가권한 메뉴에 android.permission.CAMERA 문구를 추가해보았다.
여전히 권한 요청이 없었다.
3. 사용될 블루프린트(UMG widget)에 RequestAndroidPermissions 노드를 사용해서 추가해서 요청했다. 요청이 잘 갔다.
해결까지 걸린 시간
약 6시간 -> 거의 하루 업무시간 다 썼지 뭐..
'TroubleShooting' 카테고리의 다른 글
Stable-Diffusion-Webui(DDSD) (0) | 2023.06.02 |
---|---|
Install Jupyter-Notebook on AWS EC2 server. (0) | 2022.10.12 |
웹 앱 호스팅 (0) | 2022.04.29 |
Merge video and audio (with MediaRecorder) (0) | 2022.03.21 |
가상서버 설정 (0) | 2022.03.15 |