다음을 통해 공유


기본 아이디어

내부에서 외부로 향하는 머리 추적 시스템은 놀라운 새 기술입니다. 장점을 보면 거의 마법 같습니다. 하지만 단점도 있습니다.

HoloLens에 있는 것과 같은 내부에서 외부로 향하는 머리 추적 시스템은 근거리 물리적 피쳐에 상대적인 머리의 위치를 잘 알려줍니다. 마찬가지로, 실제 피쳐가 머리를 기준으로 어디에 있는지 정확히 알려줍니다.

그러나 머리의 기준이 되는 위치는 어디인지 알려주지 못합니다. 머리가 지점 A에서 지점 B로 이동하면 추적 시스템은 일반적으로 머리가 얼마나 멀리 이동했는지는 정확히 모릅니다. 즉, 추적 시스템은 지점 A와 B 사이의 거리는 잘 모릅니다. 혼동의 여지가 있지만 이 효과를 "스케일링 문제"라고 하는 경우가 많습니다.

그리고 머리가 지점 B에서 지점 A로 다시 이동하는 경우에도 이동한 거리를 알지 못합니다. 정확할 때는 놀라울 정도로 정확하지만 틀릴 때도 크게 틀립니다. 이 효과를 "드리프트"라고도 합니다.

이러한 문제는 이 FAQ에서 자세히 설명합니다.

요점은 World Locking Tools가 이러한 문제를 해결할 수 있다는 것입니다. 후자(드리프트)의 경우 World Locking Tools는 머리가 지점 A 주변의 물리적 피쳐에서 지점 A 근처로 돌아왔다는 것을 인식하고 머리의 좌표를 수정할 수 있습니다.

전자(스케일링 문제)의 경우 World Locking Tools는 애플리케이션의 입력을 받아 지점 B가 지점 A를 기준으로 어디에 있는지 파악하고 이동한 거리도 수정할 수 있습니다.

World Locking Tools가 이러한 문제를 해결하는 방법을 더 자세히 이해하는 데 몇 가지 추가 용어가 도움이 될 것입니다.

Spongy 및 월드 고정 공간

Spongy 공간

World Locking Tools의 핵심은 최적화 엔진입니다. 이는 현재 머리 추적 정보와 함께 세계에서 현재 활성화된 공간 앵커의 그래프를 입력으로 사용합니다. 이 입력은 일반적으로 이 설명서 및 관련 설명서와 코드 내에서 Spongy 상태라고 불립니다. 끊임없이 유동적이기 때문에 spongy 상태라는 이름이 지정되었습니다. 공간 앵커는 항상 서로 상대적으로 동작하며 들어오는 센서 데이터가 상태를 구체화하기 때문에 네이티브 spongy 좌표 공간 내에 있습니다.

이 spongy 공간은 혼합 현실 애플리케이션 개발자가 사용할 수 있었던 유일한 좌표계입니다.

월드 고정 공간

spongy 상태에서 World Locking Tools 엔진은 안정적인 공간을 계산하여 물리적 세계와 spongy 공간을 최적으로 정렬합니다. 이 안정적인 공간을 월드 고정 공간이라고 하며, 전체 상태를 frozen 상태라고 합니다.

spongy 공간과 월드 고정 공간은 모두 견고한 직교 좌표계이며 실제로 회전과 오프셋만으로 서로 다르다는 것을 깨닫는 것이 중요합니다. 그러나 새 센서 데이터가 처리됨에 따라 spongy 공간에서 월드 고정 공간으로의 변환은 각 프레임을 변경합니다.

두 공간의 차이점은 들어오는 센서 데이터가 서로에 상대적인 공간 앵커와 spongy 공간의 머리를 자유롭게 구체화(즉, 이동)할 수 있지만 이러한 움직임을 최소화하기 위해 월드 고정 공간이 선택된다는 것입니다. 이러한 차이로 인해 월드 고정 공간에 배치된 장면 개체가 개별 공간 앵커에 연결되지 않고 물리적 세계에 고정된 것처럼 보일 수 있습니다. 각 프레임은 기본 앵커가 가장 안정적인 월드 고정 공간을 계산합니다. 즉, 가상 개체가 실제 피쳐에 최적으로 정렬되는 월드 고정 공간입니다.

이 변환은 장면 그래프에서 카메라 부모의 로컬 변환을 조정하는 방식으로 각 프레임의 장면에 적용됩니다. 카메라가 원래 spongy 공간을 정의하기 때문에 이 "spongy에서 월드 고정"으로의 변환을 카메라의 계층 구조에 삽입하면 장면의 루트 공간이 월드 고정 공간이 됩니다.

지속성

Frozen 상태는 필요에 따라 세션 간에 지속될 수 있습니다. 현재 상태를 저장하고 저장된 상태에서 로드하기 위한 수동 컨트롤이 있습니다. 또한 World Locking Tools Manager의 플래그는 Frozen 상태의 자동 주기적 저장 및 시작 시 마지막으로 저장된 상태의 자동 로드를 사용하거나 사용하지 않도록 설정합니다.

이러한 기능을 사용하면 실제 공간의 스캔 및 안정화가 여러 세션에 걸쳐 지속될 수 있습니다.

또한 공간 핀 기능을 사용하여 모델링 공간을 실제 공간에 맞추는 경우 해당 맞춤을 지속할 수 있습니다. 이 경우 모델링된 장면을 물리적 공간에 맞추도록 공간 핀을 설정하는 초기 맞춤 세션 이후 후속 세션은 가상 및 실제 피쳐가 정렬된 물리적 공간에 모델링된 장면을 자동으로 로드할 수 있습니다.

자세한 내용은 지속성공간 핀 기능을 참조하세요.

카메라 이동 영향

여기서 유의해야 할 미묘하지만 중요한 점은 카메라에 보정 변환을 적용하여 네이티브 Unity "고정 참조 프레임"이 최적의 월드 고정 참조 프레임으로 변환되었다는 것입니다. 장면의 개체가 이동되지 않았기 때문에 이 보정은 물리학 시뮬레이션 또는 기타 역학 계산을 방해하지 않습니다.

그러나 고정된 참조 프레임 내에서 이동하는 카메라는 영향을 줍니다. 특히 머리 변환이 고정된 참조 프레임과 카메라 공간 사이의 유일한 변환이라고 가정하는 하위 시스템은 올바르지 않습니다.

이 오류는 일반적으로 문제가 되지 않습니다. 텔레포트와 같은 기능은 이미 카메라와 루트 공간 사이에 변환을 배치하는 기능에 의존합니다.

또한 MRTK는 이미 이러한 변환의 필요성을 고려하므로 MRTK 서비스 사용자의 경우 "문제가 없습니다".

MRTK를 활용할 수 없는 하위 수준 시스템에 직접 액세스해야 하는 사용자의 경우 어댑터를 빌드하기 위한 샘플이 제공됩니다. 아래에 몇 가지 예제가 나와 있습니다.

추가 정보