앱을 실행하면 스마트폰의 후면 카메라를 이용해 주변 환경을 디스플레이 화면에 출력한다.
화면에 표시된 공간에서 평평한 바닥 공간을 인식하고 사용자가 화면을 손으로 터치해서 확정한 자리에 자동차 모델링이 위치하게 된다.
이후 사용자는 UI를 통해 자동차의 색상을 변경하거나 위치를 변경할 수 있다.
스마트폰의 카메라로 찍은 화면에서 바닥 인식하기
01) AR 전용 카메라 배치하기
우선 'CarScene'이라는 새로운 씬을 생성한다.
이후 가장 먼저 *AR Session 오브젝트를 배치한다.
: Hierarchy 창에서 '+' 클릭-> XR-> AR Session 클릭
다음으로는 *AR Session Origin 오브젝트를 배치한다.
: Hierarchy 창에서 '+' 클릭-> XR-> AR Session Origin 클릭
AR Session Origin 오브젝트는 AR Camera 오브젝트를 자식으로 갖기 때문에 기존 씬에 있던 Main Camera 오브젝트는 삭제하고 , AR Camera의 태그를 'MainCamera'로 변경하기
*AR Session :
AR Core 시스템 관리 & 스마트폰의 카메라 장치에 접근하는 역할,
또한 유니티와는 별도로 AR 시스템의 Lifecycle 처리를 담당하며 매 프레임마다 카메라로부터
화면 이미지나 위치 수신 여부를 결정하는 AR Core의 핵심 기능을 담당한다.
*AR Session Origin :
스마트폰의 카메라 위치 및 회전을 유니티 월드 공간 좌표로 환산하는 역할,
그 기준이 되는 AR Camera 오브젝트를 자식 오브젝트로 갖는다.
스마트폰의 카메라로 찍은 화면에서 바닥 인식하기
02) 바닥 인식하기
AR Session Origin 오브젝트에 *AR Plane Manager 컴포넌트를 추가한다.
-Plane Prefab: 인식한 대상 위에 생성할 게임 오브젝트 프리팹을 할당해 준다.
-Detection Mode: Horizontal(바닥면), Vertical(수직) 벽면 중에서 감지해야할 대상을 선택한다.*AR Plane Manager 컴포넌트 :
AR 카메라가 인식해야 할 대상을 설정하고 그 위에 생성할 게임 오브젝트를 지정해 준다.감지된 바닥을 시각적으로 표현하기
바닥이 잘 감지되고 있는지 확인하기 위해 바닥면이 반투명한 흰색으로 표시되도록
우선 씬 위에 'DetectedPlane' 이라는 이름으로 빈 게임 오브젝트를 생성한다.
바닥 표면도 결국 카메라에 렌더링되는 *3D 오브젝트에 해당한다.*3D 오브젝트들의 공통된 컴포넌트
- Mesh Filter : 오브젝트의 전체적인 형태를 구성
- Mesh Renderer : 오브젝트를 화면에 어떻게 그릴지를 결정
- Collider : 오브젝트의 충돌 영역을 표시
Object 렌더링 = Mesh + Material따라서 DetectedPlane 오브젝트에 Mesh Filter , Mesh Renderer, Mesh Collider 컴포넌트를 추가한다.
*AR Plane Mesh Visualizer 컴포넌트도 추가한다.*AR Plane Mesh Visualizer :
AR 카메라에 감지된 바닥면(= 자동 생성되는 AR Plane 컴포넌트)의 형태에 따라 메시를 동적으로 생성하고 동일한 오브젝트 내에 있는 Mesh Filter 컴포넌트의 Mesh 항목에 자동으로 추가해 준다.
이제 실제 표시될 면의 Material을 만든다.
Rendering Mode와 Albedo 항목만 위와 같이 반투명한 흰색이 되도록 설정해 준다.
DetectedPlane 오브젝트-> Mesh Renderer 컴포넌트-> Materials항목의 Element0 에 M_Plane을 드래그 앤 드롭
DetectedPlane 오브젝트는 바닥이 감지될 때만 생성되는 오브젝트기 때문에 프리팹화하고, 씬에서 삭제한다.
마지막으로 AR Session Origin 오브젝트에서 바닥 감지를 담당하는 AR Plane Manager 컴포넌트의 Plane Prefab 항목에 DetectedPlane을 드래그 앤 드롭해 준다.APK 파일로 빌드하기
AR Foundation은 기존의 유니티 콘텐츠와는 달리 스마트폰의 카메라 장치를 사용해야만 작동하기 때문에 빌드 및 설치를 통해 테스트해야만 한다. 최초 빌드의 설정만 잘해두면 그 후에는 빠르게 계속 빌드할 수 있다.
Ctrl+Shift+B 로 빌드 세팅 창을 생성한다.
Add Open Scenes를 클릭해서 현재 씬을 추가하고, Player Settings... 클릭
AR 설정과 관련된 항목인 Other Settings 탭에서 Graphics APIs 항목에서 Vulkan API 삭제 , Multithread Rendering 항목은 체크 표시를 해제한다.
Player 세팅의 Identification 카테고리는 아래와 같이 설정한다.
세팅 창을 닫고 File-> Build Settings... 클릭
스마트폰과 pc를 핸드폰 케이블로 연결한 상태에서 Build and Run 클릭
*앱 크래시 해결
Build Setting...-> Player Setting 에서
Configuration에서 ILC2PP로 바꿔주고 ARM64 체크할 것 !