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:
- Eksportowanie — zasoby muszą być dostarczane w formacie .glb (binary glTF), .obj lub .fbx
- 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
- 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
- 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
- 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:
- Oś w górę powinna być ustawiona na wartość "Y".
- Zasób powinien stawić czoła "do przodu" w kierunku dodatniej osi Z.
- Wszystkie zasoby powinny być zbudowane na płaszczyźnie naziemnej w miejscu pochodzenia sceny (0,0,0)
- Jednostki robocze powinny być ustawione na mierniki i zasoby, aby zasoby mogły być tworzone na skalę światową
- Wszystkie siatki nie muszą być łączone, ale jest zalecane, jeśli są przeznaczone dla urządzeń z ograniczonymi zasobami
- Wszystkie siatki powinny współdzielić jeden materiał, a tylko jeden zestaw tekstur jest używany dla całego zasobu
- Telewizory muszą być ułożone w układzie kwadratowym w przestrzeni 0-1. Unikaj tiling tekstur, chociaż są dozwolone.
- Multi-UVs nie są obsługiwane
- 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:
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
- konwertery i eksporterzy glTF
- glTF Toolkit
- specyfikacja glTF 2.0
- Specyfikacja rozszerzenia MICROSOFT glTF LOD
- Specyfikacja rozszerzeń pakowania tekstury Mixed Reality PC
- Specyfikacja rozszerzeń pakowania tekstury Mixed Reality HoloLens
- Specyfikacja rozszerzeń glTF Tekstury DDS firmy Microsoft