Unity용 Remote Rendering 설정

Unity에서 ARR(Azure Remote Rendering)을 사용하도록 설정하려면 일부 프로젝트 구성이 필요할 수 있습니다. 또한 일부 Unity 관련 측면을 처리하는 전용 메서드도 제공합니다.

프로젝트 구성

OpenXR을 사용하는 경우 Unity OpenXR 설정에서 Azure Remote Rendering 기능을 사용하도록 설정해야 합니다.

Screenshot of the Unity Project Settings dialog. The Open XR subentry is selected in the list on the left. The Azure Remote Rendering Open XR feature is highlighted with a checked checkbox.

기타 필수 및 권장 프로젝트 설정의 경우 Azure Remote Rendering Unity 패키지에 포함된 프로젝트 유효성 검사기를 사용합니다.

  1. Unity 편집기 도구 모음의 Remote Rendering 메뉴에서 ValidateProject 항목을 선택합니다.
  2. 프로젝트 검사기 창에서 오류를 검토하고 필요한 경우 프로젝트 설정을 수정합니다.

시작 및 종료

Remote Rendering을 초기화하려면 RemoteManagerUnity를 사용합니다. 이 클래스는 제네릭 RenderingConnection을 호출하지만 이미 Unity 관련 세부 정보를 구현합니다. 예를 들어 Unity는 특정 좌표계를 사용합니다. RemoteManagerUnity.Initialize를 호출하면 적절한 규칙이 설정됩니다. 또한 이 호출은 원격으로 렌더링된 콘텐츠를 표시하는 데 사용해야 하는 Unity 카메라를 제공해야 합니다.

// initialize Azure Remote Rendering for use in Unity:
// it needs to know which camera is used for rendering the scene
RemoteUnityClientInit clientInit = new RemoteUnityClientInit(Camera.main);
RemoteManagerUnity.InitializeManager(clientInit);

Remote Rendering을 종료하려면 RemoteManagerStatic.ShutdownRemoteRendering()을 호출합니다.

RenderingSession을 만들고 기본 렌더링 세션으로 선택한 후에는 RemoteManagerUnity에 등록해야 합니다.

RemoteManagerUnity.CurrentSession = ...

전체 예제 코드

이 코드 예는 Unity에서 Azure Remote Rendering을 초기화하는 데 필요한 모든 단계를 보여 줍니다.

// initialize Remote Rendering
RemoteUnityClientInit clientInit = new RemoteUnityClientInit(Camera.main);
RemoteManagerUnity.InitializeManager(clientInit);

// create a frontend
SessionConfiguration sessionConfig = new SessionConfiguration();
// ... fill out sessionConfig ...
RemoteRenderingClient client = new RemoteRenderingClient(sessionConfig);

// start a session
CreateRenderingSessionResult result = await client.CreateNewRenderingSessionAsync(new RenderingSessionCreationOptions(RenderingSessionVmSize.Standard, 0, 30));
RenderingSession session = result.Session;

// let RemoteManagerUnity know about the session we want to use
RemoteManagerUnity.CurrentSession = session;

await session.ConnectAsync(new RendererInitOptions());

/// When connected, load and modify content

RemoteManagerStatic.ShutdownRemoteRendering();

편리한 함수

세션 상태 이벤트

RemoteManagerUnity.OnSessionUpdate는 세션 상태가 변경될 때 이벤트를 내보냅니다. 자세한 내용은 코드 설명서를 참조하세요.

ARRServiceUnity

ARRServiceUnity는 설정 및 세션 관리를 간소화하기 위한 선택적 구성 요소입니다. 여기에는 애플리케이션이 종료되거나 편집기에서 재생 모드가 종료될 때 세션을 자동으로 중지하는 옵션이 포함되어 있습니다. 필요할 때 세션 임대를 자동으로 갱신합니다. 세션 속성(LastProperties 변수 참조)과 같은 데이터를 캐시하고 세션 상태 변경 및 세션 오류에 대한 이벤트를 노출합니다.

한 번에 둘 이상의 ARRServiceUnity 인스턴스가 있을 수 없습니다. 몇 가지 일반적인 기능을 구현하여 빠르게 시작할 수 있습니다. 더 큰 애플리케이션의 경우 이러한 작업을 직접 수행하는 것이 더 적합할 수 있습니다.

ARRServiceUnity를 설정하고 사용하는 방법에 대한 예제는 자습서: 원격으로 렌더링된 모델 보기를 참조하세요.

다음 단계