도구 및 비주얼라이저

Microsoft.MixedReality.WorldLocking.Tools 네임스페이스의 도구 및 비주얼라이저는 개발 중에 도움을 주기 위해 고안되었습니다. 또한 WLT(World Locking Tools) 시스템과의 직접적인 고급 상호 작용을 위한 시작점이 될 수도 있습니다.

애플리케이션 내에서와 같이 직접 사용을 위한 것은 아니지만 애플리케이션 개발자는 언제든지 직접 사용하도록 선택할 수 있습니다.

WorldLocking.Core는 적절한 애플리케이션 시나리오에서 있는 그대로 작동합니다. 그러나 이 도구는 애플리케이션에 대해 가정할 수 있습니다. 경우에 따라 이러한 가정으로 인해 이 도구가 부적절해질 수 있습니다.

배송 애플리케이션 내에서 직접 도구를 통합하기 전에 사용자 고유의 요구 사항 및 리소스에 맞게 사용자 지정된 해당 도구 버전을 만드는 것이 좋습니다.

도구

조정자

조정자는 다시 맞춤 이벤트를 처리하는 구성 요소입니다. 특히 연결 지점을 만듭니다. 다시 맞춤 작업이 발생하는 경우 AttachmentPoint는 알림 콜백 역할을 합니다. 조정자는 해당 이벤트를 적절하게 처리합니다.

AttachmentPoints에 대한 추가 개념 설명을 참조하세요.

다시 맞춤 이벤트에 대한 정확한 올바른 반응은 다양한 유형의 개체에 따라 다르며 애플리케이션에 따라 매우 다릅니다. 예를 들어 개체의 조각이 현재 비활성 상태이면 개체를 표시해야 할까요? 일부 애플리케이션의 경우 개체의 적절한 배치를 확인할 수 없으므로 숨겨야 합니다. 다른 애플리케이션의 경우 개체가 사라지는 혼란을 겪는 것보다 일시적으로 잘못된 포즈로 개체를 표시하는 것이 더 나을 수 있습니다. 개체를 숨겨야 하는 애플리케이션의 경우에도 숨기기를 수행하는 다양한 방법이 있습니다(예: 비활성화 및 멀리 이동).

AdjusterFixedAdjusterMoving 구성 요소는 두 가지 일반적인 시나리오를 최소한으로 처리합니다.

AdjusterFixed 구성 요소는 대상이 일반적으로 이동되지 않는 것으로 가정합니다. World Locking Tools가 다시 맞춤 이벤트로 인해 조정 포즈를 보내는 경우 AdjusterFixed의 개체를 세계에 고정하기 위한 것입니다.

반면, AdjusterMoving 구성 요소는 대상이 Unity 좌표 공간을 통해 이동한다고 가정합니다. World Locking Tools 시스템이 대상의 위치를 인식하도록 유지하므로, 다시 맞춤 작업이 발생할 경우 시스템이 대상의 위치를 당시의 물리적 세계와 상대적으로 일정하게 유지하기 위해 가장 정확한 수정을 제공할 수 있습니다.

어댑터

어댑터 구성 요소는 설명을 돕기 위해 제공된 것입니다. 어댑터 중 하나를 사용하는 경우 World Locking Tools를 사용하는 방법을 다시 생각해 볼 수 있습니다.

특히 MRTK에는 이미 기본 제공 어댑터가 있으므로 애플리케이션 부분에서 더 이상 좌표계 변환이 필요하지 않습니다.

특히 MRTK를 사용하지 않는 경우 Spongy Space 좌표에서 보고되는 네이티브 리소스에서 Frozen Space로 변환하는 경우가 있을 수 있습니다. 이러한 경우 애플리케이션 개발자가 여기에 포함된 어댑터 중 하나를 참조하면 도움이 됩니다.

  • WorldAnchorAdapter - WorldAnchor는 Spongy 공간에서 개체의 포즈를 조정하여 물리적 공간에서 고정된 상태를 유지합니다. 이것은 World Locking Tools에서 제공하는 월드 고정 공간과 중복되므로 개체가 Frozen Space에서 표류합니다. 이 어댑터를 사용하면 WorldAnchor가 Frozen Space에서 개체의 포즈를 유지할 수 있습니다. 이는 진단 외에는 필요하지 않습니다. Unity의 전역 좌표 공간의 모든 개체는 World Locking Tools에 의해 월드 고정됩니다.

  • ToggleWorldAnchor - WorldAnchorAdapter와 유사하지만 전환할 수 있습니다. 또한 WorldLockingManager가 사용하지 않도록 설정되면 자동으로 일반 WorldAnchor 동작으로 변환됩니다. 진단에만 유용합니다.

  • FrozenSpatialMapping - 어댑터는 SurfaceObserver의 결과를 관리하고 올바르게 렌더링합니다. MRTK 공간 인식 시스템은 이 모든 기능과 그 이상을 제공하며, World Locking Tools와 함께 사용할 어댑터가 필요하지 않습니다.

  • FrozenTapToAdd - Unity의 입력 시스템과 직접 상호 작용하려면 여기에 표시된 대로 들어오는 좌표 데이터를 변환해야 합니다. MRTK의 입력 시스템에는 필요하지 않습니다.

시각화 도우미

앵커 그래프 시각화

AnchorGraphVisual 및 연결된 프리팹은 제공되는 시각화의 핵심입니다. 구성 요소 조각은 다음과 같습니다.

  1. 축 - Spongy Space(녹색) 및 Frozen Space(파란색) 원점의 현재 포즈는 표준 3개 화살표 축 식별자로 표시됩니다.

  2. Spongy Anchor - Frozen World Engine 최적화를 제공하기 위해 만들어진 네이티브 기본 앵커입니다. 각각은 링을 식별 텍스트 태그와 함께 링으로 표시됩니다. 또한 색과 크기로 자세한 정보를 전달합니다.

    • 활성 추적 앵커는 녹색입니다.

    • 관련성이 0인 추적 앵커는 빨간색입니다.

    • 지원되지 않는 앵커는 노란색입니다.

    • 링이 클수록 해당 앵커에 대한 관련성이 큽니다.

  3. Frozen Anchor - Frozen Space의 해당 참조 지점입니다. 추적기 오류가 없는 경우 Spongy Anchor와 정확하게 정렬됩니다.

  4. Spongy-Frozen Edge - Spongy Anchor를 해당 Frozen Anchor에 연결합니다. 추적기 오류가 없으면 서로 일치하므로 이러한 가장자리가 표시되지 않으면 모든 것이 완벽하게 작동합니다. 어떤 경우에도 이러한 가장자리는 몇 센티미터보다 길면 안 됩니다. 이는 Frozen 쪽의 빨간색입니다. Spongy 쪽에서 색상이 파란색으로 변합니다.

  5. Anchor Edge - 이 얇은 파란색-회색 선은 앵커 그래프에서 Spongy Anchor 간의 연결을 표시합니다.

방을 트래버스하는 일반적인 앵커 그래프

사용자가 물리적 환경을 이동할 때 World Locking Tools에서 생성하는 앵커 그래프를 표시하도록 설정하려면 WorldLockingTools > Prefabs > AnchorGraphVisual 프리팹을 장면으로 끌어오면 됩니다. 일반적으로 WorldLockingContext에 형제로 추가되지만 계층 구조의 정확한 배치는 중요하지 않습니다. 그러나 카메라 계층 구조에 배치해서는 안 됩니다.

WLT가 내부적으로 만들고 사용하는 공간 앵커는 카메라 위치에 만들어집니다. 눈 높이에서 앵커 시각화 필드를 걷는 것은 당황스러울 수 있으므로 시스템은 기본적으로 실제 위치에서 1미터 아래로 표시합니다. 실제 앵커 위치에서 앵커 시각화를 보려면 Anchor Graph Visual 구성 요소의 Vertical Displacement 매개 변수를 0으로 설정합니다.

추가 출력

월드 고정 예제에는 텍스트 진단이 포함됩니다. 이러한 항목의 대부분은 해당 기능의 클라이언트가 아닌 World Locking Tools의 개발자하고만 관련이 있습니다. 그러나 읽기는 가능하며, StatusToText 스크립트에 표시된 대로 실시간 표시에 사용할 수 있습니다.

일반적인 진단 표시

사후 분석의 경우 WorldLockingContext진단 섹션이 Frozen World Engine 오류를 보고하는 데 매우 유용할 수 있습니다. 자세한 내용은 버그 보고를 참조하세요.