Unity의 PolySpatial은 Apple Vision Pro용 Mixed Reality(MR) 앱 개발에 특화된 솔루션으로, 기존 VR/Windowed 앱과는 다른 접근 방식을 사용합니다. 🍎
VisionOS는 여러 앱을 동시에 표시하는 'Shared Space'와 몰입형 경험을 제공하는 'Immersive Space'를 지원하며, MR 앱은 이 두 공간을 런타임 중 전환할 수 있습니다. ↔️
PolySpatial은 Unity 엔진과 Apple의 RealityKit 사이에서 Unity의 렌더링 정보(머티리얼, 쉐이더 등)를 RealityKit이 이해할 수 있는 형식으로 변환하고, VisionOS의 입력 및 월드 데이터를 Unity로 전달하는 핵심 브릿지 역할을 합니다. 🌉
RealityKit이 렌더링을 담당하므로, Unity의 표준 머티리얼은 RealityKit의 PBR(물리 기반 렌더링) 모델로 자동 변환됩니다. 단, 커스텀 HLSL/ShaderLab 쉐이더는 지원되지 않으며, Shader Graph를 사용해야 MaterialX로 변환되어 호환됩니다. 🎨
Vision Pro 앱 개발을 위해서는 특정 Unity 버전, Xcode, Apple Silicon Mac이 필수이며, Unity Hub에서 VisionOS 모듈을 설치하고 XR Plugin Management에서 VisionOS 및 PolySpatial 패키지를 활성화해야 합니다. 🛠️
PolySpatial 기반 MR 앱은 'Bounded' 모드(Shared Space에서 고정 볼륨 내 콘텐츠 표시)와 'Unbounded' 모드(Immersive Space에서 ARKit 기능 활용 및 주변 환경에 콘텐츠 배치)로 나뉩니다. 📦
Volume Camera 컴포넌트와 Volume Window Configuration 설정은 MR 앱의 공간 모드를 정의하고 콘텐츠가 표시될 볼륨의 크기 및 위치를 제어하는 데 필수적입니다. 📸
Unity Input System 패키지를 통해 상호작용을 구현하며, 간단한 터치에는 Enhanced Spatial Pointer Support를, 복잡한 제스처에는 Spatial Pointer Device와 Input Action Asset을 활용할 수 있습니다. 👋
Unbounded 모드에서는 ARKit의 평면 감지(Plane Detection) 및 핸드 트래킹과 같은 기능을 활용하여 현실 세계와 상호작용하는 몰입형 경험을 구현할 수 있습니다. 🌍
실제 빌드 없이 Unity 에디터에서 작성한 콘텐츠를 Vision Pro 디바이스나 시뮬레이터에서 실시간으로 확인하고 수정할 수 있는 'Play to Device' 기능은 개발 효율성을 크게 높여줍니다. 🚀
Line Renderer, Terrain, Blend Shapes, 포스트 프로세싱 등 일부 기능은 아직 지원되지 않지만, Unity 개발팀에서 적극적으로 개선 중이며, 입력 관련 정보 혼란도 정리될 예정입니다. 🚧
Bounded 모드에서는 콘텐츠를 볼륨 카메라의 중앙 아래 앞에 정렬하는 것이 좋으며, PolySpatial 패키지는 패키지 매니저에서 'Add package by name' 방식으로 수동 업데이트해야 합니다. 💡