Udostępnij za pośrednictwem


Tworzenie modeli 3D do użycia w domu

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

Omówienie wymagań dotyczących zasobów

Podczas tworzenia modeli 3D dla środowiska 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 submeshes 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 wierzchołki docelowe morfów
  5. Optymalizacja — zasoby powinny być zoptymalizowane przy użyciu elementu WindowsMRAssetConverter. Wymagane w wersjach <systemu operacyjnego Windows = 1709* i zalecane w wersjach >systemu operacyjnego 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 domu rzeczywistości mieszanej.

W pozostałej części tego artykułu przedstawiono szczegółowe omówienie tych wymagań i dodatkowych wytycznych w celu zapewnienia, że modele działają dobrze w domu windows Mixed Reality.

Szczegółowe wskazówki

Eksportowanie modeli

Dom 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 utrzymywanym przez grupę Khronos. W miarę rozwoju glTF jako standard branżowy dla interoperacyjnej 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 github grupy roboczej glTF.

Wytyczne dotyczące modelowania

System Windows oczekuje wygenerowania zasobów przy użyciu poniższych wytycznych dotyczących modelowania w celu zapewnienia zgodności ze środowiskiem macierzysty rzeczywistości mieszanej. 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 "Y".
  2. Zasób powinien mieć wartość "do przodu" w kierunku dodatniej osi Z.
  3. Wszystkie zasoby powinny być zbudowane na płaszczyźnie naziemnej w miejscu pochodzenia miejsca (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 zalecane jest, jeśli są przeznaczone dla urządzeń z ograniczonymi zasobami
  6. Wszystkie siatki powinny współdzielić jeden materiał, z tylko jednym zestawem tekstur używanym dla całego zasobu
  7. Telewizory muszą być ułożone w układzie kwadratowym w przestrzeni 0-1. Unikaj układania tekstur, chociaż są one 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ę triangulate 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

Liczba węzłów i limity podięć

Strona główna windows Mixed Reality nie obsługuje modeli z więcej niż 64 węzłami lub 32 submeshes na LOD. Węzły są koncepcją specyfikacji glTF, która definiuje obiekty w scenie. Podmezy są definiowane w tablicy elementów pierwotnych w siatce w obiekcie.

Funkcja opis Maksymalna obsługiwana Dokumentacja
Węzły Obiekty w scenie glTF 64 na LOD tutaj
Podzamki Suma elementów pierwotnych na wszystkich siatkach 32 na LOD tutaj

Wytyczne dotyczące materiałów

Tekstury powinny być przygotowane przy użyciu przepływu pracy chropowatości metalu PBR. Zacznij od utworzenia pełnego zestawu tekstur, w tym Albedo, Normal, Oklusion, Metaliczny i Szorstkości. Windows Mixed Reality obsługuje tekstury z rozdzielczościami do 4096x4096, ale zalecane jest, aby utworzyć 512x512. Tekstury powinny być tworzone w rozdzielczościach wielokrotności 4. Jest to wymaganie dotyczące formatu kompresji zastosowanego do tekstur w krokach eksportowania opisanych poniżej. Podczas generowania map mip lub tekstury najniższa liczba mip musi wynosić maksymalnie 4x4.

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

Mapa Albedo (kolor podstawowy)

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

Normalna

Mapa Przestrzeń styczna normalna

Mapa szorstkości

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

Mapa okluzji otoczenia

Mapa skalowania wartości przedstawiająca obszary occluded light, które blokują odbicia

Mapa metaliczna

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

Optymalizacje

Strona główna Windows Mixed Reality oferuje szereg 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 modeli, zapoznaj się z artykułem optymalizacji modelu 3D do użycia w aplikacjach usługi Dynamics 365.

Materiały

Aby poprawić czas ładowania zasobów w środowiskach rzeczywistości mieszanej mr obsługuje renderowanie skompresowanych tekstur DDS zapakowanych zgodnie ze schematem pakowania tekstur 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 oczekiwana jest następująca kompresja:

Tekstura Oczekiwana kompresja
baseColorTexture, normalRoughnessMetallicTexture BC7

Immersyjne zestawy nagłowne (VR)

Oparte na komputerach środowiska Windows Mixed Reality dla immersywnych zestawów słuchawkowych (VR) oczekują, ż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 Okluzji (R), szorstkości (G), metalicznej (B)
MSFT_packing_occlusionRoughnessMetallic normalTexture Normalny (RG)

Podczas kompresowania tekstur DDS na każdej mapie oczekiwana jest 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), Okluzja (B)
MSFT_packing_occlusionRoughnessMetallic normalTexture Normalny (RG)

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

Tekstura Oczekiwana kompresja
normalTexture BC5
baseColorTexture, roughnessMetallicOcclusionTexture BC7

Dodawanie identyfikatorów LOD siatki

Narzędzie 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, akceptując wiele modeli glTF i scalając je 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 używania 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 obecnie nie obsługuje identyfikatorów LOD w ramach podstawowej specyfikacji. Identyfikatory LOD należy zdefiniować przy użyciu rozszerzenia MSFT_LOD.

Pokrycie ekranu

Identyfikatory LOD są wyświetlane w środowisku 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 należy określić 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 systemu Windows 10 z 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. W poniższej sekcji opisano jeden przepływ pracy umożliwiający dodanie 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łatwią 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 glTF Tools. Przejdź do pozycji "Widok —> paleta poleceń", a następnie rozpocznij wpisywanie ciągu "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 podglądzie 3D na żywo, klikając prawym przyciskiem myszy nazwę pliku i wybierając skrót polecenia "glTF: preview 3D Model" z menu kliknięcia po prawej stronie.

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, wystarczy przewinąć na końcu pliku glTF w edytorze i dodać 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 odtwarzania, gdy użytkownik patrzy na obiekt:

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

Następujące wyzwalacze animacji semantyka są obsługiwane przez dom windows Mixed Reality.

  • "ALWAYS": Stale zapętla animację
  • "HELD": Zapętlone w całym czasie trwania obiekt jest chwytany.
  • "GAZE": Zapętlone, gdy obiekt jest oglądany
  • "ZBLIŻENIE": Zapętlone, gdy osoba przeglądająca znajduje się w pobliżu obiektu
  • "POINTING": Zapętlone, gdy użytkownik wskazuje 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ć pozycję "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 obiektach docelowych nie przekracza 8192 wierzchołków docelowych morfów ani mniej. Przekroczenie tych liczb spowoduje, że animowany zasób będzie nieobsługiwany w domu windows Mixed Reality.

Funkcja Maksymalnie
Czas trwania 20 minut
Ramki kluczowe 36,000
Wierzchołki docelowe morfów 8192

Informacje o implementacji glTF

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

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

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

Następujące właściwości materiału są używane z podstawowych 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-UVs
  • metalRoughnessTexture: Zamiast tego należy użyć zoptymalizowanego pakowania tekstur firmy Microsoft zdefiniowanego poniżej
  • normalTexture: Zamiast tego należy użyć pakietu tekstur zoptymalizowanego przez firmę Microsoft zdefiniowanego poniżej
  • normalScale
  • occlusionTexture: Zamiast tego należy użyć zoptymalizowanego pakowania tekstur 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ż