다음을 통해 공유


스테이지 공간

HoloLens 2와 같은 헤드 추적 데이터를 제공하는 디바이스에서 ARR을 실행하는 경우 헤드 포즈는 사용자 애플리케이션과 서버 모두에 전송됩니다. 헤드 변환을 정의하는 공간을 스테이지 공간이라고 합니다.

로컬 및 원격 콘텐츠를 맞추려면 스테이지 공간과 표준 공간이 클라이언트와 서버 모두에서 동일하다고 가정합니다. 사용자가 카메라 위에 변환을 추가하기로 한 경우에는 로컬 및 원격 콘텐츠를 올바르게 정렬하기 위해 서버에도 전송해야 합니다.

스테이지 공간을 이동하는 일반적인 이유는 표준 잠금 도구 또는 실제의 다른 앵커링 기술일 뿐 아니라 VR에서 가상 캐릭터를 이동하기 때문입니다.

주의

실험적: 이 기능은 실험적이며 시간이 지남에 따라 변경됩니다. 따라서 최신 클라이언트 SDK 버전으로 업데이트하려면 코드를 업그레이드하는 추가 작업이 필요할 수 있습니다. 현재 구현에서는 스테이지 공간 원점을 변경할 때 잠시 동안 로컬/원격 콘텐츠 정렬을 중단합니다.

스테이지 공간 모범 사례

이 기능은 아직 실험적이므로 고려해야 할 몇 가지 주의 사항이 있습니다. 스테이지 공간 변환이 변경될 때마다 클라이언트가 새 스테이지 공간 변환이 통합된 새 동영상 프레임을 수신할 때까지 로컬 및 원격 콘텐츠가 더 이상 정렬되지 않습니다. 따라서 다음 사항을 고려해야 합니다.

  1. 연속 보행을 방지합니다. 연속 보행으로 스테이지 공간이 변경되면 모든 프레임이 변환되고, 운동 중단이 중지될 때까지 로컬 및 원격 콘텐츠가 잘못 정렬됩니다.
  2. 보행을 위해서는 텔레포트를 선호합니다. 잘못된 맞춤을 더 잘 숨기려면 전환 중에 검정색으로 페이드를 사용하고 변환에 애니메이션을 적용하는 대신 즉시 텔레포트하는 것이 좋습니다.

Important

데스크톱 시뮬레이션에서 카메라의 표준 공간 위치는 사용자 애플리케이션에서 제공합니다. 이 경우 스테이지 공간 원점을 설정하는 것은 카메라 변환에 이미 적용되었으므로 건너뛰어야 합니다.

스테이지 공간 설정

추가 변환이 스테이지 공간에 적용됨을 서버에 알리려면 표준 공간에서 위치 및 회전으로 정의된 원점을 전송해야 합니다. 이 설정은 스테이지 공간 설정을 통해 액세스할 수 있습니다.

void ChangeStageSpace(RenderingSession session)
{
    StageSpaceSettings settings = session.Connection.StageSpaceSettings;

    // Set position and rotation to the world-space transform of the stage space.
    settings.Position = new Double3(0, 0, 0);
    settings.Rotation = new Quaternion(0, 0, 0, 1);
}
void ChangeStageSpace(ApiHandle<RenderingSession> session)
{
    ApiHandle<StageSpaceSettings> settings = session->Connection()->GetStageSpaceSettings();

    // Set position and rotation to the world-space transform of the stage space.
    settings->SetPosition({0, 0, 0});
    settings->SetRotation({0, 0, 0, 1});
}

Unity 스테이지 공간 스크립트

Unity 통합에서는 카메라의 부모 GameObject에 추가할 수 있는 StageSpace라는 스크립트를 제공합니다. 이 스크립트가 스테이지 공간 원점 설정을 처리합니다.

다음 단계