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:
- 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 submeshes 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 wierzchołki docelowe morfów
- 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:
- Oś w górę powinna być ustawiona na "Y".
- Zasób powinien mieć wartość "do przodu" w kierunku dodatniej osi Z.
- Wszystkie zasoby powinny być zbudowane na płaszczyźnie naziemnej w miejscu pochodzenia miejsca (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 zalecane jest, jeśli są przeznaczone dla urządzeń z ograniczonymi zasobami
- Wszystkie siatki powinny współdzielić jeden materiał, z tylko jednym zestawem tekstur używanym dla całego zasobu
- Telewizory muszą być ułożone w układzie kwadratowym w przestrzeni 0-1. Unikaj układania tekstur, chociaż są one 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ę 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:
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
- eksporterzy glTF i konwertery
- glTF Toolkit
- Specyfikacja glTF 2.0
- Specyfikacja rozszerzenia MICROSOFT glTF LOD
- Specyfikacja rozszerzeń pakowania tekstury rzeczywistości mieszanej
- Specyfikacja rozszerzeń pakowania tekstury rzeczywistości mieszanej HoloLens
- Specyfikacja rozszerzeń glTF tekstur DDS firmy Microsoft