증강 현실 개발 전 3d 엔진 선택하기
AR 개발의 첫 단계는 적합한 3D 엔진을 선택하는 것입니다. 이 장에서는 왜 3D 엔진이 필요한지, AR 개발에 흔히 사용되는 3D 엔진 및 각각의 장단점을 소개합니다.
왜 ar에 3d 엔진이 필요한가
증강 현실은 단순히 카메라 화면에 2D 또는 3D 이미지를 겹치는 것이 아닌 실시간 3차원 시스템입니다. 그 핵심 능력은 다음과 같을 수 있습니다:
실제 카메라 모델링 가상 물체가 현실에 더 자연스럽게 보이도록 하기 위해, 실제 카메라 화면에 사용된 파라미터(예: 내부/외부 파라미터, 왜곡 모델 등)를 기반으로 렌더링에 사용되는 3D 엔진 내 카메라의 투영 행렬을 조정해야 합니다.
공간 좌표계 관리 디바이스, 환경, AR 콘텐츠 간의 위치와 자세를 통합 관리하며, 세계 좌표, 카메라 좌표, 디바이스 좌표 간의 선택, 설정 및 변환을 담당합니다.
실시간 3d 렌더링 실시간으로 추정된 장면 깊이 또는 재구성된 메쉬를 기반으로 가상 물체와 환경 간의 실제 오클루전 효과를 구현하고, 조명 추정 알고리즘을 통해 그림자를 시뮬레이션하여 사실적인 가상-실제 융합 효과를 달성합니다.
리소스 및 생명주기 관리 가상의 AR 리소스와 콘텐츠를 관리하며, 로드, 표시, 언로드 등의 생명주기 관리를 다룹니다.
이러한 능력들은 전형적인 3D 엔진의 핵심 책임을 구성합니다. 따라서 구체적인 프로젝트 요구사항에 따라 적합한 3D 엔진을 선택하는 것은 AR 효과를 빠르게 구현하기 위한 필수 전제 조건 중 하나입니다.
흔한 3d 엔진
EasyAR는 Unity, Unreal 또는 네이티브 개발(Native)을 포함한 다양한 3D 엔진을 지원합니다. EasyAR는 Unity 및 Native용 샘플과 개발 문서를 제공합니다.
Unity
Unity는 범용 실시간 3D 엔진으로, 현재 대다수 AR 개발자의 첫 선택입니다. Unity는 Windows/macOS 및 iOS/Android/visionOS 등 크로스 플랫폼 개발을 기본 지원합니다. Unity 생태계는 성숙되어 있으며 문서와 예제가 잘 갖춰져 있습니다.
Native
Unity와 같은 상위 레벨 래핑 엔진을 사용하는 것에 비해, OpenGL, Vulkan, Metal과 같은 네이티브 그래픽 API를 기반으로 직접 AR 개발을 할 때의 장점은 다음과 같이 요약할 수 있습니다: 시스템 의존성이 적고, 실행 환경을 극도로 간소화할 수 있으며, 카메라 모델 및 저수준 알고리즘을 깊이 있게 커스터마이징할 수 있습니다. 네이티브 API 개발은 공정 비용과 유지보수 비용이 높고, 성숙한 에디터 및 디버깅 도구가 부족하며, 반복 효율이 낮고, 크로스 플랫폼 구현이 어려워 제품 수준의 빠른 전달에 불리합니다. 일반적으로 간단한 기능 구현에 사용됩니다.
Web
Web은 설치가 필요 없으며 브라우저 기반으로 사용할 수 있어 배포 및 접근 비용이 극히 낮습니다. 자연스럽게 크로스 플랫폼이며, 빠른 출시와 대규모 사용자 접근에 적합합니다. 개발 진입 장벽이 상대적으로 낮고 프론트엔드 생태계가 성숙되어 있습니다.
현재 Web은 AR 애플리케이션에서 여전히 상당히 제한적입니다. 이는 주로 브라우저와 보안 샌드박스 제약으로 인한 성능 저하로 인해 모션 트래킹, 오클루전, 정밀 조명 등 AR 핵심 능력에 대한 지원이 부족하고, 디바이스 기능 접근이 제한되며, 안정성과 일관성을 보장하기 어렵기 때문입니다. 따라서 Web-AR는 "가벼운 디스플레이 및 마케팅"에 적합하며, 고정밀도와 강한 상호작용이 필요한 복잡한 AR 애플리케이션에는 적합하지 않습니다.