다시 맞춤 작업

World Locking Tools의 다시 맞춤 작업은 시스템이 장면에서 일부 개체를 재배치할 경우 해당 개체가 물리적 세계 앵커에 더 잘 등록될 것이라고 판단하는 경우에 수행됩니다.

이 섹션에서는 다시 맞춤 작업으로 이어지는 상황과 작업 자체의 역학에 대한 추가 인사이트를 제공하려고 합니다.

다시 맞춤 작업은 자주 발생하지 않는다는 점을 알아 두시기 바랍니다. 다시 고정 작업을 트리거하는 기본 오류 허용 오차는 애플리케이션에서 사용자 지정할 수 있지만, 일반적으로 혼합 현실 환경은 특별한 상황에서만 다시 고정 작업을 트리거합니다. 다시 고정의 필요성에 영향을 미칠 수 있는 조건은 다음과 같습니다.

  • 열악한 환경으로 인한 추적 손실.
  • 머리의 빠른 움직임이 환경 스캔에 영향을 미치는 경우.
  • 동적 환경.
  • 루프 닫기(즉, 이전에 방문한 지점으로 다시 이어지는 로터리 경로에 대한 누적 추적 오류).

이러한 문제의 근본 원인은 잘못된 추적(즉, 추적 오류)입니다. 특히 초기 공간 스캔 후 매우 좋은 추적을 생성하는 합리적인 환경에서는 다시 맞춤 작업이 수행되는 빈도가 매우 드물게 것입니다.

조각 병합

여러 조각이 존재하는 원인에는 여러 가지가 있을 수 있습니다. 가장 일반적인 원인은 일시적인 추적 손실입니다. 조각은 공통 좌표 공간을 공유하는 개체의 컬렉션으로 정의되지만, 한 조각의 좌표 공간은 다른 조각을 기준으로 막연하게 배치됩니다.

충분한 새 센서 데이터가 수신되고 처리되어 이전에 관련되지 않은 두 조각의 콘텐츠를 동일한 공간에서 서로에게 상대적으로 올바르게 배치할 수 있으면 조각 병합을 수행할 수 있습니다.

두 조각 이상의 콘텐츠가 병합되는 새 좌표 공간은 임의로 지정됩니다. 여기서는 최종 좌표 공간이 유일하게 관련된 공간 중 하나일 것입니다. 대상 조각 하나를 제외한 모든 병합 조각이 좌표를 조정해야 한다는 것을 의미하기 때문입니다. 병합의 최종 대상으로 선택된 조각의 콘텐츠는 영향을 받지 않습니다.

조정 변환은 시스템에서 병합되는 각 원본 조각에 대해 계산합니다. 해당 조각의 각 연결 지점에 대한 AdjustLocationDelegate는 조정 변환을 사용하여 호출됩니다. 다시 말하지만 대상 조각의 연결 지점은 영향을 받지 않으며 AdjustLocationDelegates가 호출되지도 않습니다.

조각에 대한 설명에서 어두운 복도로 연결된 두 개의 방 시나리오는 이러한 상황 중 하나의 예입니다. 초기 단계에서는 두 조각(방)을 모두 스캔했지만 두 조각의 상대 위치에 대한 정보는 없습니다. 따라서 각 조각의 콘텐츠가 배치되는 좌표계는 해당 방의 모든 개체에서 일정하다면 임의적입니다. 예를 들어 각 방의 콘텐츠가 해당 방의 남서쪽 모서리에 원점이 있는 좌표계에 있을 수 있습니다. 동일한 조각에 있는 두 개체의 좌표는 서로에게 상대적인 두 개체의 위치를 나타내지만 두 개의 서로 다른 조각에 있는 두 개체의 좌표는 상대 위치에 대해 아무것도 알려주지 않습니다.

추가 정보가 확보되면 두 번째 조각의 콘텐츠 좌표를 조정하여 콘텐츠의 좌표가 첫 번째 조각의 개체에 상대적으로 의미가 있도록 할 수 있습니다. 예를 들어 복도 조명을 켜서 복도를 가로지르게 하여 두 조각 사이의 간격을 좁힐 수 있습니다. 두 방에 있는 모든 개체의 좌표가 동일하고 일관된 좌표 공간에 있도록 조정되는 경우, 더 이상 두 조각 간에 실질적인 차이가 없으므로 해당 콘텐츠가 모두 단일 공통 조각에 속하는 것으로 간주될 수 있습니다.

여러 조각을 단일 조각으로 축소하는 이 작업은 병합 작업입니다.

여기서는 월드 고정 공간의 장면에 배치된 일반 Unity 개체의 경우 병합 작업이 적용되지 않는다는 점을 알아 두어야 합니다. 다시 맞춤 작업에서 개체의 이동은 연결 지점을 통해서만 발생합니다.

다시 고정 작업

또 다른 상황은 앵커의 위치가 시간이 지남에 따라 구체화되는 경우입니다. 회전/오프셋 변환은 초기의 거친 앵커 위치와 물리적 세계에서 최근 개선된 위치 간의 차이를 보완하기에 더 이상 적합하지 않은 것이 분명해집니다. 앵커 자체는 spongy 공간에서 서로 상대적으로 끊임없이 움직입니다. 그러나 이러한 앵커에서 파생된 연결 지점은 월드 고정 공간에 고정됩니다.

시스템에서 앵커 위치를 업데이트할 경우 관리하는 연결 지점이 물리적 세계에 더 잘 등록될 수 있음을 인식하면 보정 이벤트에 대한 또 다른 기회가 있습니다. 새 센서 데이터를 반영하기 위해 연결 지점 위치를 조정하는 것을 다시 고정 작업이라고 합니다. 병합 작업에서 조각의 콘텐츠는 모두 단일 변환에 의해 조정되어 두 조각의 좌표 공간을 단일 통합 공간으로 병합하는 반면, 다시 고정은 영향을 주는 앵커의 업데이트된 위치에 따라 각 연결 지점을 개별적으로 조정합니다.

병합 작업에서와 마찬가지로 각 연결 지점에는 AdjustLocationDelegate를 통해 계산된 조정 변환이 표시됩니다.

조건이 맞으면 다시 고정에서 병합 작업을 수행할 수도 있습니다. 해당 병합은 다시 고정의 암시적 부분으로 간주됩니다. 병합에 대해 생성되는 별도의 이벤트는 없으며, 다시 고정의 일부로 전달되는 조정 변환에는 앵커 이동으로 인한 개별 조정과 병합으로 인한 조각 조정이 모두 포함됩니다.

다시 맞춤 이벤트에 대한 반응

병합 또는 다시 고정에서 다시 맞춤 이벤트에 대한 반응은 애플리케이션에 달려 있습니다. 더 정확하게 말하면, 각 개체 형식이 다르게 반응할 수 있으므로 각 연결 지점 처리기에 달려 있습니다. 일반적으로 연결 지점의 영향을 받는 개체는 GameObject.transform을 통한 조정 변환에 의해 이동됩니다. 동작은 꼭짓점 수동 이동과 같은 다른 메커니즘으로 대신 구현될 수 있습니다. 일부 애플리케이션에서는 병합의 영향을 받는 개체를 삭제하고 새 생성 주기를 시작하는 것이 유리할 수도 있습니다.

요점은 World Locking Tools가 애플리케이션이 다시 맞춤 작업에 반응하는 방법 또는 여부에 의존하지 않는다는 것입니다. 이는 전적으로 애플리케이션 개발자의 요구에 달려 있습니다.

다시 맞춤 작업에 대한 알림 및 반응의 기본 메커니즘은 연결 지점입니다. 자세한 내용과 옵션은 해당 문서에서 설명합니다.

추가 정보