Using EasyAR Mega for occlusion in Unity
오클루전 (Occlusion)은 AR 가상-현실 융합의 몰입감을 향상시키는 핵심 기술입니다. 이 문서는 Unity에서 EasyAR Mega를 통해 오클루전 효과를 구현하는 방법을 소개합니다.
시작하기 전에
- EasyAR Mega Unity 샘플 빠른 시작을 완료하세요.
- 실제 세계와 정렬된 콘텐츠 생성이 가능해야 합니다.
오클루전 구현 방식
오프라인 모델링: Block 좌표계에서 벽, 기둥, 대형 장비 등 현실 세계의 실체와 1:1로 일치하는 기하학적 모델 생성. 또는 Block 고밀도 모델을 클리핑 및 면감소 처리하여 최적화된 모델 획득.
런타임 정렬: 런타임에 클라우드 로컬라이제이션을 통해 Block 좌표계를 실제 공간과 정렬하고 해당 기하체 로드.
머티리얼 교체: 해당 기하체에 특수 오클루전 머티리얼 적용.
시각적 효과: GPU가 다른 가상 객체를 렌더링할 때, 깊이 테스트에 실패하면 가려진 부분의 픽셀이 자동으로 제거되어 가상 객체가 현실 물리 공간의 오클루전 논리를 따르게 됨.
기하체를 오클루전으로 사용하는 방법
다음 단계에 따라 오클루전으로 사용할 기하체를 장면에 추가하고 효과를 검증할 수 있습니다.
오클루전 기하체 배치
Mega Block의 고밀도 모델을 참고하여 내장 기하체 또는 자체 제작 기하체를 Block 좌표계의 올바른 위치에 오클루전으로 배치합니다.

[선택사항] 파노라마 이미지를 기반으로 기하체 위치 미세 조정

기하체에 오클루전 머티리얼 적용
기하체 머티리얼을 오클루전 머티리얼로 변경. Unity 기본 제공 SpatialMappingOcculusion 사용 가능.

EIF 데이터로 시뮬레이션 또는 실제 기기 실행
실행 효과를 기반으로 오클루전 모델 배치를 미세 조정할 수 있습니다.
클리핑 및 면감소된 고밀도 모델을 오클루전으로 사용하는 방법
다음 단계에 따라 내보낸 Mega Block 고밀도 모델을 클리핑 및 면감소 처리하여 오클루전용 흰색 모델을 얻고, 장면에 임포트하여 오클루전으로 사용합니다.
Mega Blocks에서 내보내기
Inspector 패널의 Mega Blocks 도구에서 내보내기 선택

내보내기 옵션 수정
내보낼 때 내보내기 옵션 수정에 유의하세요.

그림 1은 LOD 레벨로, 레벨이 낮을수록 모델이 단순해지고 면 수가 줄어듭니다. 최고 정밀도 필요 시 2 선택, 정밀도 저하를 감수하고 면 수 감소를 원할 경우 1 또는 0 선택.
그림 2는 텍스처 내보내기 옵션으로, 오클루전용 흰색 모델만 필요하므로 텍스처는 불필요.
모델 클리핑 및 면감소
내보낸 모델을 Blender와 같은 디지털 콘텐츠 제작 소프트웨어에서 클리핑, 면감소 후 Glb로 저장.
팁
예시에서는 Blender의 Decimate Modifier를 사용합니다.

클리핑 및 면감소 후:

오클루전 모델을 Unity로 임포트하고 장면의 Block 노드 하위에 마운트

모델의 Transform 수정
모델의 Transform을 수정하여 Position, Rotation을 모두 0으로 설정.
이때 오클루전용 흰색 모델은 고밀도 모델과 정확히 일치해야 합니다. 이는 디지털 콘텐츠 제작 소프트웨어에서 클리핑 및 면감소 작업 시 Block 좌표계 정의를 변경하지 않았기 때문입니다.

모델에 오클루전 머티리얼 적용
모델 머티리얼을 오클루전 머티리얼로 변경. Unity 기본 제공 SpatialMappingOcculusion 사용 가능.

EIF 데이터로 시뮬레이션 또는 실제 기기 실행
EIF 데이터로 시뮬레이션 또는 실제 기기 실행하여 효과 확인.
오클루전 효과 예상
오클루전 효과는 주로 다음 사항에 의해 영향을 받습니다:
- 로컬라이제이션 트래킹 자체의 정확도
- 모델 배치의 정확성
- 모델 자체의 정밀도 (단순 기하체가 아닌 경우)
로컬라이제이션 드리프트 시 수 cm의 미스얼라인먼트는 정상입니다.
오클루전용 모델의 면 수가 너무 많으면 성능에 영향을 줄 수 있으므로, 필요한 영역에서만 사용하고 가능한 단순한 기하체를 오클루전으로 사용하는 것을 권장합니다.