예지의 개발 로그포스 (Yeji's Log Force)

[Unity][HandiLab] AR foundation 활용 본문

[Unity] Projects & Study/HandiLab - AR 과학 실험

[Unity][HandiLab] AR foundation 활용

Yeji Heo 2022. 7. 6. 13:07

이전까지의 프로젝트에서는 AR개발에 Vuforia를 활용했었다.

그런데 Vuforia로고가 화면에 뜨는 부분이 신경쓰이기도 하고, 여러가지 방법을 공부해보고 싶어서

이번에는 AR foundation을 사용했다.

각 실험은 Prefab이고 AR에서 인식한 평면에 실험 Prefab을 spawn해 실험을 진행할 수 있다.

 

Window->Package Manager의 Unity Registry에서 ARfoundation와 ARCore XR Plugin을 import한다.

그 외 세팅들은 

https://minquu.tistory.com/219 를 참고했다. (잘 정리해주셔서 감사합니다!)

 

AR Foundation _ 파운데이션 Rnd

먼저 URP 씬을 하나 만들어준다. 필요없는 것들을 삭제해준다. 기존에 있는 스크립터 폴더를 지우고 URPAssets 라는 폴더를 만들어서 씬폴더를 제외한 나머지를 넣어준다. 윈도우즈 - 패키지매니져

minquu.tistory.com

AR foundation을 여러 프로젝트에서 써야 했기에 아예 프리팹화 해서 끌어다 썼다.

그러다보니 나는 AR foundation이라는 오브젝트를 하나 만들어서 그 안에 AR Session Origin과 AR Session을 추가해줬다. Controller는 ARPlacement스크립트를 가지고 있다.

PlacementIndicator는 이런 target아이콘으로 오브젝트를 스폰할 위치를 화면상에 알려주는 역할을 한다.

 

그런데 나는 target아이콘 대신 아래와 같은 반투명 책상 오브젝트를 이용하여

사용자가 실험에 사용할 테이블을 어느 위치에 배치할지 대략적으로 볼 수 있도록 했다.

 

이 녀석의 위치는 ARPlacement스크립트가 제어한다. 카메라 화면 중앙으로 Update된다.

 

터치가 들어오면 PlacementPose에 맞게 실험Prefab을 배치한다.

그런데 실제로 Prefab의 중앙이 약간 한 쪽으로 치우쳐있고, rotation도 PlacementIndicator을 따라가면 카메라가 시점과는 달라지는 문제가 있었다. 

그래서 PlacementIndicator의 Pose를 그대로 따와서 Prefab을 배치해주면 카메라 시점과 많이 틀어졌었다.

책상을 정 중앙에 맞추기 위해 x축으로 -0.5f 밀어주고, spawn될 실험 프리팹이 카메라를 바라보도록 코드를 작성했다.

ARSessionOrigin의 ARCamera의 forward를 cameraForward에 담아주고, x와z만 받아와서 cameraBearing에 담아주었다. 

(y까지 받아오면 책상이 위 아래를 보는 등 틀어지기 때문에)

이후 그 방향을 바라보도록 쿼터니온의 LookRotation을 이용하여 조절해주었다.

 

스폰할 오브젝트(실험콘텐츠)의 position은 PlacementPose에 맞춰 적당히 조절해준 것이고,

rotation은 카메라가 바라보는 쪽을 바라보도록 조절해 준 것이다.

 

오브젝트 스폰에 관해서는  https://www.youtube.com/watch?v=0SuzwJfqgBY 참고했다.

Comments