Unity에서 EasyAR Mega를 사용하여 가리기 구현
가리기(Occlusion)는 AR 가상과 현실의 융합 몰입감을 향상시키는 핵심 기술입니다. 이 문서에서는 Unity에서 EasyAR Mega를 통해 가리기 효과를 구현하는 방법을 소개합니다.
시작하기 전에
- EasyAR Mega Unity 샘플 사용 빠른 시작을 완료하세요.
- 실제 장면과 정렬된 콘텐츠 만들기를 할 수 있어야 합니다.
가리기 구현 방법
오프라인 모델링: Block 좌표계에서 현실 세계의 실체(예: 벽, 기둥, 대형 장비)에 대해 1:1로 일치하는 기하학적 형상을 생성하거나 Block 조밀 모델을 자르고 면을 줄여 최적화된 모델을 얻습니다.
런타임 정렬: 런타임에 클라우드 위치 지정을 통해 Block 좌표계를 현실 공간과 정렬하고 해당 기하학적 형상을 로드합니다.
재질 교체: 이러한 기하학적 형상에 특별한 가리기 재질을 적용합니다.
시각적 효과: GPU가 다른 가상 물체를 렌더링할 때 깊이 테스트를 통과하지 못하면 가려진 부분의 픽셀이 자동으로 제거되어 가상 물체가 현실 물리 공간의 가리기 논리를 따릅니다.
기하학적 형상을 가리기로 사용
다음 단계에 따라 시나리오에 가리기로 사용할 기하학적 형상을 추가하고 효과를 확인할 수 있습니다.
가리기 기하학적 형상 배치
Mega Block의 조밀 모델을 기준으로 내장 기하학적 형상이나 직접 만든 기하학적 형상을 Block 좌표계의 올바른 위치에 가리기로 배치합니다.

[선택 사항] 파노라마 이미지에 따라 기하학적 형상 위치 미세 조정

기하학적 형상에 가리기 재질 적용
기하학적 형상의 재질을 가리기 재질로 변경할 수 있습니다. Unity에서 제공하는 SpatialMappingOcculusion을 사용할 수 있습니다.

EIF 데이터로 시뮬레이션 실행 또는 실기에서 실행
실행 결과에 따라 가리기 모델의 배치를 미세 조정할 수 있습니다.
자르고 면을 줄인 조밀 모델을 가리기로 사용
다음 단계에 따라 내보낸 Mega Block 조밀 모델을 자르고 면을 줄여 가리기에 사용할 백 모델을 만들고 시나리오에 가리기로 가져옵니다.
Mega Blocks에서 내보내기
Mesh 오른쪽의 Export 버튼을 클릭하여 조밀 모델을 내보냅니다.

내보내기 옵션 수정
내보낼 때 내보내기 옵션을 수정하는 것을 주의하세요.
그림에서 1은 LOD 레벨이며, 레벨이 낮을수록 모델이 더 단순하고 면 수가 적습니다. 가장 높은 정확도가 필요한 경우 가장 높은 레벨을 선택하세요.
그림에서 2는 내보낼 텍스처 옵션입니다. 여기서는 가리기에 백 모델만 필요하므로 텍스처는 필요하지 않습니다.
모델 자르고 면 줄이기
내보낸 모델을 디지털 콘텐츠 생성 소프트웨어(예: Blender)에서 자르고 면을 줄인 후 Glb로 저장합니다.
팁
예제에서는 Blender의 Decimate Modifier를 사용했습니다.

자르고 면을 줄인 후:

가리기 모델을 Unity에 가져와 시나리오의 Block 노드 아래에 연결

모델의 Transform 수정
모델의 Transform을 수정하여 Position과 Rotation을 모두 0으로 설정합니다.
이때 가리기에 사용되는 백 모델은 조밀 모델과 일치해야 합니다. 이는 디지털 콘텐츠 생성 소프트웨어에서 자르고 면을 줄이는 작업을 수행할 때 Block 좌표계의 정의가 변경되지 않기 때문입니다.

모델에 가리기 재질 적용
모델의 재질을 가리기 재질로 변경할 수 있습니다. Unity에서 제공하는 SpatialMappingOcculusion을 사용할 수 있습니다.

EIF 데이터로 시뮬레이션 실행 또는 실기에서 실행
EIF 데이터로 시뮬레이션 실행 또는 실기에서 실행하여 효과를 확인하세요.
가리기 효과 예상
가리기 효과는 다음과 같은 요소에 의해 주로 영향을 받습니다.
- 위치 추적 자체의 정확도
- 모델 배치의 정확도
- 모델 자체의 정확도(단순한 기하학적 형상이 아닌 경우)
위치 추적이 흔들릴 때 수 센티미터의 정렬 불일치가 발생하는 것은 정상입니다.
가리기에 사용되는 모델의 면 수가 너무 많으면 성능에 영향을 줄 수 있으므로 필요한 영역에만 사용하고 가능한 한 단순한 기하학적 형상을 가리기로 사용하는 것이 좋습니다.


