좌표계
혼합 현실 앱의 핵심은 실제 개체처럼 보이고 소리가 나는 홀로그램 을 월드에 배치합니다. 여기에는 세계가 물리적 공간이든, 사용자가 만든 가상 영역이든 관계없이 세계에서 의미 있는 장소에서 홀로그램을 정확하게 배치하고 방향을 지정하는 작업이 포함됩니다. Windows는 기하 도형을 표현하기 위한 다양한 실제 좌표계를 제공합니다. 이를 공간 좌표계라고 합니다. 이러한 시스템을 사용하여 홀로그램 위치, 방향, 응시 광선 또는 손 위치를 추론할 수 있습니다.
디바이스 지원
기능 | HoloLens(1세대) | HoloLens 2 | 몰입형 헤드셋 |
고정된 참조 프레임 | ✔️ | ✔️ | ✔️ |
연결된 참조 프레임 | ✔️ | ✔️ | ✔️ |
참조의 스테이지 프레임 | 아직 지원되지 않음 | 아직 지원되지 않음 | ✔️ |
Spatial Anchors | ✔️ | ✔️ | ✔️ |
공간 매핑 | ✔️ | ✔️ | ❌ |
장면 이해 | ❌ | ✔️ | ❌ |
혼합 현실 환경 크기 조정
헤드셋 방향을 사용하는 360도 비디오 뷰어부터 공간 매핑 및 공간 앵커를 사용하는 전체 세계 규모의 앱 및 게임에 이르기까지 광범위한 사용자 환경을 위해 혼합 현실 앱을 디자인할 수 있습니다.
경험 크기 조정 | 요구 사항 | 예제 환경 |
---|---|---|
방향 전용 | 헤드셋 방향 (중력 맞춤) | 360° 비디오 뷰어 |
좌석 크기 조정 | 위와 0 위치를 기준으로 하는 헤드셋 위치 | 레이싱 게임 또는 우주 시뮬레이터 |
스탠딩 스케일 | 위 플러스 스테이지 플로어 원점 | 당신이 오리와 장소에서 회피 액션 게임 |
방 크기 조정 | 위 더하기 단계 경계 다각형 | 퍼즐을 돌아 다니는 퍼즐 게임 |
세계적 규모 | 공간 앵커 (일반적으로 공간 매핑) | RoboRaid와 같은 실제 벽에서 오는 적과 게임 |
위의 경험은 "중첩 인형"모델을 따릅니다. Windows Mixed Reality 주요 디자인 원칙은 다음과 같습니다. 지정된 헤드셋은 대상 환경 크기 조정 및 모든 더 작은 크기 조정을 위해 빌드된 앱을 지원합니다.
6DOF 추적 | 층 정의 | 360° 추적 | 정의된 경계 | Spatial Anchors | 최대 환경 |
---|---|---|---|---|---|
예 | - | - | - | - | 방향 전용 |
예 | 예 | - | - | - | 앉아 |
예 | 예 | 예 | - | - | 스탠딩 - 앞으로 |
예 | 예 | 예 | 예 | - | 스탠딩 - 360° |
예 | 예 | 예 | 예 | 예 | 룸 |
예 | 예 | 예 | 예 | 예 | World |
참조의 스테이지 프레임은 HoloLens에서 아직 지원되지 않습니다. HoloLens의 룸 스케일 앱은 현재 공간 매핑 또는 장면 이해를 사용하여 사용자의 바닥과 벽을 찾아야 합니다.
공간 좌표계
모든 3D 그래픽 애플리케이션은 카티시안 좌표계 를 사용하여 가상 개체의 위치와 방향을 추론합니다. 이러한 좌표계는 세 개의 수직 축인 X, Y 및 Z를 설정합니다. 장면에 추가하는 각 개체는 좌표계에서 XYZ 위치를 갖습니다. Windows는 실제 세계에서 실제 의미를 갖는 좌표계를 미터 단위로 표현하는 공간 좌표계라고 합니다. 즉, X, Y 또는 Z 축에 두 단위를 배치한 개체는 혼합 현실에서 렌더링될 때 서로 2미터 떨어져 표시됩니다. 이를 알고 있으면 실제 규모로 개체와 환경을 쉽게 렌더링할 수 있습니다.
일반적으로 카티시안 좌표계는 손 위치를 사용하여 XYZ 축의 방향을 나타낼 수 있기 때문에 "오른손잡이" 또는 "왼손"이라고 합니다. 두 좌표계에서 양수 X축은 오른쪽을 가리키고 양수 Y축은 위쪽을 가리킵니다. 두 좌표계의 차이점은 오른손 좌표계에서 Z 축이 사용자를 가리키는 반면, 왼손 좌표계에서는 Z 축이 사용자를 가리킨 다는 것입니다.
Windows의 공간 좌표계(따라서 Windows Mixed Reality)는 항상 오른손잡이입니다.
[! 참고 사항]
- Unity 및 Unreal은 왼손 좌표계를 사용합니다.
- 왼손 및 오른손 좌표가 가장 일반적인 시스템이지만 3D 소프트웨어에 사용되는 다른 좌표 시스템이 있습니다. 예를 들어 3D 모델링 애플리케이션에서 Y축이 뷰어를 향하거나 멀리 가리키고 Z축이 위쪽을 가리키는 좌표계를 사용하는 것은 드문 일이 아닙니다.
방향 전용 또는 앉은 크기 환경 빌드
홀로그램 렌더링 의 핵심은 사용자가 이동할 때마다 앱의 홀로그램 보기를 예측된 헤드 모션과 일치하도록 변경하는 것입니다. 고정된 참조 프레임을 사용하여 사용자의 머리 위치 및 머리 방향 변경을 존중하는 앉은 크기 환경을 빌드할 수 있습니다.
일부 콘텐츠는 헤드 위치 업데이트를 무시해야 하며, 선택한 제목과 사용자와의 거리를 항상 고정해야 합니다. 기본 예는 360도 비디오입니다. 비디오는 단일 고정된 관점에서 캡처되기 때문에 사용자가 주위를 둘러보면서 보기 방향이 변경되더라도 보기 위치가 콘텐츠에 따라 이동하는 환상을 망칠 수 있습니다. 연결된 참조 프레임을 사용하여 이러한 방향 전용 환경을 빌드할 수 있습니다.
고정된 참조 프레임
고정된 참조 프레임에서 제공하는 좌표계는 사용자 머리 위치의 변화를 존중하면서 월드에 따라 사용자 가까이에 있는 개체의 위치를 최대한 안정적으로 유지하기 위해 작동합니다.
Unity와 같은 게임 엔진의 좌석 크기 환경의 경우 고정된 참조 프레임이 엔진의 "세계 원점"을 정의하는 것입니다. 특정 세계 좌표에 배치되는 개체는 참조의 고정 프레임을 사용하여 동일한 좌표를 사용하여 실제 세계에서 해당 위치를 정의합니다. 사용자가 돌아다니는 동안에도 전 세계에 계속 배치되는 콘텐츠를 세계로 잠긴 콘텐츠라고 합니다.
앱은 일반적으로 시작 시 하나의 고정된 참조 프레임을 만들고 앱의 수명 동안 해당 좌표계를 사용합니다. Unity의 앱 개발자는 사용자의 초기 헤드 위치 및 방향에 있는 원본을 기반으로 콘텐츠 배치를 시작할 수 있습니다. 사용자가 새 위치로 이동하여 좌석 크기 환경을 계속 진행하려는 경우 해당 위치에서 월드 원점이 더 최근에 발생할 수 있습니다.
시간이 지남에 따라 시스템이 사용자 환경에 대해 자세히 알아보면 실제 세계의 다양한 지점 간의 거리가 이전에 생각한 시스템보다 짧거나 길다는 것을 확인할 수 있습니다. 사용자가 약 5미터 너비의 영역을 벗어나 방황하는 HoloLens의 앱에 대한 고정된 참조 프레임에서 홀로그램을 렌더링하는 경우 앱은 해당 홀로그램의 관찰된 위치에서 드리프트를 관찰할 수 있습니다. 환경에 사용자가 5미터를 초과하여 방황하는 경우 아래 설명된 대로 홀로그램을 안정적으로 유지하기 위해 다른 기술이 필요한 세계적 규모의 환경을 빌드하는 것입니다.
연결된 참조 프레임
연결된 참조 프레임은 사용자가 탐색할 때 이동하며, 앱에서 프레임을 처음 만들 때 고정된 제목이 정의됩니다. 이렇게 하면 사용자가 해당 참조 프레임 내에 배치된 콘텐츠를 편안하게 살펴볼 수 있습니다. 이 사용자 상대 방식으로 렌더링된 콘텐츠를 본문 잠금 콘텐츠라고 합니다.
헤드셋이 전 세계 어디에 있는지 파악할 수 없는 경우 연결된 참조 프레임은 홀로그램을 렌더링하는 데 사용할 수 있는 유일한 좌표계를 제공합니다. 따라서 대체 UI를 표시하여 디바이스가 전 세계에서 찾을 수 없다는 것을 사용자에게 알리는 데 이상적입니다. 앉은 크기 이상의 앱에는 사용자가 다시 진행하는 데 도움이 되는 방향 전용 대체가 포함되어야 하며 Mixed Reality 홈에 표시된 것과 유사한 UI가 있어야 합니다.
스탠딩 스케일 또는 룸 스케일링 환경 구축
몰입형 헤드셋에 앉은 스케일을 넘어 서 있는 규모의 환경을 구축하려면 참조의 스테이지 프레임을 사용할 수 있습니다.
사용자가 미리 정의한 5미터 경계 내에서 걸어다닐 수 있도록 방 규모 환경을 제공하기 위해 스테이지 경계에 대한 검사 수 있습니다.
참조의 스테이지 프레임
몰입형 헤드셋을 처음 설정할 때 사용자는 혼합 현실을 경험할 방을 나타내는 스테이지를 정의합니다. 스테이지는 사용자가 선택한 바닥 위치와 디바이스를 사용하려는 정방향 방향을 중심으로 하는 공간 좌표계인 스테이지 원점 을 최소한으로 정의합니다. 이 스테이지 좌표계의 콘텐츠를 Y=0 평면에 배치하면 사용자가 서 있을 때 홀로그램이 바닥에 편안하게 표시되어 사용자에게 서 있는 규모의 환경을 제공할 수 있습니다.
스테이지 경계
사용자는 필요에 따라 혼합 현실에서 이동하기 위해 지운 방 내 영역인 스테이지 경계를 정의할 수도 있습니다. 이 경우 앱은 이러한 범위를 사용하여 사용자가 연결할 수 있는 위치에 홀로그램이 항상 배치되도록 하여 방 크기 조정 환경을 빌드할 수 있습니다.
참조의 스테이지 프레임은 바닥 상대 콘텐츠를 배치하는 단일 고정 좌표계를 제공하기 때문에 가상 현실 헤드셋용으로 개발된 스탠딩 스케일 및 룸 스케일 애플리케이션을 포팅하는 가장 쉬운 경로입니다. 그러나 이러한 VR 플랫폼과 마찬가지로 단일 좌표계는 약 5미터(16피트) 직경의 콘텐츠만 안정화할 수 있으며, 레버 암 효과로 인해 중앙에서 멀리 떨어진 콘텐츠가 시스템이 조정함에 따라 눈에 띄게 움직일 수 있습니다. 5미터를 초과하려면 공간 앵커가 필요합니다.
세계적 규모의 환경 구축
HoloLens를 사용하면 사용자가 5미터를 초과하여 방황할 수 있는 진정한 세계적 규모의 환경을 사용할 수 있습니다. 세계적 규모의 앱을 빌드하려면 회의실 규모 환경에 사용되는 기술을 넘어서는 새로운 기술이 필요합니다.
단일 강성 좌표계를 5미터 이상으로 사용할 수 없는 이유
오늘날 게임, 데이터 시각화 앱 또는 가상 현실 앱을 작성할 때 일반적인 방법은 다른 모든 좌표가 안정적으로 다시 매핑할 수 있는 하나의 절대 세계 좌표계를 설정하는 것입니다. 해당 환경에서는 항상 해당 세계의 두 개체 간의 관계를 정의하는 안정적인 변환을 찾을 수 있습니다. 이러한 개체를 이동하지 않은 경우 상대 변환은 항상 동일하게 유지됩니다. 이러한 종류의 전역 좌표계는 모든 기하 도형을 미리 알고 있는 순수 가상 세계를 렌더링할 때 잘 작동합니다. 오늘날 방 규모 VR 앱은 일반적으로 바닥에 원점이 있는 이런 종류의 절대실 규모 좌표계를 설정합니다.
반면 HoloLens와 같은 테더링되지 않은 혼합 현실 디바이스는 전 세계에 대한 동적 센서 기반의 이해를 가지고 있으며, 건물 전체 층을 가로질러 여러 미터를 걸을 때 사용자 주변 환경의 시간에 따른 지식을 지속적으로 조정합니다. 세계적 규모의 환경에서 모든 홀로그램을 단일 경직된 좌표계에 배치하면, 그 홀로그램은 세계나 서로를 기반으로 시간이 지남에 따라 반드시 표류할 것입니다.
예를 들어, 헤드셋은 현재 전 세계 두 위치가 4미터 떨어져 있다고 생각한 다음, 나중에 그 이해를 구체화하여 위치가 실제로 3.9미터 떨어져 있다는 것을 알게 될 수 있습니다. 그 홀로그램이 처음에 단일 강성 좌표계에서 4 미터 떨어져 배치된 경우, 그 중 하나는 항상 실제 세계에서 0.1 미터 떨어져 나타납니다.
Spatial Anchors
Windows Mixed Reality 사용자가 홀로그램을 배치한 세계에서 중요한 지점을 표시하는 공간 앵커를 만들 수 있도록 하여 이전 섹션에서 설명한 문제를 해결합니다. 공간 앵커는 시간 경과에 따라 시스템이 추적해야 하는 세계의 중요 지점을 나타냅니다.
디바이스가 세계에 대해 알게 됨에 따라 이러한 공간 앵커는 필요에 따라 서로에 따라 위치를 조정하여 각 앵커가 실제 세계를 기반으로 배치된 위치를 정확하게 유지하도록 할 수 있습니다. 사용자가 홀로그램을 배치하는 위치에 공간 앵커를 배치한 다음, 공간 앵커를 기반으로 홀로그램을 배치하면 사용자가 수십 미터에서 로밍하는 경우에도 홀로그램이 최적의 안정성을 유지할 수 있습니다.
서로에 따라 공간 앵커를 지속적으로 조정하는 것은 공간 앵커의 좌표계와 고정된 참조 프레임 간의 주요 차이점입니다.
참조의 고정 프레임에 배치된 홀로그램은 모두 서로 단단한 관계를 유지합니다. 그러나 사용자가 먼 거리를 걸을 때 해당 프레임의 좌표계는 사용자 옆에 있는 홀로그램이 안정적으로 표시되도록 세계를 기반으로 표류할 수 있습니다.
또한 참조의 스테이지 프레임에 배치된 홀로그램은 서로의 엄격한 관계를 유지합니다. 고정 프레임과 달리 스테이지 프레임은 정의된 물리적 원점 기반에서 항상 고정된 상태로 유지됩니다. 그러나 5미터 경계를 넘어 스테이지의 좌표계에 렌더링된 콘텐츠는 사용자가 해당 경계 내에 서 있는 동안에만 안정적으로 표시됩니다.
하나의 공간 앵커를 사용하여 배치된 홀로그램은 다른 공간 앵커를 사용하여 배치된 홀로그램에 따라 드리프트할 수 있습니다. 예를 들어 한 앵커가 왼쪽을 조정해야 하고 다른 앵커가 오른쪽을 조정해야 하는 경우에도 Windows는 각 공간 앵커의 위치에 대한 이해를 향상시킬 수 있습니다.
항상 사용자 근처의 안정성에 최적화되는 고정된 참조 프레임과 달리 참조 및 공간 앵커의 스테이지 프레임은 원본 근처의 안정성을 보장합니다. 이것은 그 홀로그램이 시간이 지남에 따라 정확하게 제자리에 머무르는 것을 돕습니다, 그러나 또한 좌표계의 원점에서 너무 멀리 렌더링된 홀로그램이 점점 더 가혹한 레버 암 효력을 경험할 것이라는 것을 의미합니다. 이는 스테이지 또는 앵커의 위치 및 방향에 대한 작은 조정이 해당 앵커와의 거리에 비례하여 확대되기 때문입니다.
엄지 손가락의 좋은 규칙은 먼 공간 앵커의 좌표계를 기반으로 렌더링하는 모든 것이 원점에서 약 3미터 내에 있는지 확인하는 것입니다. 가까운 스테이지 원본의 경우 위치 오류가 증가하면 사용자 보기에서 크게 이동하지 않는 작은 홀로그램에만 영향을 주기 때문에 먼 콘텐츠를 렌더링해도 괜찮습니다.
공간 앵커 지속성
또한 공간 앵커를 사용하면 앱이 일시 중단되거나 디바이스가 종료된 후에도 앱이 중요한 위치를 기억할 수 있습니다.
앱이 만드는 공간 앵커를 디스크에 저장한 다음 나중에 앱의 공간 앵커 저장소에 유지하여 다시 로드할 수 있습니다. 앵커를 저장하거나 로드할 때 나중에 앵커를 식별하기 위해 앱에 의미 있는 문자열 키를 제공합니다. 이 키를 앵커의 파일 이름으로 간주합니다. 사용자가 해당 위치에 배치한 3D 모델과 같은 다른 데이터를 해당 앵커와 연결하려면 해당 데이터를 앱의 로컬 스토리지에 저장하고 선택한 키와 연결합니다.
저장소에 앵커를 유지하면 사용자는 개별 홀로그램을 배치하거나 앱이 다양한 홀로그램을 배치할 작업 영역을 배치한 다음 나중에 앱의 여러 용도에 따라 해당 홀로그램을 찾을 수 있습니다.
HoloLens, iOS 및 Android 디바이스에서 비동기 홀로그램 지속성에 Azure Spatial Anchors 를 사용할 수도 있습니다. 지속형 클라우드 공간 앵커를 공유하면 여러 디바이스가 동시에 함께 존재하지 않더라도 시간이 지남에 따라 동일한 지속형 홀로그램을 관찰할 수 있습니다.
공간 앵커 공유
또한 앱은 실시간으로 공간 앵커를 다른 디바이스와 공유할 수 있으므로 실시간 공유 환경을 사용할 수 있습니다.
Azure Spatial Anchors를 사용하여 앱은 여러 HoloLens, iOS 및 Android 디바이스에서 공간 앵커를 공유할 수 있습니다. 각 디바이스가 동일한 공간 앵커를 사용하여 홀로그램을 렌더링하면 모든 사용자가 실제 세계에서 같은 위치에 표시되는 홀로그램을 보게 됩니다.
헤드 잠금 콘텐츠 방지
디스플레이의 고정된 지점(예: HUD)에 유지되는 헤드 잠금 콘텐츠를 렌더링하지 않는 것이 좋습니다. 일반적으로 머리로 잠긴 콘텐츠는 사용자에게 불편하며 월드의 자연스러운 부분처럼 느껴지지 않습니다.
헤드 잠금 콘텐츠는 일반적으로 사용자에게 연결되거나 월드 자체에 배치되는 홀로그램으로 대체되어야 합니다. 예를 들어 커서 는 일반적으로 월드로 푸시되어야 하며, 사용자의 시선 아래 개체의 위치와 거리를 반영하도록 자연스럽게 크기 조정해야 합니다.
추적 오류 처리
어두운 복도와 같은 일부 환경에서는 헤드셋이 내부 아웃 추적을 사용하여 세계에서 올바르게 자신을 찾을 수 없을 수 있습니다. 이렇게 하면 잘못 처리된 경우 홀로그램이 표시되지 않거나 잘못된 위치에 나타날 수 있습니다. 이제 이러한 상황이 발생할 수 있는 조건, 사용자 환경에 미치는 영향 및 이 상황을 가장 잘 처리하기 위한 팁에 대해 설명합니다.
센서 데이터가 부족하여 헤드셋을 추적할 수 없습니다.
헤드셋의 센서가 헤드셋이 어디에 있는지 파악할 수 없는 경우도 있습니다. 이 상황은 다음과 같은 경우에 발생할 수 있습니다.
- 방은 어둡습니다.
- 센서가 모발이나 손으로 덮여 있는 경우
- 주변 환경의 질감이 충분하지 않은 경우
이 경우 헤드셋은 월드로 잠긴 홀로그램을 렌더링하기에 충분한 정확도로 위치를 추적할 수 없습니다. 공간 앵커, 고정 프레임 또는 스테이지 프레임이 디바이스를 기반으로 하는 위치를 파악할 수 없습니다. 그러나 연결된 참조 프레임에서 본문이 잠긴 콘텐츠를 렌더링할 수 있습니다.
앱은 사용자에게 위치 추적을 다시 가져오는 방법을 알려야 하며, 센서를 발견하고 더 많은 조명을 켜는 등 몇 가지 팁을 설명하는 대체 본문 잠금 콘텐츠를 렌더링해야 합니다.
헤드셋은 환경의 동적 변경으로 인해 잘못 추적됩니다.
방 안을 돌아다니는 많은 사람들과 같이 환경에 많은 동적 변화가 있는 경우 디바이스가 제대로 추적할 수 없습니다. 이 경우 디바이스가 이 동적 환경에서 자신을 추적하려고 할 때 홀로그램이 점프하거나 드리프트하는 것처럼 보일 수 있습니다. 이 시나리오에 도달하면 덜 동적 환경에서 디바이스를 사용하는 것이 좋습니다.
시간이 지남에 따라 환경이 크게 변경되었기 때문에 헤드셋이 잘못 추적됨
가구, 벽걸이 등이 이동된 환경에서 헤드셋을 사용하기 시작하면 일부 홀로그램이 원래 위치에서 이동된 것처럼 보일 수 있습니다. 이전 홀로그램은 사용자의 공간에 대한 시스템의 이해가 더 이상 사실이 아니므로 사용자가 새 공간에서 이동할 때 이동할 수도 있습니다. 그런 다음 시스템은 공간의 기능을 조정하는 동시에 환경을 다시 매핑하려고 시도합니다. 이 시나리오에서는 사용자가 예상대로 표시되지 않는 경우 전 세계에 고정된 홀로그램을 교체하도록 권장하는 것이 좋습니다.
헤드셋은 환경의 동일한 공간으로 인해 잘못 추적됩니다.
경우에 따라 집이나 다른 공간에 두 개의 동일한 영역이 있을 수 있습니다. 예를 들어 두 개의 동일한 회의실, 두 개의 동일한 코너 영역, 디바이스의 시야를 덮는 두 개의 큰 동일한 포스터가 있습니다. 이러한 시나리오에서 디바이스는 때때로 동일한 부분 간에 혼동을 주고 내부 표현에서 동일하게 표시할 수 있습니다. 이로 인해 일부 영역의 홀로그램이 다른 위치에 나타날 수 있습니다. 환경의 내부 표현이 손상되었기 때문에 디바이스에서 추적이 손실되기 시작할 수 있습니다. 이 경우 시스템의 환경 이해를 재설정하는 것이 좋습니다. 지도를 다시 설정하면 모든 공간 앵커 배치가 손실됩니다. 이로 인해 헤드셋이 환경의 고유한 영역에서 잘 추적됩니다. 그러나 디바이스가 동일한 영역 간에 다시 혼동되면 문제가 다시 발생할 수 있습니다.