visionOS 기반 Apple Vision Pro 앱 개발기: 딥파인 DSC 구현 과정
Apple Vision Pro는 2023년 6월 5일 WWDC에서 공개된 Apple 최초의 HMD입니다. 누구나 알고 있듯이, Apple은 IT 시장에서 아주 큰 영향력을 가지고 있고, 그만큼 Apple Vision Pro의 발표는 세계적으로 큰 관심을 받았습니다.
<이미지 출처: Apple Newsroom>
Apple은 Apple Vision Pro를 공개하면서 ‘최초의 공간 컴퓨터’라는 용어를 사용했습니다. 이는 기존의 AR/VR 기기가 단순히 가상 객체를 삽입하는 데 그쳤던 것과 달리, 현실 세계와 가상 객체 간의 자연스러운 상호작용을 제공하는 경험을 강조한 것으로 생각됩니다.
Apple Vision Pro는 eye tracking과 gesture tracking 기술을 결합하여, 음성 명령 없이도 시선 및 손짓으로 인터페이스를 제어할 수 있는 차별화된 기능을 갖추고 있습니다. 이는 개발자들에게 기존의 터치스크린이나 키보드/마우스 인터페이스와는 완전히 다른 사용자 경험을 설계해야 하는 새로운 도전 과제를 제시합니다.
또한, LiDAR 센서와 초고해상도 디스플레이는 AR 경험을 더욱 생생하고 정교하게 구현할 수 있는 기반을 제공합니다. 개발자는 이를 활용해 실내 공간 매핑과 정밀한 AR 콘텐츠 배치 등 새로운 기회를 모색할 수 있습니다.
<이미지 출처 : Apple Newsroom>
이미 우리가 매일 사용하는 컴퓨터처럼, 음악 감상, 메신저, 인터넷 탐색 같은 기능도 Apple Vision Pro에서 AR을 통해 경험할 수 있습니다. 기존의 컴퓨터 기능을 AR로 제공하는 특별한 컴퓨터인 것입니다.
visionOS 앱 개발
Apple Vision Pro는 DEEP.FINE Spatial Crafter(DSC)의 AR 기술을 구현하기에 가장 적합한 기기였고, 발표 이후 DSC 의 AR 경험을 Apple Vision Pro 환경에 최적화하기 위해 다방면으로 연구를 진행해 왔습니다.
Apple Vision Pro와 DSC의 결합은 사용자의 AR 경험을 한 단계 높여줍니다.
두 손이 자유롭지 못한 상황에서도, DSC의 VPS(Visual Positioning System) 기술을 통해 실내 내비게이션 기능을 사용할 수 있습니다. 이는 복잡한 실내 환경에서도 효과적인 위치 탐색이 가능하게 해줍니다.
태블릿 내에서 관리되는 Spatial Map과 3D Asset들을 AR 환경에서 실시간으로 조작할 수 있는 기능은 Apple Vision Pro의 고해상도 디스플레이와 결합하여 더 정밀한 콘텐츠 편집을 가능하게 합니다.
DEEP.FINE은 이러한 기능을 실현하기 위해 visionOS를 기반으로 한 AR 앱 개발을 시작했으며, Apple Vision Pro의 강력한 하드웨어와 소프트웨어 스택을 활용하여 최적화된 사용자 경험을 제공하고자 했습니다.
특히, Apple Vision Pro에서 제공하는 Reality Composer Pro와 같은 툴을 활용해 3D Asset을 관리하고 편집함으로써, 개발자들이 보다 효율적으로 AR 콘텐츠를 생성하고 관리할 수 있는 환경을 구축하였습니다.
개발 환경
Apple 플랫폼을 기반으로 한 visionOS 앱 개발은 기존의 Apple 개발 환경과 유사하게 Xcode를 활용합니다. 그러나, Apple Vision Pro의 특수한 AR 기능을 최대한 활용하기 위해서는 Reality Composer Pro와 같은 전문 툴이 필수적입니다.
Reality Composer Pro는 AR 콘텐츠의 핵심인 3D Asset을 편집하고 관리하는 데 사용되는 툴로, visionOS의 앱 개발에 있어서 필수적인 역할을 합니다. Apple Vision Pro와 연동되는 앱에서는 3D 객체의 파일 형식으로 USD(Universal Scene Description) 파일만을 지원합니다.
이는 Apple의 AR 기술에서 최적화된 형식으로, AR 콘텐츠의 복잡한 계층 구조와 물리적 상호작용을 보다 효과적으로 처리할 수 있습니다. 그러나, 기존에 자주 사용되던 OBJ 형식의 파일은 지원하지 않으므로, 개발자는 Reality Converter와 같은 도구를 통해 OBJ 파일을 USD 파일로 변환하는 추가적인 과정이 필요합니다.
이러한 변환 과정은 추가 작업이 필요하지만, 그 결과 더 나은 렌더링 성능과 호환성을 제공하여 AR 콘텐츠의 품질을 극대화할 수 있습니다. 특히, Entity 컴포넌트 시스템을 통해 개발자는 3D 객체의 위치, 회전, 크기 등 다양한 속성을 손쉽게 제어할 수 있으며, 이를 통해 보다 정교한 AR 경험을 구현할 수 있습니다.
visionOS에서의 Entity
visionOS에서 Entity를 활용하려면 Reality Composer Pro에서 생성된 RealityResourcePackage를 사용해야 합니다. Entity는 위치, 회전, 소리, 애니메이션, 색상 등 각기 다른 Component로 구성되며, 이 Component들은 Reality Composer Pro를 통해 추가 및 편집할 수 있습니다. 또한, 사용자의 행동에 따른 세밀한 제어나 변화는 코드를 통해 구현할 수 있습니다.
Entity 증강 예시:
RealityView { content in
if let entity = try?
await Entity(named: "car", in: realityKitContentBundle) {
content.add(entity)
}
}
위 코드는 간단하게 차량 모델을 증강하는 예시입니다. Entity의 조작은 주로 Component를 통해 관리되며, 위치, 크기, 회전 등 다양한 값을 제어할 수 있습니다.
Entity 조작: Drag Gesture
Entity의 위치나 크기 등 대부분의 속성은 각 Asset에 포함된 Component를 통해 관리됩니다. 개발자는 앱 실행 중에 이러한 Component를 추가하거나 삭제하고, 그 값을 변경하여 다양한 AR 경험을 사용자에게 제공할 수 있습니다.
.gesture(
DragGesture()
.targetedToAnyEntity()
.onChanged { gesture in
if currentPosition == nil {
currentPosition = gesture.entity.position(relativeTo: nil)
}
let translation3D = gesture.convert(gesture.gestureValue.translation3D, from: .local, to: .scene)
let offset = SIMD3<Float>(
x: Float(translation3D.x) + currentPosition!.x,
y: Float(translation3D.y) + currentPosition!.y,
z: Float(translation3D.z) + currentPosition!.z
)
gesture.entity.setPosition(offset, relativeTo: nil)
}
)
위 코드는 Drag Gesture를 활용해 Entity를 움직이는 예시입니다. 사용자가 Drag Gesture를 입력하면, 해당 제스처가 발생한 범위만큼 Entity의 Position을 재설정하여 객체가 움직이도록 처리합니다.
사용자의 Drag Gesture를 입력 받아, 움직인 만큼 Entity의 Position을 다시 설정하여 객체가 원하는 위치로 이동하도록 했습니다.
같은 원리로 Entity가 회전하도록 할 수도 있습니다.
이 과정에서 중요한 최적화 포인트는, 제스처가 감지될 때마다 Entity의 위치를 실시간으로 업데이트하는 방식입니다. 이로 인해 많은 계산이 발생하므로, gesture 이벤트의 빈도(frequency)를 줄이거나, 움직임이 배치될 공간을 제한하는 조건을 추가하는 방식으로 성능을 최적화할 수 있습니다.
Hand Tracking API를 활용한 추가 조작
DragGesture 외에도 Apple Vision Pro에서 새롭게 지원하는 Hand Tracking API를 사용하여, 손가락을 활용한 더욱 정교한 제스처 입력을 구현하는 방식도 고려할 수 있습니다. 이를 통해 사용자는 더 자연스럽고 세밀한 방식으로 AR 객체와 상호작용 할 수 있게 됩니다.
구현의 어려움
Apple Vision Pro는 출시된 지 1년도 채 되지 않아, DSC를 구현하는 과정에서 필요한 여러 기능을 아직 충분히 사용할 수 없는 제약이 있었습니다. 그 중 가장 큰 어려움 중 하나는 카메라 프레임에 접근할 수 없는 문제였습니다.
Apple Vision Pro에서 카메라의 프레임 데이터에 접근하지 못하면서 실시간 위치 추적에 어려움이 발생했습니다. 원래는 카메라로 촬영한 이미지를 기반으로 공간 맵 정보와 비교하여 현재 위치를 파악해야 하지만, 이러한 방식이 불가능했습니다.
이를 해결하기 위해 ARKit의 Image Tracking 기술을 활용하는 방안을 고려했습니다. Image Tracking은 사용자가 보고 있는 화면에서, 미리 등록된 이미지를 실시간으로 추적하여 그 위치를 파악하는 기술입니다.
다음은 ImageTrackingProvider를 ARKitSession에서 실행하는 예시입니다.
<이미지를 인식했을 때 DSC의 에셋을 보여준다>
var vpsTrackingProvider:ImageTrackingProvider? = ImageTrackingProvider(
referenceImages: ReferenceImage.loadReferenceImages(inGroupNamed: "VPSImage", bundle: .main)
)
try await session?.run(
[
vpsTrackingProvider
]
)
이후, 추적된 이미지를 받아 처리하는 메서드를 실행합니다.
.task {
await processVPSTrackingUpdates()
}
func processVPSTrackingUpdates() async {
if let provider = vpsTrackingProvider {
for await update in provider.anchorUpdates {
showAssets(with: update.anchor)
}
}
}
이 방식은 카메라 이미지에 직접 접근하지 않더라도, Image Tracking을 통해 공간을 추측하고 VPS 기술의 대안적인 방법이 되었습니다. 이를 통해 DSC의 AR 에셋을 사용자의 현재 위치에 맞춰 정확하게 배치할 수 있으며 내비게이션과 위치 추적 기능을 효과적으로 제공할 수 있습니다.
전시회 활용
DEEP.FINE은 visionOS 개발 인사이트를 바탕으로, DSC로 생성한 Asset들을 Apple Vision Pro 앱에서 구현할 준비를 마쳤습니다. 이 기술은 DEEP.FINE이 참여하는 다양한 전시회에서 공개하였습니다.
MWC 2024 바르셀로나
MWC 2024 바르셀로나에서는 각 테마별로 다양한 Asset을 증강하고, 동영상 Entity와 Spatial Audio(공간 음향) 기능을 결합해 DSC 서비스에 대한 몰입도 높은 AR 경험을 제공하는 앱을 개발했습니다. 이 앱은 관람객이 전시회 팜플렛을 인식하면, AR로 4가지 테마 중 하나를 선택할 수 있는 인터페이스가 나타납니다.
관람객이 전시회 팜플렛을 인식시키면 4가지 테마를 선택할 수 있습니다.
테마를 선택하면 해당 테마에 맞는 배경과 에셋이 실시간으로 변경되고, DSC의 사용법을 안내하는 동영상이 재생됩니다. 이 과정은 Apple Vision Pro의 고해상도 디스플레이와 여러 대의 카메라 및 센서를 통해 정교한 증강 현실 경험을 제공합니다. 관람객의 위치와 동작에 맞춰 콘텐츠가 자연스럽게 배치되며, AR 공간에서의 상호작용이 더욱 강화됩니다.
이를 통해 DEEP.FINE은 전시회 내에서 직원들의 별도 설명 없이도 관람객이 스스로 DSC 서비스를 이해하고 체험할 수 있도록, 자율적인 학습과 경험 기반 상호작용을 극대화했습니다.
2024 World IT Show
2024 World IT Show에서는 이전에 선보인 앱을 발전시켜 Custom Gesture 기능을 추가했습니다. 관람객이 손바닥을 펼치면 해당 제스처를 인식해 손 위에 Asset이 증강되며, 주먹을 쥐는 동작으로 Asset을 제거할 수 있는 직관적인 인터랙션을 구현했습니다.
이를 통해 관람객은 더욱 몰입감 있는 경험을 하게 되었고, 복잡한 기기 조작 없이 자연스러운 제스처만으로 다양한 3D Asset을 제어할 수 있게 되었습니다.
Hannover Messe 2024
Hannover Messe 2024에서는 각 Asset의 부품을 하나하나 분해하여 보여주는 기능을 갖춘 앱을 개발했습니다.
이 앱을 통해 관람객은 기계나 차량뿐만 아니라, 다양한 Asset의 내부 구조와 설계 과정을 학습하고 연구할 수 있습니다. 이는 산업용 장비나 복잡한 시스템을 이해하는 데 매우 유용한 도구로 활용될 수 있으며, DEEP.FINE의 기술이 학습 및 연구용으로도 사용될 수 있음을 강조할 수 있었습니다.
마치며
Apple Vision Pro는 이제 막 시장에 출시된 만큼, 앞으로 더 많은 발전 가능성을 품고 있습니다. Apple은 지속적으로 업데이트를 제공하고 있으며, 개발자들을 위한 새로운 도구와 기술도 계속해서 공개하고 있습니다.
특히 곧 발표될 visionOS 2.0에서 카메라 프레임에 대한 공식 지원이 이루어진다면, DSC의 VPS기술을 더욱 강화하는 데 큰 도움이 될 것입니다.
DEEP.FINE은 더 많은 사용자들이 XR 경험을 쉽게 접할 수 있도록 다양한 실험과 연구를 이어가고 있습니다. 딥파인의 목표는 단순한 기술 개발을 넘어, 더 직관적이고 몰입감 있는 XR 경험을 제공하는 것입니다. 이는 산업용 솔루션부터 교육에 이르기까지 폭넓은 분야까지 폭넓게 활용될 것으로 기대하고 있습니다.
앞으로도 DEEP.FINE은 사용자들이 더욱 편리하고 흥미로운 XR 경험을 할 수 있도록 끊임없이 노력할 것입니다. 기술을 통해 더 나은 미래를 함께 만들어가도록 노력하겠습니다.
감사합니다.