- 2024
- Works
- AE - Research
Case Study: Developing a Mixed Reality App for Apple Vision Pro
서론
본 케이스 스터디는 Apple Vision Pro를 활용하여 현실 공간에서 가상 공간으로 이동하고 미디어를 감상하는 혼합 현실(Mixed Reality) 앱 개발 과정과 시연 결과를 심층 분석합니다. Unity 엔진을 기반으로 개발된 이 앱은 AR 마커 인식을 통해 가상 환경을 띄우고, 사용자 상호작용을 통해 몰입감 있는 콘텐츠 경험을 제공합니다. 이를 통해 Vision Pro 앱 개발의 가능성과 한계, 그리고 개발 과정에서 직면한 기술적 문제점 및 해결 방안을 제시합니다. 특히, 시력이 좋지 않은 사용자를 위한 고려 사항도 함께 다룹니다.
연구 목적
본 연구는 다음과 같은 목적을 가지고 진행되었습니다.
1. Vision Pro 앱 개발 가능성 탐색: Vision Pro의 혼합 현실 기능을 활용하여 사용자에게 새로운 경험을 제공하는 앱 개발 가능성을 탐색합니다.
2. 기술적 문제점 및 해결 방안 제시: 개발 과정에서 발생한 기술적 문제점을 분석하고, 이를 해결하기 위한 방안을 제시합니다.
3. Unity 엔진 기반 개발 환경 평가: Unity 엔진을 활용한 Vision Pro 앱 개발 환경의 장단점을 평가하고, 향후 개발 방향을 제시합니다.
4. 접근성 고려사항 분석: 시력이 좋지 않은 사용자를 위한 접근성 고려 사항을 분석하고, 개선 방안을 모색합니다.
개발 환경 및 앱 개요
• 개발 엔진: Unity 2022.3.22f1
• 개발 방식: Mixed Reality (Immersive) – 무제한 모드
• 핵심 기능
a. AR 마커 인식을 통한 가상 환경 전환: 이미지 방식의 AR 마커를 Vision Pro가 인식하면 가상의 슈박스가 나타나고, 사용자가 이를 터치하면 가상 환경으로 전환됩니다.
b. 가상 환경 내 이미지 및 사진 콘텐츠 감상: 가상 환경에는 사용자가 미리 준비한 이미지와 사진들이 전시되어 있으며, 사용자는 자유롭게 감상할 수 있습니다.
c. 손동작 기반 상호작용: 사용자는 손동작을 통해 가상 환경 내 콘텐츠를 선택하고 조작할 수 있습니다.
개발 과정 및 기술적 문제점
1. RealityKit 및 PolySpatial 제약: Unity의 PolySpatial 기술은 Unity 프로젝트를 Apple의 RealityKit 프레임워크에 호환되도록 변환하지만, 이 과정에서 Unity의 모든 기능이 지원되지 않는 문제가 발생했습니다. 특히, 오디오, 머티리얼, 파티클 시스템 등의 기능에서 제약이 있었습니다. 예를 들어, Unity에서 쉽게 구현 가능했던 복잡한 시각 효과나 공간 오디오를 Vision Pro 앱에서 구현하는 데 어려움을 겪었습니다.
2. 오디오 문제: 공간 오디오를 지원하지 않아 몰입감 있는 오디오 경험을 제공하는 데 제약이 있었고, 특정 상황에서는 소리가 나오지 않는 버그가 발생했습니다. 특히, 배경 음악이나 효과음이 제대로 출력되지 않는 경우가 있어 사용자 경험을 저해했습니다.
3. 시각 효과 제한: Vision Pro의 혼합 현실 환경에서는 ShaderGraph를 사용하여 머티리얼을 제작해야 하지만, 모든 렌더링 효과가 제대로 작동하지 않았습니다. 특히, Sprite나 TextMeshPro와 함께 사용되는 투명도 관련 렌더링에서 문제가 발생하여, UI 요소나 2D 그래픽의 표현에 제약이 있었습니다.
4. 파티클 시스템 제약: Unity의 파티클 시스템 기능을 Vision Pro 앱에서 활용하는 데 어려움을 겪었습니다. 단순한 파티클 효과 외에는 구현이 어려웠으며, Apple의 RealityComposerPro에서 제공하는 파티클 시스템 기능도 제한적이었습니다. 이로 인해 화려한 시각 효과를 구현하는 데 제약이 있었습니다.
5. 스카이박스 구현 어려움: Vision Pro는 현실과 가상 환경을 자연스럽게 연결하는 스카이박스 기능을 제공하지만, PolySpatial에서는 이를 위한 API가 제공되지 않아 개발에 어려움을 겪었습니다. 결국 표면이 뒤집힌 구체를 이용하여 스카이박스를 억지로 구현해야 했습니다.
6. 상호작용 제한: Apple의 개인 정보 보호 정책으로 인해 손동작 및 시선 추적 데이터에 대한 접근이 제한되어, 사용자 상호작용 기능 구현에 제약이 있었습니다. 현재는 ‘꼬집기’ 제스처만 지원되며, 손의 뼈대 정보 등 세밀한 정보는 활용할 수 없어 다양한 상호작용 방식을 구현하기 어려웠습니다.
7. UI 제약: Unity의 Canvas 기반 UI 시스템을 Vision Pro 앱에서 사용하는 데 제약이 있었습니다. 마스크 기능이 불안정하고, 상호작용 구현도 어려웠습니다. SwiftUI를 호출하여 사용하는 방법도 있지만, 테스트 결과 역시 제약이 많을 것으로 예상되었습니다. 이는 사용자에게 정보를 제공하고 조작을 돕는 UI/UX 설계에 제약을 가져왔습니다.
8. ARKit 성능: ARKit은 Vision Pro에서 이미지 추적 기능을 지원하여 AR 마커를 활용한 기능 구현이 가능했습니다. 하지만, VisionOS 환경에서는 연속 추적 기능이 제한되어 있어, 마커 인식이 원활하지 않거나 오작동이 발생하는 문제가 있었습니다. 이로 인해 사용자가 특정 위치에서만 콘텐츠를 이용해야 하는 불편함이 발생할 수 있습니다.
9. 시력 교정 도구 사용의 어려움: Vision Pro는 시력 교정 렌즈를 탈부착할 수 있도록 설계되었지만, 국내에서는 아직 렌즈 인서트를 구매할 수 없어 시력이 좋지 않은 사용자는 불편을 겪을 수 있습니다. 안경을 착용하고 Vision Pro를 사용하는 것도 불편하며, 시력 교정 없이 사용하는 것은 어렵습니다.
해결 방안 및 시사점
1. RealityKit 및 PolySpatial 제약 극복: RealityKit에서 지원하는 기능을 정확히 파악하고, 개발 문서를 꼼꼼히 숙지하여 개발해야 합니다. Xcode 및 RealityComposerPro를 함께 활용하는 방법도 고려해 볼 수 있습니다. 또한, Unity에서 RealityKit 기능 지원을 확대하기 위한 노력이 필요합니다.
2. 오디오 문제 해결: VisionOS 오디오 시스템 관련 정보를 추가적으로 수집하고, 문제 해결을 위한 다양한 방법을 시도해야 합니다. 예를 들어, 오디오 출력 방식을 변경하거나, 외부 오디오 시스템과의 연동을 고려해 볼 수 있습니다.
3. 시각 효과 개선: ShaderGraph를 최대한 활용하여 Vision Pro 환경에 최적화된 머티리얼을 제작해야 합니다. RealityKit에서 지원하는 머티리얼 및 셰이더에 대한 연구도 필요합니다. 또한, 시각 효과 구현에 제약이 있는 경우, 대체 방안을 마련하거나 효과를 단순화하는 방향으로 개발해야 합니다.
4. 파티클 시스템 대안 마련: RealityKit 제약 내에서 구현 가능한 파티클 효과를 연구하거나, 외부 파티클 시스템과의 연동 가능성을 검토해야 합니다. 혹은 파티클 시스템을 사용하지 않고 다른 시각 효과를 활용하는 방안을 고려해야 합니다.
5. 스카이박스 구현 개선: VisionOS 업데이트를 통해 관련 API가 추가되기를 기대하거나, 외부 솔루션을 활용하는 방법을 고려해야 합니다.
6. 상호작용 확장: VisionOS 업데이트를 통해 더 다양한 상호작용 기능이 지원되기를 기대하거나, 외부 센서를 활용하는 방안을 모색해야 합니다. 예를 들어, Leap Motion 센서를 이용하여 손동작 인식 기능을 강화할 수 있습니다.
7. UI 개선: SwiftUI를 활용하여 Vision Pro 환경에 최적화된 UI를 구현하거나, VisionOS UI 시스템 업데이트를 통해 Unity Canvas 기반 UI의 문제점이 해결되기를 기다려야 합니다. 또한, 시력이 좋지 않은 사용자를 위해 글자 크기 조절, 고대비 색상 테마 등 접근성 기능을 강화해야 합니다.
8. 시력 교정 도구 지원 개선: 국내에서도 렌즈 인서트를 빠르게 구매할 수 있도록 지원하거나, 안경 착용 상태에서도 편안하게 Vision Pro를 사용할 수 있는 방안을 모색해야 합니다. 예를 들어, 안경 프레임 디자인을 개선하거나, Vision Pro 내부 공간을 넓혀 안경 착용 시 불편함을 줄이는 방법을 고려할 수 있습니다.
결론
본 케이스 스터디는 Apple Vision Pro를 활용한 혼합 현실 앱 개발 과정에서 발생하는 기술적 문제점과 해결 방안을 제시하며, Unity 엔진 기반 개발 환경의 장단점을 분석했습니다. Vision Pro는 혁신적인 혼합 현실 경험을 제공하지만, 개발 과정에서 여러 제약과 한계에 직면할 수 있습니다. 특히, 시력이 좋지 않은 사용자를 위한 접근성 개선이 시급합니다.
향후 VisionOS 업데이트 및 개발 도구 개선을 통해 개발 환경이 더욱 발전할 것으로 기대되며, 개발자들은 RealityKit 및 관련 기술에 대한 깊이 있는 이해를 바탕으로 창의적인 앱 개발을 이어나가야 할 것입니다. 또한, 사용자의 다양한 요구를 충족시키기 위해 접근성을 고려한 개발이 중요하며, 이를 위해 Apple과 개발자 커뮤니티의 지속적인 노력이 필요합니다.
글: 설정민(Rebel9 소프트웨어 엔지니어/dEX lab 소장)
Case Study: Developing a Mixed Reality App for Apple Vision Pro – Bridging the Gap Between Reality and Virtuality
Abstract
This case study delves into the development and demonstration of a mixed reality (MR) application for Apple Vision Pro, designed to seamlessly transition users from real-world environments to immersive virtual spaces for media consumption. Built upon the Unity game engine, the app utilizes AR marker recognition to trigger virtual environments and incorporates hand gesture-based interactions for an engaging user experience. The study explores the potential and limitations of Vision Pro app development, addressing technical challenges encountered during the development process and proposing viable solutions. Furthermore, it examines accessibility considerations for users with visual impairments.
Introduction
This research aims to:
1. Explore the Potential of Vision Pro App Development: Investigate the possibilities of creating novel user experiences by leveraging the mixed reality capabilities of Vision Pro.
2. Identify and Address Technical Challenges: Analyze technical issues encountered during the development process and propose effective solutions.
3. Evaluate the Unity Engine-Based Development Environment: Assess the strengths and weaknesses of using Unity for Vision Pro app development and suggest future directions.
4. Analyze Accessibility Considerations: Examine accessibility concerns for users with visual impairments and explore potential improvements.
Development Environment and App Overview
Development Engine
Unity 2022.3.22f1
Development Mode
Mixed Reality (Immersive) – Unlimited
Core Features:
AR Marker-Triggered Virtual Environment Transition: Image-based AR markers recognized by Vision Pro trigger the appearance of a virtual shoebox. User interaction with the shoebox initiates a transition to the virtual environment.
Image and Photo Content Viewing in Virtual Environment: The virtual environment showcases a curated collection of images and photos for users to explore and enjoy.
Hand Gesture-Based Interaction: Users can navigate and manipulate content within the virtual environment using intuitive hand gestures.
Development Process and Technical Challenges
1. RealityKit and PolySpatial Limitations: Unity’s PolySpatial technology facilitates the conversion of Unity projects to Apple’s RealityKit framework. However, this process results in limited support for some Unity features, particularly audio, materials, and particle systems. Complex visual effects and spatial audio, easily achievable in Unity, pose challenges within the Vision Pro environment.
2. Audio Issues: The lack of spatial audio support hinders immersive audio experiences. Additionally, bugs causing audio playback failures in certain scenarios negatively impact user experience.
3. Visual Effects Limitations: Vision Pro’s mixed reality environment necessitates the use of ShaderGraph for material creation. However, not all rendering effects function as expected, especially transparency-related rendering when used in conjunction with Sprite or TextMeshPro, limiting UI element and 2D graphic representation.
4. Particle System Limitations: Integrating Unity’s particle system functionality into Vision Pro apps proves challenging. Complex particle effects are difficult to implement, and Apple’s RealityComposerPro offers limited particle system capabilities, restricting the creation of visually appealing effects.
5. Skybox Implementation Challenges: Vision Pro’s built-in skybox feature seamlessly blends real and virtual environments. However, the absence of a dedicated API in PolySpatial complicates skybox implementation, requiring workarounds like using inverted spheres.
6. Interaction Limitations: Apple’s privacy policy restricts access to hand tracking and eye-tracking data, limiting user interaction capabilities. Currently, only the “pinch” gesture is supported, hindering the implementation of diverse interaction methods due to the unavailability of detailed hand skeletal information.
7. UI Limitations: Unity’s Canvas-based UI system faces challenges in the Vision Pro environment, with unstable mask functionality and interaction difficulties. While SwiftUI integration is possible, it also presents limitations, impacting UI/UX design for information display and user manipulation.
8. ARKit Performance: ARKit enables image tracking for AR marker utilization in Vision Pro. However, continuous tracking limitations in VisionOS can lead to inaccurate marker recognition or malfunctions, potentially restricting user movement and content interaction.
9. Accessibility Challenges for Visually Impaired Users: The unavailability of prescription lens inserts in certain regions poses challenges for users with visual impairments. Wearing glasses while using Vision Pro can be uncomfortable, and using the device without vision correction may be difficult.
Solutions and Implications
1. Overcoming RealityKit and PolySpatial Limitations: Thorough understanding of supported RealityKit features and meticulous adherence to development documentation are crucial. Leveraging Xcode and RealityComposerPro can offer alternative solutions. Additionally, advocating for expanded RealityKit support within Unity is essential.
2. Resolving Audio Issues: Further investigation into VisionOS audio systems and exploration of alternative audio output methods or external audio system integration can address audio playback issues.
3. Enhancing Visual Effects: Maximizing ShaderGraph utilization and conducting research on RealityKit-compatible materials and shaders can improve visual effects. Exploring alternative visual elements or simplifying effects can mitigate limitations.
4. Exploring Particle System Alternatives: Investigating particle effects achievable within RealityKit constraints or integrating external particle systems can enhance visual appeal.
5. Improving Skybox Implementation: Anticipating API additions in future VisionOS updates or exploring third-party solutions can streamline skybox implementation.
6. Expanding Interaction Options: Advocating for expanded interaction capabilities in future VisionOS updates or exploring external sensor integration, such as Leap Motion, can enhance user interaction.
7. Enhancing UI: Investigating SwiftUI integration or anticipating VisionOS UI system updates can improve UI/UX design. Implementing accessibility features like font size adjustment and high contrast themes can cater to users with visual impairments.
8. Optimizing ARKit Performance: Expecting ARKit performance enhancements in future VisionOS updates or exploring alternative spatial tracking technologies can address tracking issues.
9. Improving Accessibility for Visually Impaired Users: Facilitating access to prescription lens inserts or developing alternative solutions for comfortable Vision Pro usage with glasses is crucial.
Conclusion
This case study elucidates the technical challenges and potential solutions encountered during the development of a mixed reality app for Apple Vision Pro using Unity. While Vision Pro offers groundbreaking mixed reality experiences, developers may face limitations and constraints.
Future VisionOS updates and development tool enhancements are expected to improve the development environment. Developers should deepen their understanding of RealityKit and related technologies to create innovative applications. Moreover, prioritizing accessibility considerations and collaborating with Apple and the developer community will ensure a more inclusive and user-friendly experience for all Vision Pro users.
Seol Jungmin (Rebel9 Software Engineer /dEX lab Director)