빠른 시작: 렌더링을 위해 모델 변환

빠른 시작: Unity로 모델 렌더링에서는 Unity 샘플 프로젝트를 사용하여 기본 제공 모델을 렌더링하는 방법을 알아보았습니다.

이 가이드에서는 다음 단계에 따라 고유의 모델을 변환하는 방법을 보여 줍니다.

  • 입력 및 출력을 위한 Azure Blob 스토리지 계정 설정
  • Azure Remote Rendering에서 사용할 3D 모델 업로드 및 변환
  • 렌더링을 위해 애플리케이션에 변환된 3D 모델 포함

필수 조건

  • 빠른 시작: Unity로 모델 렌더링을 완료합니다.
  • PowerShell 스크립트를 사용한 변환의 경우: Azure PowerShell 설치(설명서)
    • 관리자 권한으로 PowerShell을 엽니다.
    • Install-Module -Name Az -AllowClobber를 실행합니다.

개요

서버의 렌더러는 FBX 또는 GLTF와 같은 원본 모델 형식을 직접 사용할 수 없습니다. 대신 모델이 독점적인 이진 형식이어야 합니다. 변환 서비스는 Azure Blob 스토리지의 모델을 사용하고, 변환된 모델을 제공된 Azure Blob 스토리지 컨테이너에 다시 씁니다.

필요 항목:

  • Azure 구독
  • 구독의 'StorageV2' 계정
  • 입력 모델용 Blob 스토리지 컨테이너
  • 출력 데이터용 Blob 스토리지 컨테이너
  • 변환할 모델 - 샘플 모델 참조
    • 지원되는 원본 형식 목록을 참조합니다.
    • 변환 스크립트 샘플을 사용하려면 모델 및 모든 외부 종속성(예: 외부 텍스처 또는 기하 도형)이 포함된 입력 폴더를 준비해야 합니다.

Azure 설정

아직 계정이 없다면 Azure 시작로 이동하여 무료 계정 옵션을 선택한 후 지침을 따릅니다.

Azure 계정이 있으면 Azure Portal에 로그인합니다.

스토리지 계정 만들기

Blob 스토리지를 만들려면 먼저 스토리지 계정이 필요합니다.

  1. 만들려면 “리소스 만들기”를 선택합니다.

Azure - add resource

  1. 새 화면의 왼쪽에서 스토리지를 선택하고, 다음 열에서 스토리지 계정 - Blob, 파일, 테이블, 큐를 선택합니다.

Azure - add storage

  1. 이 단추를 클릭하면 작성할 스토리지 속성이 포함된 다음 화면이 나타납니다.

Azure Setup

  1. 다음과 같은 방법으로 양식을 작성합니다.
  • 드롭다운 상자 아래의 링크에서 새 리소스 그룹을 만들고, ARR_Tutorial이라는 이름으로 지정합니다.
  • 스토리지 계정 이름에는 고유한 이름을 입력합니다. 이 이름은 전역적으로 고유해야 합니다. 이름이 이미 사용된 경우 오류 메시지가 표시됩니다. 이 빠른 시작의 범위에서는 arrtutorialstorage라는 이름으로 지정되었습니다. 이에 따라 이 빠른 시작에서 수행되는 모든 작업을 위해 사용자 이름으로 바꿔야 합니다.
  • 가까운 지역을 선택합니다. 다른 빠른 시작에서 렌더링을 설정하는 데 사용한 것과 동일한 지역을 사용하는 것이 좋습니다.
  • 성능 이 ‘프리미엄’으로 설정됩니다. '표준'도 작동하지만 모델을 로드할 때 로딩 시간 특성이 더 낮습니다.
  • 프리미엄 계정 유형이 ‘블록 Blob’으로 설정됨
  • 중복성이 ‘ZRS(영역 중복 스토리지)’로 설정됨
  1. 다른 탭의 속성을 변경할 필요가 없으므로 "검토 + 만들기"로 진행한 다음, 단계에 따라 설정을 완료할 수 있습니다.

  2. 이제 웹 사이트에서 배포 진행 상황을 알려주고, 결국에는 "배포가 완료됨"이라고 보고합니다. 다음 단계로 “리소스로 이동”을 선택합니다.

Azure Storage creation complete

Blob 스토리지 만들기

다음으로, 입력 및 출력을 위한 두 개의 Blob 컨테이너가 필요합니다.

  1. "리소스로 이동" 단추에서 목록 메뉴가 포함된 패널이 왼쪽에 있는 페이지로 이동합니다. “Blob service” 범주 아래의 해당 목록에서 “컨테이너”를 선택합니다.

Azure - add Containers

  1. "+ 컨테이너" 단추를 눌러 입력 Blob 스토리지 컨테이너를 만듭니다. 만들 때 다음 설정을 사용합니다.
  • 이름 = arrinput
  • 퍼블릭 액세스 수준 = 프라이빗
  1. 컨테이너가 만들어지면 + 컨테이너를 다시 선택하고 출력 컨테이너에 대해 다음 설정을 사용하여 반복합니다.
  • 이름 = arroutput
  • 퍼블릭 액세스 수준 = 프라이빗

이제 두 개의 Blob 스토리지 컨테이너가 있습니다.

Blob Storage Setup

변환 실행

모델 변환을 트리거하는 세 가지 고유한 방법이 있습니다.

1. ARRT 도구를 통한 변환

변환을 시작하고 렌더링된 결과와 상호 작용하는 ARRT라는 UI 기반 도구가 있습니다. ARRT

2. PowerShell 스크립트를 통한 변환

자산 전환 서비스를 더 쉽게 호출할 수 있도록 유틸리티 스크립트가 제공됩니다. 이는 스크립트 폴더에 있으며 Conversion.ps1이라고 합니다.

특히, 이 스크립트는 다음을 수행합니다.

  • 지정된 디렉터리의 모든 파일을 로컬 디스크에서 입력 스토리지 컨테이너로 업로드합니다.
  • 자산 변환 REST API를 호출합니다.
    • 이 API는 입력 스토리지 컨테이너에서 데이터를 검색하고, 변환을 시작하고, 변환 ID를 반환합니다.
  • 변환 프로세스가 성공 또는 실패로 종료될 때까지 검색된 변환 ID를 사용하여 변환 상태 API를 폴링합니다.
  • 출력 스토리지에서 변환된 자산에 대한 링크를 검색합니다.

스크립트는 Scripts\arrconfig.json 파일에서 해당 구성을 읽습니다. 텍스트 편집기에서 JSON 파일을 엽니다.

{
    "accountSettings": {
        "arrAccountId": "8*******-****-****-****-*********d7e",
        "arrAccountKey": "R***************************************l04=",
        "arrAccountDomain": "<select from available regions: australiaeast, eastus, eastus2, japaneast, northeurope, southcentralus, southeastasia, uksouth, westeurope, westus2 or specify the full url>"
    },
    "renderingSessionSettings": {
        "remoteRenderingDomain": "<select from available regions: australiaeast, eastus, eastus2, japaneast, northeurope, southcentralus, southeastasia, uksouth, westeurope, westus2 or specify the full url>"
    },
    "assetConversionSettings": {
        "localAssetDirectoryPath": "D:\\tmp\\robot",
        "resourceGroup": "ARR_Tutorial",
        "storageAccountName": "arrexamplestorage",
        "blobInputContainerName": "arrinput",
        "inputFolderPath": "robotConversion",
        "inputAssetPath": "robot.fbx",
        "blobOutputContainerName": "arroutput",
        "outputFolderPath":"converted/robot",
        "outputAssetFileName": "robot.arrAsset"
    }
}

accountSettings 그룹(계정 ID, 키 및 도메인) 내의 구성은 Unity 빠른 시작으로 모델 렌더링의 자격 증명과 유사하게 작성되어야 합니다.

renderingSessionSettings 그룹(도메인, vmSize 및 maxLeaseTime)의 전체 구성은 PowerShell 스크립트 예에서 볼 수 있습니다. vmSize 및 maxLeaseTime은 변환에 중요하지 않으며 변환에 영향을 주지 않으므로 생략할 수 있습니다.

assetConversionSettings 그룹 내에서 resourceGroup, blobInputContainerNameblobOutputContainerName을 변경해야 합니다. arrtutorialstorage 값은 스토리지 계정을 만드는 중에 선택한 고유 이름으로 바꿔야 합니다.

변환하려는 모델이 포함된 디스크의 디렉터리를 가리키도록 localAssetDirectoryPath를 변경합니다. 경로에서 이중 백슬래시(“\\”)를 사용하여 백슬래시(“\”)를 적절히 이스케이프해야 합니다.

서비스는 localAssetDirectoryPath에 지정된 경로의 모든 데이터를 inputFolderPath에서 지정된 하위 경로 아래의 blobInputContainerName blob 컨테이너로 업로드합니다. 예 구성을 사용하면 서비스는 "robotConversion" 경로 아래 스토리지 계정 "arrtutorialstorage"의 Blob 컨테이너 "arrinput"에 "D:\tmp\robot" 디렉터리의 콘텐츠를 업로드합니다. 이미 존재하는 파일을 덮어씁니다.

inputAssetPath를 변환할 모델의 경로로 변경합니다. 이 경로는 localAssetDirectoryPath를 기준으로 하는 상대 경로입니다. 경로 구분 기호로 “\” 대신 “/”를 사용합니다. 따라서 “D:\tmp\robot”에 직접 배치된 “robot.fbx” 파일의 경우 “robot.fbx”를 사용합니다.

모델이 변환되면 blobOutputContainerName에서 제공하는 스토리지 컨테이너에 다시 기록됩니다. 하위 경로는 선택적인 outputFolderPath를 제공하여 지정할 수 있습니다. 예에서 서비스는 결과 "robot.arrAsset"을 "converted/robot" 아래의 출력 Blob 컨테이너에 복사합니다.

구성 설정 outputAssetFileName은 변환된 자산의 이름을 결정합니다. 매개 변수는 선택 사항이며 지정되지 않은 경우 서비스는 입력 파일 이름을 사용하여 출력 이름을 생성합니다.

PowerShell을 열고, 사전 요구 사항에서 설명한 대로 Azure PowerShell을 설치했는지 확인합니다. 그런 다음, 다음 명령을 사용하여 구독에 로그인하고, 화면의 지시를 따릅니다.

Connect-AzAccount

참고 항목

조직에 둘 이상의 구독이 있는 경우 SubscriptionId 및 Tenant 인수를 지정해야 할 수 있습니다. Connect-AzAccount 설명서에서 세부 정보를 확인하세요.

azure-remote-rendering\Scripts 디렉터리로 변경하고, 변환 스크립트를 실행합니다.

.\Conversion.ps1 -UseContainerSas

다음과 유사한 결과가 표시됩니다. Conversion.ps1

3. API 호출을 통한 변환

C# 및 C++ API는 모두 서비스와 상호 작용할 수 있는 진입점을 제공합니다.

빠른 시작 샘플 앱에 새 모델 삽입

변환 스크립트는 변환된 모델에 대한 SAS(공유 액세스 서명) URI를 생성합니다. 이제 이 URI를 빠른 시작 샘플 앱에 모델 이름으로 복사할 수 있습니다(빠른 시작: Unity를 사용하여 모델 렌더링 참조).

Replace model in Unity

이제 샘플에서 사용자 지정 모델을 로드하고 렌더링합니다!

선택 사항: SAS URI 다시 만들기

변환 스크립트로 만들어진 SAS URI는 24시간 후에 만료됩니다. 그러나 만료된 후에는 모델을 다시 변환할 필요가 없습니다. 대신, 다음 단계에서 설명한 대로 포털에서 새 SAS를 만들 수 있습니다.

  1. Azure Portal에 로그인합니다.
  2. 스토리지 계정 리소스를 선택합니다.

Screenshot that highlights the selected Storage account resource.

  1. 다음 화면의 왼쪽 패널에서 스토리지 탐색기를 선택하고 arroutput Blob 스토리지 컨테이너에서 출력 모델(.arrAsset 파일)을 찾습니다. 마우스 오른쪽 단추로 파일을 클릭하고, 상황에 맞는 메뉴에서 공유 액세스 서명 가져오기를 선택합니다.

    Signature Access

  2. 만료 날짜를 선택할 수 있는 새 화면이 열립니다. 만들기를 누르고, 다음 대화 상자에 표시된 URI를 복사합니다. 이 새 URI는 스크립트에서 만든 임시 URI를 대체합니다.

다음 단계

이제 기본 사항을 알고 있으므로 더 심층적인 지식을 얻기 위해 자습서를 자세히 살펴봅니다.

모델 변환에 대한 자세한 내용을 알아보려면 모델 변환 REST API를 확인하세요.