Programming/Unity

[유니티] AR Foundation_Plane Detection

lingk 2022. 1. 10. 11:47

AR Plane Manager

plane manager는 trackable(추적 가능한) manager이다.

 

 

plane manager는 environment에서 추적된 각각의 평면에 GameObject들을 생성한다. 평면은 pose, dimensions, boundary points로 나타내지는 평평한 표면이다. boundary point들은 볼록하다.

 

평면으로 추적된 환경에서의 특징들의 예에는 수평의 탁자, 바닥, 싱크대, 벽이 있다.

 

AR Plane Manager componets에서 detection modes(Horizontal, Vertical, Everything)를 정할 수 있다. 어떤 플랫폼들은 vertical plane detection을 하기 위해서 extra work를 요구하기 때문에, horizontal 평면만 필요하다면 vertical plane detection을 disable해야한다.

 

 

 

Responding to Planes

평면은 추가, 업데이트, 제거될 수 있다. 한 프레임당, planeChanged 이벤트는 마지막 프레임에서 추가되거나 업데이트되거나 제거된 적이 있는 평면의 리스트와 함께 호출될 것이다.

 

평면이 추적 되었을 때, AR Plane Manager는 평면을 나타내기 위해서 Plane Prefab을 생성할 것이다. Plane Prefab은 null로 남겨질 수 있지만, plane manager은 인스턴스화된 GameOject가 ARPlane componet를 가지고 있는지 확인할 것이다. ARPlne 컴포넌트는 추적된 평면에 대한 데이터만을 포함한다.

 

Plane이 업데이트 되었을 때, boundary vertices들도 변경되었을 것이다. 이것을 이벤트에 반영하기 위해서 plane의 ARPlane에 기입해라. 이 이벤트는 적어도 하나의 boundary vertex이 적어도 "Vertex Changed Threshold"만큼 바뀌었거나 vetices의 수가 변경되었을 때에만 발생한다.

 

Visualizeing Planes

평면을 시각화하기 위해서, ARPlane의 boundaryChanged 이벤트를 기입한 컴포넌트를 포함하는 prefab 또는 GameObject를 생성해야한다. ARFoundation은 ARPlaneMeshVisualizer를 제공한다. 이 componet는 boundary vertices로부터 Mesh를 생성할 것이고, MeshColider, MeshFilter, LineRenderer에 할당할 것이다(있는 경우).

 

새로운 Game Object를 생성할 수 있는 메뉴 항목이 있으며(GameObject > XR > AR Default Plane), 프리팹을 생성할 수 있다.

 

 

만들었으면 그것을 ARPlaneManger의 Plane Prefab 필드에 할당해야한다. 그것을 직접 사용할 수도 있고 또는 Assets 폴더에 끌여들어 Prefaba을 만들 수도 있다. default plane은 다음과 같이 보인다.

 

 

AR Default Plane을 먼저 Prefab으로 저장하고, AR Default Plane GameObject를 삭제한 다음 Prefab 필드에 있는 것을 사용해라. 

 

 

이 component는 사용하기 쉽도록 포함되어 있지만, 적합한 대로 고유한 시각화 도구(또는 기타 논리)를 작성할 수 있다.

 

 

Disabling Planes

AR Plane Manager가 활성화되어 있는 한 AR Plane Manager는 평면을 계속 생성, 업데이트 및 제거한다. 기존 평면 렌더링을 중지하려면 GameObjects를 비활성화할 수 있다.

foreach (var plane in planeManager.trackables)
{
    plane.gameObject.SetActive(false);
}

AR Plane이 plane manager에 의해서 직접 관리되고 있는 동안에는 직접 지우면 안된다.

 

 

https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@2.2/manual/plane-manager.html

 

AR Plane Manager | AR Foundation | 2.2.0-preview.6

AR Plane Manager The plane manager is a type of trackable manager. The plane manager will create GameObjects for each detected plane in the environment. A plane is a flat surface represented by a pose, dimensions, and boundary points. The boundary points a

docs.unity3d.com

 

반응형

'Programming > Unity' 카테고리의 다른 글

[유니티] AR Foundation_Plane Detection (2)  (0) 2022.01.14
[유니티] AR Foundation_Image Tracking  (0) 2022.01.12
[유니티] UI 버튼 작동이 안될때  (0) 2021.08.23
나무  (0) 2021.08.12
[유니티] VR_물건 이동  (0) 2021.06.30