Tworzenie modeli 3D do użycia w domu

Windows Mixed Reality domu jest punktem wyjścia, w którym użytkownicy lądują przed uruchomieniem aplikacji. Podczas projektowania aplikacji dla zestawów nagłownych Windows Mixed Reality użyj modelu 3D jako modułu uruchamiania aplikacji i umieść linki głębokie 3D w Windows Mixed Reality domu. W tym artykule opisano wytyczne dotyczące tworzenia modeli 3D zgodnych z Windows Mixed Reality domu.

Omówienie wymagań dotyczących zasobów

Podczas tworzenia modeli 3D dla Windows Mixed Reality istnieją pewne wymagania, które muszą spełniać wszystkie zasoby:

  1. Eksportowanie — zasoby muszą być dostarczane w formacie .glb (binary glTF), .obj lub .fbx
  2. Modelowanie — zasoby muszą być mniejsze niż 10 000 trójkątów, nie mają więcej niż 64 węzłów i 32 podzesłuch na LOD
  3. Materiały — tekstury nie mogą być większe niż 4096 x 4096, a najmniejsza mapa mip nie powinna być większa niż 4 w obu wymiarach
  4. Animacja — animacje nie mogą być dłuższe niż 20 minut na 30 KLATEK NA SEKUNDĘ (36 000 klatek kluczowych) i muszą zawierać <= 8192 morph wierzchołki docelowe
  5. Optymalizacja — zasoby powinny być zoptymalizowane przy użyciu elementu WindowsMRAssetConverter. Wymagane w wersjach <systemu operacyjnego Windows = 1709* i zalecane w systemach operacyjnych >Windows = 1803

Uwaga

Aplikacja 3D Viewer obsługuje różne formaty i rozdzielczości, ale ostatecznie konwertuje modele na .glb/glTF przed wyświetleniem ich w Mixed Reality domu.

Pozostała część tego artykułu zawiera szczegółowy przegląd tych wymagań i dodatkowe wskazówki, aby zapewnić, że modele działają dobrze z Windows Mixed Reality domu.

Szczegółowe wskazówki

Eksportowanie modeli

Strona główna Windows Mixed Reality oczekuje, że zasoby 3D zostaną dostarczone przy użyciu formatu pliku glb z obrazami osadzonymi i danymi binarnymi. Glb jest binarną wersją formatu glTF, która jest tantiemowym otwartym standardem dostarczania zasobów 3D utrzymywanych przez grupę Khronos. W miarę rozwoju formatu glTF jako standardu branżowego dla zawartości 3D, obsługa formatu w aplikacjach i środowiskach systemu Windows będzie wspierana przez firmę Microsoft. Jeśli nie utworzono zasobu glTF przed znalezieniem listy obsługiwanych eksporterów i konwerterów na stronie grupy roboczej glTF github.

Wytyczne dotyczące modelowania

System Windows oczekuje wygenerowania zasobów przy użyciu poniższych wytycznych dotyczących modelowania w celu zapewnienia zgodności z Mixed Reality środowiskiem domowym. Podczas modelowania w wybranym programie należy pamiętać o następujących zaleceniach i ograniczeniach:

  1. Oś w górę powinna być ustawiona na wartość "Y".
  2. Zasób powinien stawić czoła "do przodu" w kierunku dodatniej osi Z.
  3. Wszystkie zasoby powinny być zbudowane na płaszczyźnie naziemnej w miejscu pochodzenia sceny (0,0,0)
  4. Jednostki robocze powinny być ustawione na mierniki i zasoby, aby zasoby mogły być tworzone na skalę światową
  5. Wszystkie siatki nie muszą być łączone, ale jest zalecane, jeśli są przeznaczone dla urządzeń z ograniczonymi zasobami
  6. Wszystkie siatki powinny współdzielić jeden materiał, a tylko jeden zestaw tekstur jest używany dla całego zasobu
  7. Telewizory muszą być ułożone w układzie kwadratowym w przestrzeni 0-1. Unikaj tiling tekstur, chociaż są dozwolone.
  8. Multi-UVs nie są obsługiwane
  9. Materiały dwustronne nie są obsługiwane

Liczba trójkątów i poziomy szczegółów (LOD)

Dom Windows Mixed Reality nie obsługuje modeli z ponad 10 000 trójkątów. Zaleca się triangulacji siatki przed wyeksportowaniem, aby upewnić się, że nie przekraczają one tej liczby. System Windows MR obsługuje również opcjonalne poziomy geometrii szczegółów (LOD), aby zapewnić wydajne i wysokiej jakości środowisko. WindowsMRAssetConverter pomoże Ci połączyć 3 wersje modelu w jeden model glb. System Windows określa, który LOD ma być wyświetlany na podstawie ilości nieruchomości ekranu, którą zajmuje model. Tylko 3 poziomy LOD są obsługiwane z następującymi zalecanymi liczbami trójkątów:

Poziom LOD Zalecana liczba trójkątów Maksymalna liczba trójkątów
LOD 0 10 000 10 000
LOD 1 5000 10 000
LOD 2 2500 10 000

Limity liczby węzłów i podzbień

Windows Mixed Reality domu nie obsługuje modeli z więcej niż 64 węzłami lub 32 podzesłumi na LOD. Węzły są pojęciem w specyfikacji glTF definiującej obiekty w scenie. Podmezy są definiowane w tablicy elementów pierwotnych w siatce w obiekcie .

Cecha Opis Maksymalna obsługiwana Dokumentacja
Węzły Obiekty w scenie glTF 64 na LOD Tutaj
Podmeshes Suma elementów pierwotnych we wszystkich siatkach 32 na LOD Tutaj

Wytyczne dotyczące materiałów

Tekstury powinny być przygotowane przy użyciu przepływu pracy z szorstkością metalu PBR. Zacznij od utworzenia pełnego zestawu tekstur, w tym Albedo, Normal, Occlusion, Metallic i Roughness. Windows Mixed Reality obsługuje tekstury o rozdzielczości do 4096x4096, ale zaleca się, aby utworzyć 512x512. Tekstury powinny być tworzone w rozdzielczościach wielokrotności 4. Jest to wymagane dla formatu kompresji stosowanego do tekstur w krokach eksportowania opisanych poniżej. Podczas generowania map mip lub tekstury najniższa mip musi wynosić maksymalnie 4x4.

Zalecany rozmiar tekstury Maksymalny rozmiar tekstury Najniższa mip
512x512 4096x4096 maks. 4x4

Mapa Albedo (kolor podstawowy)

Nieprzetworzone kolory bez informacji o oświetleniu. Ta mapa zawiera również informacje o odbiciach i rozproszonych dla metali (biały na metalowej mapie) i izolator (czarny w metalowej mapie) powierzchni odpowiednio.

Normalne

Mapa przestrzeń styczna — normalna

Mapa szorstkości

Opisuje mikropomowę obiektu. Biały 1.0 jest szorstki Czarny 0.0 jest gładki. Ta mapa daje zasób najwięcej znaków, ponieważ naprawdę opisuje powierzchnię. Na przykład rysy, odciski palców, rozmycie, ponury i tak dalej.

Mapa okluzji otoczenia

Mapa skali wartości przedstawiająca obszary światła occluded, które blokuje odbicia

Mapa metaliczna

Informuje moduł cieniowania, czy coś jest metalem, czy nie. Raw Metal = 1.0 white Non-metal = 0.0 black. Mogą istnieć przejściowe szare wartości, które wskazują coś obejmującego surowy metal, taki jak brud, ale ogólnie ta mapa powinna być tylko czarna i biała.

Optymalizacje

Windows Mixed Reality home oferuje serię optymalizacji na podstawie podstawowej specyfikacji glTF zdefiniowanej przy użyciu rozszerzeń niestandardowych. Te optymalizacje są wymagane w wersjach <systemu Windows = 1709 i zalecane w nowszych wersjach systemu Windows. Można łatwo zoptymalizować dowolny model glTF 2.0 przy użyciu konwertera zasobów Windows Mixed Reality dostępnego w witrynie GitHub. To narzędzie wykona prawidłowe pakowanie i optymalizacje tekstury, jak określono poniżej. W przypadku ogólnego użycia zalecamy użycie elementu WindowsMRAssetConverter, ale jeśli potrzebujesz większej kontroli nad środowiskiem i chcesz utworzyć własny potok optymalizacji, możesz zapoznać się ze szczegółową specyfikacją poniżej.

Uwaga

Aby uzyskać ostateczną listę możliwości dokładnych limitów modelu, zapoznaj się z artykułem dotyczącym optymalizacji modelu 3D do użycia w aplikacjach Dynamics 365.

Materiały

Aby poprawić czas ładowania zasobów w środowiskach Mixed Reality systemu Windows mr obsługuje renderowanie skompresowanych tekstur DDS zapakowanych zgodnie ze schematem pakowania tekstury zdefiniowanym w tej sekcji. Do tekstur DDS odwołuje się rozszerzenie MSFT_texture_dds. Kompresowanie tekstur jest zdecydowanie zalecane.

HoloLens

Środowiska rzeczywistości mieszanej oparte na urządzeniu HoloLens oczekują, że tekstury będą pakowane przy użyciu konfiguracji 2-teksturowej przy użyciu następującej specyfikacji pakowania:

glTF, właściwość Tekstura Schemat pakowania
pbrMetallicRoughness baseColorTexture Czerwony (R), Zielony (G), Niebieski (B)
MSFT_packing_normalRoughnessMetallic normalRoughnessMetallicTexture Normalny (RG), Szorstkość (B), Metaliczny (A)

Podczas kompresowania tekstur DDS na każdej mapie jest oczekiwana następująca kompresja:

Tekstura Oczekiwana kompresja
baseColorTexture, normalRoughnessMetallicTexture BC7

Immersyjne zestawy słuchawkowe (VR)

Środowisko Windows Mixed Reality oparte na komputerach dla immersywnych zestawów słuchawkowych (VR) oczekuje, że tekstury będą pakowane przy użyciu konfiguracji 3-teksturowej przy użyciu następującej specyfikacji pakowania:

System operacyjny >Windows = 1803

glTF, właściwość Tekstura Schemat pakowania
pbrMetallicRoughness baseColorTexture Czerwony (R), Zielony (G), Niebieski (B)
MSFT_packing_occlusionRoughnessMetallic occlusionRoughnessMetallicTexture Oklusion (R), Szorstkość (G), Metaliczny (B)
MSFT_packing_occlusionRoughnessMetallic normalTexture Normalny (RG)

Podczas kompresowania tekstur DDS na każdej mapie jest oczekiwana następująca kompresja:

Tekstura Oczekiwana kompresja
normalTexture BC5
baseColorTexture, occlusionRoughnessMetallicTexture BC7
System operacyjny <Windows = 1709

glTF, właściwość Tekstura Schemat pakowania
pbrMetallicRoughness baseColorTexture Czerwony (R), Zielony (G), Niebieski (B)
MSFT_packing_occlusionRoughnessMetallic roughnessMetallicOcclusionTexture Szorstkość (R), Metaliczny (G), Oklusion (B)
MSFT_packing_occlusionRoughnessMetallic normalTexture Normalny (RG)

Podczas kompresowania tekstur DDS na każdej mapie jest oczekiwana następująca kompresja:

Tekstura Oczekiwana kompresja
normalTexture BC5
baseColorTexture, roughnessMetallicOcclusionTexture BC7

Dodawanie identyfikatorów LOD siatki

Funkcja MR systemu Windows używa identyfikatorów LOD węzłów geometrycznych do renderowania modeli 3D na różnych poziomach szczegółowości w zależności od pokrycia ekranu. Chociaż ta funkcja nie jest technicznie wymagana, jest zalecana dla wszystkich zasobów. Obecnie system Windows obsługuje 3 poziomy szczegółowości. Wartość domyślna LOD to 0, która reprezentuje najwyższą jakość. Inne identyfikatory LOD są numerowane sekwencyjnie, na przykład 1, 2 i stopniowo niższe w jakości. Konwerter zasobów Windows Mixed Reality obsługuje generowanie zasobów spełniających tę specyfikację LOD przez akceptowanie wielu modeli glTF i scalanie ich w jeden zasób z prawidłowymi poziomami LOD. W poniższej tabeli przedstawiono oczekiwane cele porządkowania LOD i trójkąta:

Poziom LOD Zalecana liczba trójkątów Maksymalna liczba trójkątów
LOD 0 10 000 10 000
LOD 1 5000 10 000
LOD 2 2500 10 000

W przypadku korzystania z identyfikatorów LOD zawsze określ 3 poziomy LOD. Brakujące identyfikatory LOD spowodują nieoczekiwane renderowanie modelu, ponieważ system LOD przełącza się na brakujący poziom LOD. GlTF 2.0 nie obsługuje obecnie identyfikatorów LOD w ramach podstawowej specyfikacji. Identyfikatory LOD powinny być definiowane przy użyciu rozszerzenia MSFT_LOD.

Pokrycie ekranu

LoD są wyświetlane w Windows Mixed Reality na podstawie systemu opartego na wartości pokrycia ekranu ustawionej na każdym LOD. Obiekty, które obecnie zużywają większą część miejsca na ekranie, są wyświetlane na wyższym poziomie LOD. Pokrycie ekranu nie jest częścią podstawowej specyfikacji glTF 2.0 i musi być określone przy użyciu MSFT_ScreenCoverage w sekcji "dodatki" rozszerzenia MSFT_lod.

Poziom LOD Zalecany zakres Zakres domyślny
LOD 0 100% - 50% 0,5
LOD 1 Poniżej 50% do 20% 0,2
LOD 2 Poniżej 20% do 1% 0,01
LOD 4 Poniżej 1% -

Wskazówki dotyczące animacji

Uwaga

Ta funkcja została dodana w ramach aktualizacji z Windows 10 kwietnia 2018 r. W starszych wersjach systemu Windows te animacje nie będą jednak odtwarzane, ale nadal będą ładowane, jeśli zostały utworzone zgodnie ze wskazówkami w tym artykule.

Dom rzeczywistości mieszanej obsługuje animowane obiekty glTF na holoLens i immersywne zestawy nagłowne (VR). Jeśli chcesz wyzwalać animacje w modelu, musisz użyć rozszerzenia Mapy animacji w formacie glTF. To rozszerzenie umożliwia wyzwalanie animacji w modelu glTF na podstawie obecności użytkownika na świecie, na przykład wyzwalanie animacji, gdy użytkownik znajduje się blisko obiektu lub gdy patrzy na nie. Jeśli obiekt glTF zawiera animacje, ale nie definiuje wyzwalaczy, animacje nie będą odtwarzane z powrotem. W poniższej sekcji opisano jeden przepływ pracy dodawania tych wyzwalaczy do dowolnego animowanego obiektu glTF.

narzędzia

Najpierw pobierz następujące narzędzia, jeśli jeszcze ich nie masz. Te narzędzia ułatwiają otwieranie dowolnego modelu glTF, jego podgląd, wprowadzanie zmian i zapisywanie z powrotem jako glTF lub glb:

  1. Visual Studio Code
  2. glTF Tools for Visual Studio Code

Otwieranie i wyświetlanie podglądu modelu

Zacznij od otwarcia modelu glTF w programie VSCode, przeciągając plik .glTF do okna edytora. Jeśli masz plik glb zamiast pliku glTF, możesz zaimportować go do programu VSCode przy użyciu pobranego dodatku narzędzi glTF. Przejdź do pozycji "Widok —> paleta poleceń", a następnie zacznij wpisywać "glTF" w palecie poleceń i wybierz pozycję "glTF: Import from glb", co spowoduje wyświetlenie selektora plików w celu zaimportowania elementu glb za pomocą polecenia.

Po otwarciu modelu glTF w oknie edytora powinien zostać wyświetlony kod JSON. Możesz również wyświetlić podgląd modelu w przeglądarce 3D na żywo, klikając prawym przyciskiem myszy nazwę pliku i wybierając skrót polecenia "glTF: Preview 3D Model" z menu kliknięcia prawym przyciskiem myszy.

Dodawanie wyzwalaczy

Wyzwalacze animacji są dodawane do formatu JSON modelu glTF przy użyciu rozszerzenia Mapy animacji. Rozszerzenie mapy animacji jest publicznie udokumentowane w witrynie GitHub (UWAGA: TO JEST ROZSZERZENIE WERSJI ROBOCZEJ). Aby dodać rozszerzenie do modelu, po prostu przewiń do końca pliku glTF w edytorze i dodaj blok "extensionsUsed" i "extensions" do pliku, jeśli jeszcze nie istnieją. W sekcji "extensionsUsed" dodasz odwołanie do rozszerzenia "EXT_animation_map", a w bloku "extensions" dodasz mapowania do animacji w modelu.

Jak wspomniano w specyfikacji , definiujesz, co wyzwala animację przy użyciu ciągu "semantycznego" na liście "animacji", która jest tablicą indeksów animacji. W poniższym przykładzie określono animację do odtworzenia, gdy użytkownik patrzy na obiekt:

  "extensionsUsed": [
    "EXT_animation_map"
  ],
  "extensions" : {
      "EXT_animation_map" : {
            "bindings": [
                {
                    "semantic": "GAZE",
                    "animations": [0]
                }
            ]
      }
  }

Następujące wyzwalacze animacji są obsługiwane przez Windows Mixed Reality domu.

  • "ALWAYS": Ciągła pętla animacji
  • "HELD": Zapętlony w całym czasie trwania obiekt jest chwycony.
  • "GAZE": Zapętlony, gdy obiekt jest oglądany
  • "ZBLIŻENIE": Zapętlony, gdy przeglądarka znajduje się w pobliżu obiektu
  • "POINTING": Zapętlony, gdy użytkownik wskazuje na obiekt

Zapisywanie i eksportowanie

Po wprowadzeniu zmian w modelu glTF możesz zapisać go bezpośrednio jako glTF. Możesz również kliknąć prawym przyciskiem myszy nazwę pliku w edytorze i wybrać polecenie "glTF: Export to GLB (plik binarny)", aby wyeksportować plik glb.

Ograniczenia

Animacje nie mogą być dłuższe niż 20 minut i nie mogą zawierać więcej niż 36 000 klatek kluczowych (20 minut przy 30 kl./s). Ponadto w przypadku używania animacji opartych na obiekcie docelowym nie przekracza 8192 wierzchołków docelowych morfów lub mniej. Przekroczenie tych liczb spowoduje, że animowany zasób będzie nieobsługiwany w Windows Mixed Reality domu.

Cecha Maksimum
Czas trwania 20 minut
Klatek kluczowych 36,000
Morph Target Wierzchołki 8192

informacje o implementacji glTF

Funkcja mr systemu Windows nie obsługuje przerzucania geometrii przy użyciu ujemnych skalowania. Geometria z ujemnymi skalami prawdopodobnie spowoduje artefakty wizualne.

Zasób glTF MUSI wskazywać domyślną scenę przy użyciu atrybutu sceny do renderowania przez mr systemu Windows. Ponadto moduł ładujący MR GLTF systemu Windows przed aktualizacją Windows 10 kwietnia 2018r. wymaga dostępu:

  • Musi zawierać wartości minimalne i maksymalne.
  • Typ SCALAR musi być typem componentType UNSIGNED_SHORT (5123) lub UNSIGNED_INT (5125).
  • Typ VEC2 i VEC3 muszą być componentType FLOAT (5126).

Następujące właściwości materiału są używane z podstawowej specyfikacji glTF 2.0, ale nie są wymagane:

  • baseColorFactor, metallicFactor, roughnessFactor
  • baseColorTexture: musi wskazywać teksturę przechowywaną w dds.
  • emissiveTexture: musi wskazywać teksturę przechowywaną w dds.
  • emissiveFactor
  • alphaMode

Następujące właściwości materiału są ignorowane ze specyfikacji podstawowej:

  • Wszystkie multi-UV
  • metalRoughnessTexture: Zamiast tego należy użyć pakietu tekstury zoptymalizowanej przez firmę Microsoft zdefiniowanego poniżej
  • normalTexture: Zamiast tego należy użyć pakietu tekstury zoptymalizowanej przez firmę Microsoft zdefiniowanego poniżej
  • normalScale
  • occlusionTexture: Zamiast tego należy użyć pakietu tekstury zoptymalizowanej pod kątem firmy Microsoft zdefiniowanego poniżej
  • occlusionStrength

Funkcja MR systemu Windows nie obsługuje wierszy i punktów trybu pierwotnego.

Obsługiwany jest tylko jeden atrybut wierzchołka UV.

Więcej zasobów

Zobacz też