연결 지점

무엇보다도, World Locking Tools는 안정적인 월드 고정 좌표계, 즉 월드 고정 공간을 제공합니다. 이 공간은 가능한 한 물리적 세계에 상대적으로 고정된 상태로 유지됩니다. 그리고 월드 고정 공간 내의 개체는 다른 가상 개체에 대한 상대적 배치 유지, 자연 물리학 법칙 시뮬레이션, 운동학 및 기타 애니메이션 기법과 같은 안정적인 참조 프레임을 요구하는 기능을 즐길 수 있습니다.

사실, 애플리케이션의 요구 사항에 따라, 월드 고정 공간은 일부 또는 모든 장면 콘텐츠에 충분할 수 있습니다.

그러나 월드 고정 공간은 물리적 공간에 최적으로 정렬된 상태로 유지되지만, 월드 고정 공간의 여러 지점이 공통 좌표 공간에 고정되고, 물리적 세계의 참조 지점에 상대적으로 고정된 상태로 유지될 수 없는 상황이 있습니다. 이는 나중에 설명하겠습니다.

사소한 이해를 돕는 예제의 경우 센서가 하나의 앵커를 위치 (3,0,0)에 매핑하고 다른 앵커를 위치 (-3,0,0)에 매핑한다고 가정합니다. 나중에 센서 구체화가 처리되면 두 좌표가 (3,0,0) 및 (-2,0,0)이어야 합니다. 두 앵커 사이의 6미터 거리를 5미터 오프셋으로 변환하는 카메라에 적용할 수 있는 회전 및 오프셋은 분명히 없습니다.

Unity의 공간 앵커 시스템을 사용하면 두 앵커가 자동으로 새로 검색된 위치로 이동합니다.

그러나 World Locking Tools는 월드 고정 공간에서 이동하지 않는 개체가 "대부분" 이동하지 않도록 보장합니다. 그리고 사실, 모든 동작은 소유 애플리케이션에 달려 있습니다.

또 다른 일반적인 "비정상" 조건은 추적 손실입니다. 추적이 한 환경(예: 방)에서 손실되고 다른 환경에서 다시 회복되면 처음에는 두 공간을 연결하는 정보가 없습니다. 한 공간의 좌표는 다른 공간의 좌표와 관련하여 의미가 없습니다. 연결 지점 패러다임을 사용하면 이전 공간에 대한 공간 정보를 알 수 없는 경우(예: 이전 공간에 개체를 숨긴 경우) 애플리케이션이 초기 단계를 정상적으로 처리할 수 있을 뿐만 아니라 두 공간 간의 공간 관계가 알려지면 복구할 수 있습니다.

이러한 특수 조건 및 WLT가 이를 처리하기 위해 수행하는 다시 맞춤 작업에 대한 더 자세한 내용을 확인할 수 있습니다. 여기서 설명하는 내용은 WLT와 애플리케이션 간의 계약에서 이러한 조건을 원활하게 해결하는 데 중점을 줍니다.

연결 지점은 World Locking Tools와 애플리케이션 간의 계약을 체계화한 것입니다. 애플리케이션은 World Locking Tools API를 사용하여 연결 지점을 만들고 배치합니다. 연결 지점의 위치에 대한 수정이 다시 맞춤 작업에 의해 결정되면 애플리케이션은 월드 고정 공간의 새 위치 콜백을 통해 물리적 공간의 이전 위치에 연결 지점을 유지하라는 알림을 받습니다.

World Locking Tools 연결 지점이 솔루션이 될 수 있는 몇 가지 시나리오는 다음과 같습니다.

  • 다른 가상 개체보다는 물리적 세계의 피쳐에 상대적으로 고정된 상태를 유지하는 것이 더 중요합니다.
  • 개체는 Unity에서 디자인 타임이 아닌 런타임에 세계에 배치되며 추적 중단으로 구분된 상대 위치를 조정하는 것이 중요할 수 있습니다(조각에 대한 설명 참조).
  • 물리적 공간 위치의 유효성에 따라 개체의 가시성을 관리하는 것이 중요합니다.

연결 지점 사용

연결 지점의 사용법은 매우 간단합니다.

클라이언트가 해야 할 일

클라이언트는 필요한 각 연결 지점에 대해 다음을 수행해야 합니다.

  1. 시스템에서 연결 지점을 요청합니다. CreateAttachmentPoint 참조
  2. 더 이상 필요하지 않은 연결 지점을 삭제합니다. ReleaseAttachmentPoint 참조
  3. 연결 지점의 초기 위치 및 이동 시스템을 알립니다. CreateAttachmentPoint, MoveAttachmentPointTeleportAttachmentPoint 참조
  4. 다시 맞춤 작업 이벤트를 처리합니다. 아래 내용을 참조하세요.

World Locking Tools가 해야 할 일

World Locking Tools는 다음 중 하나가 발생할 때 영향을 받는 각 연결 지점을 애플리케이션에 알립니다.

  1. 연결 지점의 물리적 세계 변경 내용 추적의 유효성.
  2. 조각 병합 또는 다시 고정일 수 있는 다시 맞춤 작업으로 인해 월드 고정 공간의 좌표가 변경됩니다.

이러한 알림은 애플리케이션이 연결 지점을 만들 때 WorldLockingManager에 전달하는 대리자를 통해 브로드캐스트됩니다.

이러한 알림을 가장 잘 처리하기 위한 고려 사항은 각각 다르므로 이는 애플리케이션의 몫입니다. 내부적으로 사용되며 있는 그대로 사용되거나 사용자 지정 구현의 시작점으로 사용될 수 있는 샘플 처리기가 제공됩니다.

샘플 구현

물리적 세계에서 고정된 상태로 유지되고 추적이 유효하지 않을 때 콘텐츠를 숨겨야 하는 연결 지점의 경우 AdjusterFixed가 HandleAdjustState 멤버를 사용하여 AdjustStateDelegate를 구현하고 HandleAdjustLocation 멤버가 있는 AdjustLocationDelegate를 구현합니다. 개체 이동에 대한 유사한 구성 요소는 AdjusterMoving에 있습니다.

이러한 대리자 중 하나 또는 둘 다를 제공하는 것은 선택 사항이며, 실제로 상태 및 위치 변경에 대한 반응은 이벤트보다는 폴링에 따라 구현될 수 있습니다. 그러나 애플리케이션의 세부 사항으로 인해 사용이 불가능하지 않는 한, 대리자를 사용하는 이벤트 기반 시스템이 훨씬 더 효율적인 구현을 형성합니다.

AdjusterFixed 구성 요소(또는 매우 유사한 AdjusterMoving)로 시작하고 애플리케이션 요구 사항에 맞게 HandleAdjustLocationHandleAdjustState 처리기를 수정하는 것이 좋습니다.

추가 정보