Szybki start: Konwertowanie modelu do renderowania
W przewodniku Szybki start: renderowanie modelu za pomocą aparatu Unity przedstawiono sposób renderowania wbudowanego modelu przy użyciu przykładowego projektu aparatu Unity.
W tym przewodniku przedstawiono sposób konwertowania własnych modeli, co wiąże się z następującymi krokami:
- Konfigurowanie konta usługi Azure Blob Storage dla danych wejściowych i wyjściowych
- Przekazywanie i konwertowanie modelu 3D do użycia z usługą Azure Remote Rendering
- Uwzględnij przekonwertowany model 3D w aplikacji na potrzeby renderowania
Wymagania wstępne
- Ukończ szybki start: renderowanie modelu za pomocą aparatu Unity
- Konwersja przy użyciu skryptu programu PowerShell: instalowanie Azure PowerShell (dokumentacja)
- Otwieranie programu PowerShell z uprawnieniami administratora
- Uruchom polecenie
Install-Module -Name Az -AllowClobber
Omówienie
Program renderowany na serwerze nie może pracować bezpośrednio z formatami modelu źródłowego, takimi jak FBX lub GLTF. Zamiast tego wymaga, aby model był w zastrzeżonym formacie binarnym. Usługa konwersji korzysta z modeli z usługi Azure Blob Storage i zapisuje przekonwertowane modele z powrotem do udostępnionego kontenera usługi Azure Blob Storage.
Potrzebne elementy:
- Subskrypcja platformy Azure
- Konto "StorageV2" w subskrypcji
- Kontener magazynu obiektów blob dla modelu wejściowego
- Kontener magazynu obiektów blob dla danych wyjściowych
- Model do konwersji, zobacz przykładowe modele
- Zobacz listę obsługiwanych formatów źródłowych
- Aby użyć przykładowego skryptu konwersji, upewnij się, że przygotowujesz folder wejściowy zawierający model i wszystkie zależności zewnętrzne (takie jak tekstury zewnętrzne lub geometria)
Konfiguracja platformy Azure
Jeśli nie masz jeszcze konta, przejdź do sekcji Wprowadzenie do platformy Azure, wybierz opcję bezpłatnego konta i postępuj zgodnie z instrukcjami.
Po utworzeniu konta platformy Azure zaloguj się do Azure Portal.
Tworzenie konta magazynu
Aby utworzyć magazyn obiektów blob, musisz najpierw mieć konto magazynu.
- Aby je utworzyć, wybierz pozycję "Utwórz zasób":
- Na nowym ekranie wybierz pozycję Magazyn po lewej stronie, a następnie pozycję Konto magazynu — obiekt blob, plik, tabela, kolejka z następnej kolumny:
- Kliknięcie tego przycisku powoduje wyświetlenie następującego ekranu z właściwościami magazynu w celu wypełnienia:
- Wypełnij formularz w następujący sposób:
- Utwórz nową grupę zasobów na podstawie linku poniżej pola listy rozwijanej i nadaj tej ARR_Tutorial nazwę
- W polu Nazwa konta magazynu wprowadź tutaj unikatową nazwę. Ta nazwa musi być globalnie unikatowa. Jeśli nazwa jest już zajęta, zostanie wyświetlony komunikat o błędzie. W zakresie tego przewodnika Szybki start nadamy mu nazwę arrtutorialstorage. W związku z tym należy zastąpić ją nazwą dla dowolnego wystąpienia w tym przewodniku Szybki start.
- Wybierz region blisko Ciebie. Najlepiej używać tego samego regionu , co do konfigurowania renderowania w innym przewodniku Szybki start.
- Wydajność ustawiona na "Premium". Funkcja "Standardowa" działa również, ale ma mniejsze charakterystyki czasu ładowania podczas ładowania modelu.
- Typ konta Premium ustawiony na wartość "Blokowe obiekty blob"
- Nadmiarowość ustawiona na "Magazyn strefowo nadmiarowy (ZRS)"
Żadna z właściwości na innych kartach nie musi zostać zmieniona, więc możesz przejść do sekcji "Przejrzyj i utwórz" , a następnie wykonaj kroki, aby ukończyć konfigurację.
Witryna internetowa informuje teraz o postępie wdrażania i raportach "Wdrożenie zostało ukończone" w końcu. Wybierz pozycję "Przejdź do zasobu", aby wykonać następne kroki:
Tworzenie magazynu obiektów blob
Następnie potrzebujemy dwóch kontenerów obiektów blob: jeden dla danych wejściowych i jeden dla danych wyjściowych.
- Na przycisku "Przejdź do zasobu" możesz przejść do strony z panelem po lewej stronie zawierającym menu listy. Na tej liście w kategorii "Blob Service" wybierz pozycję "Kontenery":
- Naciśnij przycisk "+ Kontener" , aby utworzyć wejściowy kontener magazynu obiektów blob. Podczas jego tworzenia użyj następujących ustawień:
- Name = arrinput
- Poziom dostępu publicznego = prywatny
- Po utworzeniu kontenera ponownie wybierz pozycję + Kontener i powtórz te ustawienia dla kontenera wyjściowego :
- Name = arroutput
- Poziom dostępu publicznego = prywatny
Teraz powinny istnieć dwa kontenery magazynu obiektów blob:
Uruchamianie konwersji
Istnieją trzy różne sposoby wyzwalania konwersji modelu:
1. Konwersja za pomocą narzędzia ARRT
Istnieje narzędzie oparte na interfejsie użytkownika o nazwie ARRT do uruchamiania konwersji i interakcji z renderowany wynik.
2. Konwersja za pomocą skryptu programu PowerShell
Aby ułatwić wywoływanie usługi konwersji zasobów, udostępniamy skrypt narzędzia. Znajduje się on w folderze Scripts i nosi nazwę Conversion.ps1.
W szczególności ten skrypt
- przekazuje wszystkie pliki w danym katalogu z dysku lokalnego do wejściowego kontenera magazynu,
- wywołuje interfejs API REST konwersji zasobów
- ten interfejs API pobiera dane z wejściowego kontenera magazynu, uruchamia konwersję i zwraca identyfikator konwersji.
- sonduje interfejs API stanu konwersji z identyfikatorem pobranej konwersji do momentu zakończenia procesu konwersji z powodzeniem lub niepowodzeniem,
- pobiera link do przekonwertowanego elementu zawartości w magazynie wyjściowym.
Skrypt odczytuje jego konfigurację z pliku Scripts\arrconfig.json. Otwórz ten plik JSON w edytorze tekstów.
{
"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"
}
}
Konfiguracja w grupie accountSettings (identyfikator konta, klucz i domena) powinna zostać wypełniona analogicznie do poświadczeń w przewodniku Szybki start Renderowanie modelu za pomocą aparatu Unity.
Pełną konfigurację grupy renderingSessionSettings (domena, vmSize i maxLeaseTime) można zobaczyć w przykładowych skryptach programu PowerShell. Wartości vmSize i maxLeaseTime nie są ważne dla konwersji i można je pominąć, ponieważ nie mają wpływu na konwersję.
W grupie assetConversionSettings upewnij się, że zmieniono wartości resourceGroup, blobInputContainerName i blobOutputContainerName. Wartość parametru arrtutorialstorage musi zostać zastąpiona unikatową nazwą wybraną podczas tworzenia konta magazynu.
Zmień wartość localAssetDirectoryPath , aby wskazywała katalog na dysku, który zawiera model, który ma być konwertowany. Należy zachować ostrożność, aby prawidłowo uniknąć ukośników odwrotnych ("\") w ścieżce przy użyciu podwójnych ukośników odwrotnych ("\\").
Usługa przekazuje wszystkie dane ze ścieżki podanej w parametrze localAssetDirectoryPath do kontenera obiektów blob BlobInputContainerName pod ścieżką podrzędną podaną przez inputFolderPath. W przypadku przykładowej konfiguracji usługa przekazuje zawartość katalogu "D:\tmp\robot" do kontenera obiektów blob "arrinput" konta magazynu "arrtutorialstorage" w ścieżce "robotConversion". Już istniejące pliki są zastępowane.
Zmień wartość inputAssetPath na ścieżkę modelu do przekonwertowania — ścieżka jest względna względem parametru localAssetDirectoryPath. Użyj ciągu "/" zamiast "\" jako separatora ścieżki. W przypadku pliku "robot.fbx", który znajduje się bezpośrednio w folderze "D:\tmp\robot", użyj polecenia "robot.fbx".
Po przekonwertowaniu modelu zostanie on zapisany z powrotem do kontenera magazynu podanego przez parametr blobOutputContainerName. Ścieżkę podrzędną można określić, podając opcjonalny parametr outputFolderPath. W tym przykładzie usługa kopiuje wynikowy element "robot.arrAsset" do wyjściowego kontenera obiektów blob w obszarze "converted/robot".
Ustawienie konfiguracji outputAssetFileName określa nazwę przekonwertowanego zasobu — parametr jest opcjonalny, a jeśli nie określono, usługa używa nazwy pliku wejściowego do wygenerowania nazwy wyjściowej.
Otwórz program PowerShell, upewnij się, że zainstalowano Azure PowerShell, jak wspomniano w wymaganiach wstępnych. Następnie zaloguj się do subskrypcji za pomocą następującego polecenia i postępuj zgodnie z instrukcjami wyświetlanymi na ekranie:
Connect-AzAccount
Uwaga
W przypadku, gdy organizacja ma więcej niż jedną subskrypcję, może być konieczne określenie argumentów SubscriptionId i Tenant. Szczegółowe informacje można znaleźć w dokumentacji polecenia Connect-AzAccount.
Przejdź do azure-remote-rendering\Scripts
katalogu i uruchom skrypt konwersji:
.\Conversion.ps1 -UseContainerSas
Powinna zostać wyświetlona zawartość podobna do następującej:
3. Konwersja za pośrednictwem wywołań interfejsu API
Zarówno język C#, jak i interfejs API języka C++ zapewniają punkt wejścia umożliwiający interakcję z usługą:
- C# RemoteRenderingClient.StartAssetConversionAsync()
- C++ RemoteRenderingClient::StartAssetConversionAsync()
Wstawianie nowego modelu do przykładowej aplikacji Szybki start
Skrypt konwersji generuje identyfikator URI sygnatury dostępu współdzielonego (SAS) dla przekonwertowanego modelu. Teraz możesz skopiować ten identyfikator URI jako nazwę modelu do przykładowej aplikacji Szybki start (zobacz Szybki start: renderowanie modelu za pomocą aparatu Unity).
Przykład powinien teraz ładować i renderować model niestandardowy.
Opcjonalnie: Ponowne tworzenie identyfikatora URI sygnatury dostępu współdzielonego
Identyfikator URI sygnatury dostępu współdzielonego utworzony przez skrypt konwersji wygasa po 24 godzinach. Jednak po wygaśnięciu nie trzeba ponownie konwertować modelu. Zamiast tego możesz utworzyć nową sygnaturę dostępu współdzielonego w portalu zgodnie z opisem w następnych krokach:
- Zaloguj się w witrynie Azure Portal.
- Wybierz zasób konta magazynu :
Na poniższym ekranie wybierz pozycję Eksplorator usługi Storage w panelu po lewej stronie i znajdź model wyjściowy (plik arrAsset ) w kontenerze magazynu obiektów blob arroutput . Kliknij prawym przyciskiem myszy plik i wybierz polecenie Pobierz sygnaturę dostępu współdzielonego z menu kontekstowego:
Zostanie otwarty nowy ekran, na którym można wybrać datę wygaśnięcia. Naciśnij przycisk Utwórz i skopiuj identyfikator URI wyświetlany w następnym oknie dialogowym. Ten nowy identyfikator URI zastępuje tymczasowy identyfikator URI utworzony przez skrypt.
Następne kroki
Teraz, gdy znasz już podstawy, zapoznaj się z naszymi samouczkami, aby uzyskać bardziej szczegółową wiedzę.
Jeśli chcesz poznać szczegóły konwersji modelu, zapoznaj się z interfejsem API REST konwersji modelu.