02. 지면 감지하기(Plane Detection)
AR 개발을 위한 프로젝트를 준비하기 위해 Window | Package Manangement 메뉴를 선택하여 Package Manangement 창을 열고 AR 장치 플러그인을 설치합니다.
1장의 ARCore 개발을 위한 환경 구축하기 참고하세요
- AR 장치용 XR plugins 설치하기
- ARCore XR Plugin 설치하기
- AR Foundation 패키지 설치하기
- Input System 설치하기
- Androd 플랫폼의 ARcore 설정하기
- Player 설정하기
1. AR Session Origin 설정하기
① File | New Scene을 선택하여 새로운 장면을 만들고, File | Save As 메뉴를 선택하여 Scenes 폴더에 BasicTest라고 이름을 지정하고 저장합니다.
② 하이러키창에서 Main Camera 를 삭제합니다.
③ GameObject | XR | AR Session 메뉴를 선택하여 Hierachy창에 AR Session 오브젝트를 추가합니다.
④ GameObject | XR | XR Origin 메뉴를 선택하여 Hierachy창에 XR Origin 오브젝트를 추가하고 Traking Orign Mode 속성값을 Device로 설정합니다.
Hierachy창에 XR Origin 오브젝트 하위의 Main Camera 오브젝트 속성들은 다음과 같이 설정됩니다.
⑤ Hierarchy 창에서 XR Origin 오브젝트를 선택하고 Inspector 창에서 Add Component 버튼을 클릭하여 AR Point Cloud Manager 컴포넌트를 추가합니다.
④ Hierarchy 창에서 XR Origin 오브젝트를 선택하고 Inspector 창에서 Add Component 버튼을 클릭하여 AR Plane Manager 컴포넌트를 추가합니다.

2. AR Point Cloud 프리팹 만들기
AR Point Cloud Manager의 Point Cloud Prefab 속성에 설정할 프리팹을 만들어 적용니다.
① Hierarchy 창에서 GameObject | XR | AR Default Point Cloud을 선택하여 파티클 오브젝트를 생성합니다.
② Hierarchy 창에서 Project 창의 Prefabs 폴더로 AR Default Point Cloud 오브젝트를 드래그하여 프리팹으로 만듭니다.
③ Hierarchy 창에서 AR Default Point Cloud 오브젝틀르 삭제합니다.
① Hierarchy 창에서 XR Origin 오브젝트를 선택하고 Project 창에서 AR Default Point Cloud 프리팹을 AR Point Cloud Manager 컴토넌트의 Point Cloud Prefab에 설정합니다.
.
3. AR Plane 프리팹 만들기
AR Plane Manager의 Plane Prefab 속성에 설정할 프리팹을 만들어 적용니다.
① Hierarchy 창에서 GameObject | XR | AR Default Plane을 선택하여 지면 오브젝트를 생성합니다.
② Hierarchy 창에서 Project 창의 Prefabs 폴더로 AR Default Plane 오브젝트를 드래그하여 프리팹으로 만듭니다.
③ Hierarchy 창에서 AR Default Plane 오브젝틀르 삭제합니다.
① Hierarchy 창에서 XR Origin 오브젝트를 선택하고 Project 창에서 AR Default Plane 프리팹을 AR Plane Manager 컴토넌트의 Plane Prefab에 설정합니다.
4. 빌드하고 실행하기
① 메인 메뉴에서 File | Save As로 장면(Scene)을 저장하고 File | Save Project로 프로젝트를 반드시 저장합니다.
② 메인 메뉴에서 File | Build Settings를 선택하여 Build Settings 창의 Scenes In Build 항목에서 Add Open Scenes
버튼을 클릭하여 현재 장면을 등록합니다.
③ Android를 선택하고 Switch Platform을 눌러서 Android가 타깃 플랫폼으로 변경합니다.
④ Project Setting 창을 닫고 Build Setting 창으로 돌아와서 안드로이드 폰을 컴퓨어와 연결한 후 Build And Run 버튼을
클릭하여 실행결과를 확인합니다.

5. UI 버튼 만들기 : 지면 보이기/감추기
① 메인 메뉴에서 GameObject | UI | Canvas를 선택하여 Canvas를 추가합니다.
메인 메뉴에서 GameObject | UI | Button 을 선택하여 Canvas를 하위에 추가하고 이름을 TogglePlaneDetection으로 변경합니다.
- Rect Transfrom : top -stretch
② TogglePlaneDetection 하위의 Text를 선택하고 인스펙터 창의 Text 에 '평면 감지 숨기기'로 입력합니다.
③ 하이러키 창의 XR Origin을 선택하고 인스펙터 창에서 Add Component 버튼을 클릭하여 PlaneDetectionController.cs를 추가합니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.XR.ARFoundation;
using TMPro;
public class PlaneDetectionController : MonoBehaviour
{
public TMP_Text m_TogglePlaneDetectionText;
ARPlaneManager m_ARPlaneManager;
void Awake()
{
m_ARPlaneManager = GetComponent<ARPlaneManager>();
}
public void TogglePlaneDetection()
{
m_ARPlaneManager.enabled = !m_ARPlaneManager.enabled;
string planeDetectionMessage = "";
if (m_ARPlaneManager.enabled)
{
planeDetectionMessage = "평면 감지 감추기";
SetAllPlanesActive(true);
}
else
{
planeDetectionMessage = "평면 감지 보이기";
SetAllPlanesActive(false);
}
if (m_TogglePlaneDetectionText != null)
m_TogglePlaneDetectionText.text = planeDetectionMessage;
}
void SetAllPlanesActive(bool value)
{
foreach (var plane in m_ARPlaneManager.trackables)
plane.gameObject.SetActive(value);
}
}
④ 추가한 PlaneDetectionController.cs 스크립트의 Togole Plane Detection 속성에 하이러키 창의 Canvas->TogglePlaneDetection-> Text를 설정합니다.
⑤ 하이러키 창에 Canvas-TogglePlaneDetection 를 선택하고 인스펙터 창에 OnClick() 함수에 XR Origin을 설정하고 함수는 PlaneDetectionController.TogglePlaneDetection()를 설정합니다.
⑥ 실행하기