3D-modellen maken voor thuisgebruik
De Windows Mixed Reality home is het beginpunt waar gebruikers terechtkomen voordat ze toepassingen starten. Wanneer u uw toepassing ontwerpt voor Windows Mixed Reality headsets, gebruikt u een 3D-model als startprogramma voor apps en plaatst u 3D-dieptekoppelingen in de Windows Mixed Reality startpagina. In dit artikel worden de richtlijnen beschreven voor het maken van 3D-modellen die compatibel zijn met de Windows Mixed Reality home.
Overzicht van assetvereisten
Bij het maken van 3D-modellen voor Windows Mixed Reality zijn er enkele vereisten waaraan alle assets moeten voldoen:
- Exporteren : assets moeten worden geleverd in de bestandsindeling .glb (binary glTF), .obj of .fbx
- Modellering : assets moeten kleiner zijn dan 10.000 driehoeken, niet meer dan 64 knooppunten en 32 submeshes per LOD
- Materialen : texturen mogen niet groter zijn dan 4096 x 4096 en de kleinste mip-kaart mag niet groter zijn dan 4 op een van beide dimensies
- Animatie: animaties mogen niet langer zijn dan 20 minuten bij 30 FPS (36.000 keyframes) en moeten = 8192 morphing doel hoekpunten bevatten <
- Optimaliseren: assets moeten worden geoptimaliseerd met windowsMRAssetConverter. Vereist voor Versies van Windows-besturingssysteem <= 1709* en aanbevolen voor Windows-besturingssysteemversies >= 1803
Notitie
De 3D Viewer-app ondersteunt verschillende indelingen en resoluties, maar converteert uiteindelijk modellen naar .glb/glTF voordat ze worden weergegeven in de Mixed Reality startpagina.
De rest van dit artikel bevat een gedetailleerd overzicht van deze vereisten en extra richtlijnen om ervoor te zorgen dat uw modellen goed werken met de Windows Mixed Reality home.
Gedetailleerde richtlijnen
Modellen exporteren
De Windows Mixed Reality home verwacht dat 3D-assets worden geleverd met behulp van de GLB-bestandsindeling met ingesloten afbeeldingen en binaire gegevens. Glb is de binaire versie van de glTF-indeling, een royaltyvrije open standaard voor de levering van 3D-assets die wordt onderhouden door de Khronos-groep. Naarmate glTF zich ontwikkelt als een industriestandaard voor interoperabele 3D-inhoud, wordt de ondersteuning van Microsoft voor de indeling in Windows-apps en -ervaringen hetzelfde. Als u nog geen glTF-asset hebt gemaakt, kunt u een lijst met ondersteunde exporteurs en conversieprogramma's vinden op de github-pagina van de glTF-werkgroep.
Richtlijnen voor modellering
Windows verwacht dat assets worden gegenereerd met behulp van de volgende modelleringsrichtlijnen om compatibiliteit met de Mixed Reality thuiservaring te garanderen. Houd bij het modelleren in uw programma van uw keuze rekening met de volgende aanbevelingen en beperkingen:
- De as Omhoog moet worden ingesteld op 'Y'.
- Het activum moet vooruit gericht zijn op de positieve Z-as.
- Alle activa moeten worden gebouwd op het grondvlak bij de oorsprong van de scène (0,0,0)
- Werkeenheden moeten worden ingesteld op meters en activa, zodat activa op wereldschaal kunnen worden gemaakt
- Alle meshes hoeven niet te worden gecombineerd, maar het wordt aanbevolen als u zich richt op apparaten met beperkte resources
- Alle meshes moeten één materiaal delen, waarbij slechts één textuurset wordt gebruikt voor de hele asset
- UV's moeten worden ingedeeld in een vierkante opstelling in de 0-1-ruimte. Vermijd tegels, hoewel dit wel is toegestaan.
- Multi-UVs worden niet ondersteund
- Dubbelzijdige materialen worden niet ondersteund
Aantal driehoeken en detailniveaus (LOD's)
De Windows Mixed Reality home biedt geen ondersteuning voor modellen met meer dan 10.000 driehoeken. Het is raadzaam om de meshes te trianguleren voordat u exporteert om ervoor te zorgen dat ze niet groter zijn dan dit aantal. Windows MR biedt ook ondersteuning voor optionele geometrieniveaus van detail (LOD's) om een performante en hoogwaardige ervaring te garanderen. Met WindowsMRAssetConverter kunt u 3 versies van uw model combineren in één .glb-model. Windows bepaalt welke LOD moet worden weergegeven op basis van de hoeveelheid schermomgeving die het model in beslag neemt. Er worden slechts 3 LOD-niveaus ondersteund met de volgende aanbevolen driehoekstellingen:
LOD-niveau | Aanbevolen aantal driehoeken | Maximum aantal driehoeken |
---|---|---|
LOD 0 | 10.000 | 10.000 |
LOD 1 | 5\.000 | 10.000 |
LOD 2 | 2500 | 10.000 |
Aantal knooppunten en submesh-limieten
De Windows Mixed Reality home biedt geen ondersteuning voor modellen met meer dan 64 knooppunten of 32 submeshes per LOD. Knooppunten zijn een concept in de glTF-specificatie waarmee de objecten in de scène worden gedefinieerd. Submehes worden gedefinieerd in de matrix van primitieven op het net in het object.
Functie | Beschrijving | Max. ondersteund | Documentatie |
---|---|---|---|
Knooppunten | Objecten in de glTF-scène | 64 per LOD | Hier |
Submeshes | Som van primitieven op alle meshes | 32 per LOD | Hier |
Materiaalrichtlijnen
Texturen moeten worden voorbereid met behulp van een PBR-werkstroom voor metaalruwheid. Begin met het maken van een volledige set patronen, waaronder Albedo, Normal, Occlusion, Metallic en Ruwheid. Windows Mixed Reality ondersteunt texturen met resoluties tot 4096x4096, maar het wordt aanbevolen dat u ontwerpt op 512x512. Patronen moeten worden geschreven bij resoluties in veelvouden van 4. Dit is een vereiste voor de compressieindeling die wordt toegepast op patronen in de onderstaande exportstappen. Bij het genereren van mip-kaarten of een textuur moet de laagste mip maximaal 4x4 zijn.
Aanbevolen textuurgrootte | Maximale textuurgrootte | Laagste mip |
---|---|---|
512x512 | 4096x4096 | max 4x4 |
Albedo-kaart (basiskleur)
Onbewerkte kleur zonder lichtinformatie. Deze kaart bevat ook de reflectie- en diffuse informatie voor respectievelijk metalen (wit in de metalen kaart) en isolator (zwart in de metalen kaart).
Normaal
Standaardkaart van de tangensruimte
Ruwheidskaart
Beschrijft het microoppervlak van het object. Wit 1.0 is ruw Zwart 0.0 is glad. Deze kaart geeft de asset het meeste karakter, omdat het echt het oppervlak beschrijft. Bijvoorbeeld krassen, vingerafdrukken, vlekken, vuil, enzovoort.
Omgevings occlusiekaart
Waardeschaalkaart met gebieden met ge occludeerd licht, waardoor reflecties worden geblokkeerd
Metalen kaart
Geeft aan de arcering door of iets van metaal is of niet. Raw Metal = 1,0 wit Non-metal = 0,0 zwart. Er kunnen overgangsgrijswaarden zijn die duiden op iets dat het onbewerkte metaal bedekt, zoals vuil, maar in het algemeen moet deze kaart alleen zwart-wit zijn.
Optimalisaties
Windows Mixed Reality home biedt een reeks optimalisaties bovenop de kernspecificatie glTF die is gedefinieerd met behulp van aangepaste extensies. Deze optimalisaties zijn vereist voor Windows-versies <= 1709 en worden aanbevolen voor nieuwere versies van Windows. U kunt eenvoudig elk glTF 2.0-model optimaliseren met behulp van de Windows Mixed Reality Asset Converter die beschikbaar is op GitHub. Met dit hulpprogramma worden de juiste textuurverpakkingen en optimalisaties uitgevoerd, zoals hieronder is opgegeven. Voor algemeen gebruik raden we u aan de WindowsMRAssetConverter te gebruiken, maar als u meer controle over de ervaring nodig hebt en uw eigen optimalisatiepijplijn wilt bouwen, kunt u de gedetailleerde specificatie hieronder raadplegen.
Notitie
Raadpleeg het artikel 3D-modeloptimalisatie voor gebruik in Dynamics 365 toepassingen voor een definitieve lijst van de mogelijkheden voor exacte modellimieten.
Materialen
Om de laadtijd van assets in Mixed Reality omgevingen te verbeteren, ondersteunt Windows MR het weergeven van gecomprimeerde DDS-patronen die zijn verpakt volgens het patroonverpakkingsschema dat in deze sectie is gedefinieerd. Naar DDS-patronen wordt verwezen met behulp van de extensie MSFT_texture_dds. Het comprimeren van patronen wordt ten zeerste aanbevolen.
HoloLens
Op HoloLens gebaseerde mixed reality-ervaringen verwachten dat patronen worden verpakt met behulp van een installatie met twee patronen met behulp van de volgende verpakkingsspecificatie:
glTF, eigenschap | Textuur | Verpakkingsschema |
---|---|---|
pbrMetallicRoughness | baseColorTexture | Rood (R), Groen (G), Blauw (B) |
MSFT_packing_normalRoughnessMetallic | normalRoughnessMetallicTexture | Normaal (RG), Ruwheid (B), Metallic (A) |
Bij het comprimeren van de DDS-patronen wordt de volgende compressie op elke kaart verwacht:
Textuur | Verwachte compressie |
---|---|
baseColorTexture, normalRoughnessMetallicTexture | BC7 |
Immersive (VR)-headsets
Pc-gebaseerde Windows Mixed Reality ervaringen voor immersive (VR) headsets verwachten dat texturen worden verpakt met behulp van een installatie met drie patronen met behulp van de volgende verpakkingsspecificatie:
Windows OS >= 1803
glTF, eigenschap | Textuur | Verpakkingsschema |
---|---|---|
pbrMetallicRoughness | baseColorTexture | Rood (R), Groen (G), Blauw (B) |
MSFT_packing_occlusionRoughnessMetallic | occlusionRoughnessMetallicTexture | Occlusie (R), Ruwheid (G), Metallic (B) |
MSFT_packing_occlusionRoughnessMetallic | normalTexture | Normaal (RG) |
Bij het comprimeren van de DDS-patronen wordt de volgende compressie op elke kaart verwacht:
Textuur | Verwachte compressie |
---|---|
normalTexture | BC5 |
baseColorTexture, occlusionRoughnessMetallicTexture | BC7 |
Windows-besturingssysteem <= 1709
glTF, eigenschap | Textuur | Verpakkingsschema |
---|---|---|
pbrMetallicRoughness | baseColorTexture | Rood (R), Groen (G), Blauw (B) |
MSFT_packing_occlusionRoughnessMetallic | ruwheidMetallicOcclusionTexture | Ruwheid (R), Metallic (G), Occlusie (B) |
MSFT_packing_occlusionRoughnessMetallic | normalTexture | Normaal (RG) |
Bij het comprimeren van de DDS-patronen wordt de volgende compressie op elke kaart verwacht:
Textuur | Verwachte compressie |
---|---|
normalTexture | BC5 |
baseColorTexture, ruwheidMetallicOcclusionTexture | BC7 |
Mesh-LOD's toevoegen
Windows MR gebruikt geometrieknooppunt LOD's om 3D-modellen in verschillende detailniveaus weer te geven, afhankelijk van de dekking op het scherm. Hoewel deze functie technisch niet vereist is, wordt deze aanbevolen voor alle assets. Momenteel ondersteunt Windows 3 detailniveaus. De standaard-LOD is 0, wat staat voor de hoogste kwaliteit. Andere LOD's worden opeenvolgend genummerd, bijvoorbeeld 1, 2 en worden steeds lager in kwaliteit. Het Windows Mixed Reality Asset Converter ondersteunt het genereren van assets die voldoen aan deze LOD-specificatie door meerdere glTF-modellen te accepteren en deze samen te voegen in één asset met geldige LOD-niveaus. De volgende tabel bevat een overzicht van de verwachte volgorde van de lod en driehoeksdoelen:
LOD-niveau | Aanbevolen aantal driehoeken | Maximumaantal driehoeken |
---|---|---|
LOD 0 | 10.000 | 10.000 |
LOD 1 | 5\.000 | 10.000 |
LOD 2 | 2500 | 10.000 |
Wanneer u LOD's gebruikt, geeft u altijd 3 LOD-niveaus op. Ontbrekende LOD's zorgen ervoor dat het model niet onverwacht wordt weergegeven als het LOD-systeem overschakelt naar het ontbrekende LOD-niveau. glTF 2.0 biedt momenteel geen ondersteuning voor LOD's als onderdeel van de kernspecificatie. LOD's moeten worden gedefinieerd met behulp van de extensie MSFT_LOD.
Schermdekking
LOD's worden weergegeven in Windows Mixed Reality op basis van een systeem dat wordt aangestuurd door de schermdekkingswaarde die is ingesteld op elke LOD. Objecten die momenteel een groter deel van de schermruimte verbruiken, worden weergegeven op een hoger LOD-niveau. Schermdekking maakt geen deel uit van de kernspecificatie glTF 2.0 en moet worden opgegeven met behulp van MSFT_ScreenCoverage in de sectie 'extra's' van de MSFT_lod-extensie.
LOD-niveau | Aanbevolen bereik | Standaardbereik |
---|---|---|
LOD 0 | 100% - 50% | 0,5 |
LOD 1 | Onder 50% - 20% | 0,2 |
LOD 2 | Onder 20% - 1% | 0,01 |
LOD 4 | Minder dan 1% | - |
Animatierichtlijnen
Notitie
Deze functie is toegevoegd als onderdeel van Windows 10 update van april 2018. In oudere versies van Windows worden deze animaties niet afgespeeld, maar ze worden nog steeds geladen als ze zijn gemaakt volgens de richtlijnen in dit artikel.
De startpagina voor mixed reality ondersteunt glTF-objecten met animatie op HoloLens en immersive (VR)-headsets. Als u animaties op uw model wilt activeren, moet u de extensie Animatiekaart in de glTF-indeling gebruiken. Met deze extensie kunt u animaties activeren in het glTF-model op basis van de aanwezigheid van de gebruiker in de wereld, bijvoorbeeld een animatie activeren wanneer de gebruiker zich dicht bij het object bevindt of terwijl deze het bekijkt. Als uw glTF-object animaties heeft, maar geen triggers definieert, worden de animaties niet afgespeeld. In de onderstaande sectie wordt één werkstroom beschreven voor het toevoegen van deze triggers aan een glTF-object met animatie.
Hulpprogramma's
Download eerst de volgende hulpprogramma's als u deze nog niet hebt. Met deze hulpprogramma's kunt u eenvoudig elk glTF-model openen, er een voorbeeld van bekijken, wijzigingen aanbrengen en opslaan als glTF of .glb:
Het model openen en bekijken
Open eerst het glTF-model in VSCode door het .glTF-bestand naar het editorvenster te slepen. Als u een .glb hebt in plaats van een .glTF-bestand, kunt u dit importeren in VSCode met behulp van de glTF Tools-invoegtoepassing die u hebt gedownload. Ga naar 'Weergave -> Opdrachtpalet' en typ 'glTF' in het opdrachtpalet en selecteer 'glTF: Importeren uit glb'. Er verschijnt een bestandskiezer waarmee u een .glb kunt importeren.
Zodra u uw glTF-model hebt geopend, ziet u de JSON in het editorvenster. U kunt ook een voorbeeld van het model bekijken in een live 3D-viewer met behulp van de door met de rechtermuisknop op de bestandsnaam te klikken en de opdrachtsneltoets 'glTF: Preview 3D-model' te selecteren in het snelmenu.
De triggers toevoegen
Animatietriggers worden toegevoegd aan JSON-model glTF met behulp van de extensie Animation Map. De extensie van de animatiekaart wordt hier openbaar gedocumenteerd op GitHub (OPMERKING: DIT IS EEN CONCEPTEXTENSIE). Als u de extensie aan uw model wilt toevoegen, schuift u naar het einde van het glTF-bestand in de editor en voegt u het blok extensionsUsed en Extensions toe aan uw bestand als deze nog niet bestaan. In de sectie extensionsUsed voegt u een verwijzing toe naar de extensie 'EXT_animation_map' en in het blok 'extensies' voegt u uw toewijzingen toe aan de animaties in het model.
Zoals vermeld in de specificatie definieert u wat de animatie activeert met behulp van de 'semantische' tekenreeks in een lijst met 'animaties', een matrix van animatie-indexen. In het onderstaande voorbeeld hebben we de animatie opgegeven die moet worden afgespeeld terwijl de gebruiker naar het object staart:
"extensionsUsed": [
"EXT_animation_map"
],
"extensions" : {
"EXT_animation_map" : {
"bindings": [
{
"semantic": "GAZE",
"animations": [0]
}
]
}
}
De volgende animatietriggers worden ondersteund door de Windows Mixed Reality home.
- 'ALTIJD': een animatie voortdurend herhalen
- "HELD": wordt gedurende de hele duur van een object gelust.
- 'STAREN': wordt in een lus geplaatst terwijl een object wordt bekeken
- 'NABIJHEID': wordt gelust terwijl een kijker zich in de buurt van een object bevindt
- 'AANWIJZEN': wordt in een lus geplaatst terwijl een gebruiker naar een object wijst
Opslaan en exporteren
Zodra u de wijzigingen in uw glTF-model hebt aangebracht, kunt u het rechtstreeks opslaan als glTF. U kunt ook met de rechtermuisknop op de naam van het bestand in de editor klikken en 'glTF: exporteren naar GLB (binair bestand)' selecteren om een .glb te exporteren.
Beperkingen
Animaties mogen niet langer zijn dan 20 minuten en mogen niet meer dan 36.000 keyframes bevatten (20 minuten bij 30 FPS). Bij het gebruik van morphing op doel gebaseerde animaties mag u bovendien niet meer dan 8192 morphing doel hoekpunten of minder overschrijden. Als u deze aantallen overschrijdt, wordt de asset met animatie niet ondersteund in de Windows Mixed Reality home.
Functie | Maximum |
---|---|
Duur | 20 minuten |
Hoofdframes | 36,000 |
Morph-doelhoeken | 8192 |
GlTF-implementatienotities
Windows MR biedt geen ondersteuning voor de geometrie van het spiegelen met behulp van negatieve schalen. Geometrie met negatieve schalen leidt waarschijnlijk tot visuele artefacten.
De glTF-asset MOET verwijzen naar de standaardscène met behulp van het scènekenmerk dat moet worden weergegeven door Windows MR. Daarnaast vereist het Windows MR glTF-laadprogramma vóór de update van Windows 10 april 2018 accessors:
- Moet de minimum- en maximumwaarden hebben.
- Het type SCALAR moet componentType UNSIGNED_SHORT (5123) of UNSIGNED_INT (5125) zijn.
- Type VEC2 en VEC3 moeten componentType FLOAT (5126) zijn.
De volgende materiaaleigenschappen worden gebruikt van de kern glTF 2.0-specificatie, maar niet vereist:
- baseColorFactor, metallicFactor, ruwheidFactor
- baseColorTexture: moet verwijzen naar een patroon dat is opgeslagen in dds.
- emissiveTexture: Moet verwijzen naar een patroon dat is opgeslagen in dds.
- emissiveFactor
- alphaMode
De volgende materiaaleigenschappen worden genegeerd op basis van de kernspecificaties:
- Alle multi-UVs
- metalRoughnessTexture: moet in plaats daarvan de door Microsoft geoptimaliseerde textuurverpakking gebruiken die hieronder is gedefinieerd
- normalTexture: moet in plaats daarvan een voor Microsoft geoptimaliseerde textuurverpakking gebruiken die hieronder is gedefinieerd
- normalScale
- occlusionTexture: moet in plaats daarvan de door Microsoft geoptimaliseerde patroonverpakking gebruiken die hieronder is gedefinieerd
- occlusionStrength
Windows MR biedt geen ondersteuning voor regels en punten in de primitieve modus.
Slechts één UV-hoekpuntkenmerk wordt ondersteund.
Meer bronnen
- glTF-exporteurs en conversieprogramma's
- glTF Toolkit
- glTF 2.0-specificatie
- Microsoft glTF LOD-extensiespecificatie
- Specificatie van pc-Mixed Reality textuurverpakkingsextensies
- HoloLens Mixed Reality Texture Packing Extensions Specification
- Specificatie van Microsoft DDS Textures glTF-extensies