[4학년 2학기 졸업프로젝트] AR가구배치 서비스 개선

윤태웅·2023년 12월 11일
0

프로젝트

목록 보기
12/12
post-thumbnail

개요

4학년 2학기 졸업프로젝트, 경희대 전석희 교수님과 1학기동안 면담을 진행하면서 진행하였다.

프로젝트 설명

기존 문제점 분석


이미 AR로 가구를 배치할 수 있는 서비스들은 다수 존재한다.
대표적으로 아마존이 있다. 하지만, 실제로 사용해보면 어색함이 많다.
어색한 점의 예시는 다음과 같다.

  1. 가구가 현실의 빛에 의해서 밝아지는 정도가 반영되지 않음
  2. 빛이 존재하는 가구(ex/책상등)의 빛에 의해서 현실이 밝아지는 정도가 반영되지 않음
  3. 현실의 물체와의 depth값 비교를 통한 Occlusion효과가 존재하지 않음

1번 문제는 'Lighting Estimation'이라는 키워드로 이미 많은 연구가 이루어지고 있는 상황이기 때문에, 나는 2,3번 문제를 해결하고자 하였다.

사용 디바이스


AR디바이스로 퀘스트3기기를 사용했다. 사용 이유는 depth센서가 존재해서 Occlusion효과와 3d reconstruction기능을 이용하기 수월했기 때문이다.
그리고 Color Passthrough기능을 지원하기 때문에 VR기기임에도 AR개발을 할 수 있었다.

해결방법

방의 3D Scan


퀘스트3을 사용하는 유저들은 처음 사용할 때 안전공간인식을 위해서 방을 쭉 둘러보게 되는데, 이때 방의 3D Mesh가 생성된다. 위 사진과 같은 Mesh데이터가 퀘스트3 로컬에 저장되게 된다. 이 Mesh를 로딩해서 내 프로젝트의 공간정보로 사용했다.

가상의 빛에 의한 현실 조명효과


로딩된 공간정보에 유니티 Custom Shader를 적용해서 현실 조명효과를 구현하였다. 픽셀셰이더에서 처리되는 라이팅 함수에서 빛에 영향을 많이 받으면 불투명하게 빛에 영향을 적게 받으면 투명하게 처리하는 코드를 추가했다.

Occlusion


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가구 배치서비스들의 사실감을 높일 수 있는 방안을 제시함

소감

  1. 퀘스트3 산김에 활용할 수 있는 프로젝트를 해봤는데, 재미있었음
  2. VR,MR을 개발할 때 기기,기능별로 개발툴이 제각각이라는 사실을 알게됨
    -> 모든 VR기기 대응:OpenXR,
    퀘스트의 특이 기능 사용(핸드트래킹,Depth API, Mesh API) : Oculus Intergration
  3. VR,MR개발자들은 디버깅하는게 참 힘들겠다는 생각을 함.
    -> 버그 수정, HMD쓰기,또 다른 버그 발견, HMD벗기의 반복..

유튜브, 깃허브 링크

https://www.youtube.com/watch?v=eDFdzBcUpvk
https://github.com/yuntaewoong/ARFurniturePlacement

0개의 댓글