4학년 2학기 졸업프로젝트, 경희대 전석희 교수님과 1학기동안 면담을 진행하면서 진행하였다.
이미 AR로 가구를 배치할 수 있는 서비스들은 다수 존재한다.
대표적으로 아마존이 있다. 하지만, 실제로 사용해보면 어색함이 많다.
어색한 점의 예시는 다음과 같다.
- 가구가 현실의 빛에 의해서 밝아지는 정도가 반영되지 않음
- 빛이 존재하는 가구(ex/책상등)의 빛에 의해서 현실이 밝아지는 정도가 반영되지 않음
- 현실의 물체와의 depth값 비교를 통한 Occlusion효과가 존재하지 않음
1번 문제는 'Lighting Estimation'이라는 키워드로 이미 많은 연구가 이루어지고 있는 상황이기 때문에, 나는 2,3번 문제를 해결하고자 하였다.
AR디바이스로 퀘스트3기기를 사용했다. 사용 이유는 depth센서가 존재해서 Occlusion효과와 3d reconstruction기능을 이용하기 수월했기 때문이다.
그리고 Color Passthrough기능을 지원하기 때문에 VR기기임에도 AR개발을 할 수 있었다.
퀘스트3을 사용하는 유저들은 처음 사용할 때 안전공간인식을 위해서 방을 쭉 둘러보게 되는데, 이때 방의 3D Mesh가 생성된다. 위 사진과 같은 Mesh데이터가 퀘스트3 로컬에 저장되게 된다. 이 Mesh를 로딩해서 내 프로젝트의 공간정보로 사용했다.
로딩된 공간정보에 유니티 Custom Shader를 적용해서 현실 조명효과를 구현하였다. 픽셀셰이더에서 처리되는 라이팅 함수에서 빛에 영향을 많이 받으면 불투명하게 빛에 영향을 적게 받으면 투명하게 처리하는 코드를 추가했다.
https://github.com/oculus-samples/Unity-DepthAPI
meta에서 제공하는 Depth API를 적용해서 Occlusion효과를 구현했다.
퀘스트3를 PC에 연결해서
adb shell setprop debug.oculus.experimentalEnabled 1
위 커맨드를 입력해서 실험 기능을 활성화하고
Mesh들에 적용된 Material의 Shader를
Depth API가 적용된 Shader로 교체하는 과정을 거쳤다.
Depth센서를 이용해서 가상 빛에 의한 현실조명효과와 Occlusion을 개발함으로써
상용 AR가구 배치서비스들의 사실감을 높일 수 있는 방안을 제시함
https://www.youtube.com/watch?v=eDFdzBcUpvk
https://github.com/yuntaewoong/ARFurniturePlacement