Parameters voor modelconversie configureren
In dit artikel leert u hoe u parameters voor een modelconversie configureert.
Instellingen-bestand
Als een bestand met de naam <modelName>. Conversie Instellingen.json vindt u in de invoercontainer naast de modelnaam> van het invoermodel<.<ext>, dan wordt het bestand gebruikt om extra configuratie te bieden voor het modelconversieproces. Wanneer u bijvoorbeeld box.gltf converteert, gebruikt u box. Conversie Instellingen.json om parameters in te stellen voor de modelconversie.
De inhoud van het bestand met JSON-conversie-instellingen moet dit schema hebben:
{
"$schema" : "http://json-schema.org/schema#",
"description" : "ARR ConversionSettings Schema",
"type" : "object",
"definitions" :
{
"position_attribute" : {"type" : "string", "description" : "Destination format of the position attribute", "enum" : [ "32_32_32_FLOAT", "16_16_16_16_FLOAT" ]},
"color_attribute" : {"type" : "string", "description" : "Destination format of the color attribute", "enum" : [ "NONE", "8_8_8_8_UNSIGNED_NORMALIZED" ]},
"vector_attribute" : {"type" : "string", "description" : "Destination format of the normals, tangents and binormals attributes", "enum" : [ "NONE", "8_8_8_8_SIGNED_NORMALIZED", "16_16_16_16_FLOAT" ]},
"texcoord_attribute" : {"type" : "string", "description" : "Destination format of the texture coordinates attribute", "enum" : [ "NONE", "32_32_FLOAT", "16_16_FLOAT" ]}
},
"properties" :
{
"scaling" : { "type" : "number", "exclusiveMinimum" : 0, "default" : 1.0 },
"recenterToOrigin" : { "type" : "boolean", "default" : false },
"opaqueMaterialDefaultSidedness" : {" type" : "string", "enum" : [ "SingleSided", "DoubleSided" ], "default" : "DoubleSided" },
"material-override" : { "type" : "string", "default" : "" },
"gammaToLinearMaterial" : { "type" : "boolean", "default" : false },
"gammaToLinearVertex" : { "type" : "boolean", "default" : false },
"sceneGraphMode" : { "type" : "string", "enum" : [ "none", "static", "dynamic" ], "default" : "dynamic" },
"generateCollisionMesh" : { "type" : "boolean", "default" : true },
"unlitMaterials" : { "type" : "boolean", "default" : false },
"deduplicateMaterials" : {"type" : "boolean", "default" : true },
"fbxAssumeMetallic" : {"type" : "boolean", "default" : true },
"axis" : {
"type" : "array",
"items" : {
"type" : "string",
"enum" : [ "default", "+x", "-x", "+y", "-y", "+z", "-z" ]
},
"minItems" : 3,
"maxItems" : 3
},
"vertex" : {
"type" : "object",
"properties" : {
"position" : { "$ref" : "#/definitions/position_attribute" },
"color0" : { "$ref" : "#/definitions/color_attribute" },
"color1" : { "$ref" : "#/definitions/color_attribute" },
"normal" : { "$ref" : "#/definitions/vector_attribute" },
"tangent" : { "$ref" : "#/definitions/vector_attribute" },
"binormal" : { "$ref" : "#/definitions/vector_attribute" },
"texcoord0" : { "$ref" : "#/definitions/texcoord_attribute" },
"texcoord1" : { "$ref" : "#/definitions/texcoord_attribute" }
},
"additionalProperties" : false
},
"metadataKeys" : {
"type" : "array",
"items" : {
"type" : "string"
}
}
},
"additionalProperties" : false
}
Een doos. Conversie Instellingen.json-bestand kan er als volgt uitzien:
{
"scaling" : 0.01,
"recenterToOrigin" : true,
"material-override" : "box_materials_override.json"
}
Het schema voor het converteren van een driehoekige mesh en een puntwolk is identiek. Een puntcloudconversie maakt echter gebruik van een strikte subset van functies vergeleken met een driehoekige mesh-conversie.
Instellingen voor een driehoekig mesh
Wanneer u een driehoekig mesh converteert, zoals uit een .fbx-bestand , zijn alle parameters in het schemavoorbeeld dat in de vorige sectie wordt weergegeven, van invloed op het conversieresultaat. In de volgende secties krijgt u een gedetailleerde uitleg van de parameters.
Geometrieparameters
scaling
: Met deze parameter wordt een model uniform geschaald. Schalen kan worden gebruikt om een model te vergroten of verkleinen, bijvoorbeeld om een bouwmodel weer te geven op een tabeltop. Schalen is ook belangrijk wanneer een model wordt gedefinieerd in andere eenheden dan meters, omdat de rendering-engine meters verwacht. Als een model bijvoorbeeld in centimeters is gedefinieerd, wordt het model op de juiste grootte weergegeven door een schaal van 0,01 toe te passen. Sommige brongegevensindelingen (bijvoorbeeld .fbx-bestanden ) bieden een hint voor het schalen van eenheden. In dit geval schaalt de conversie het model impliciet naar metereenheden. De impliciete schaalaanpassing die door de bronindeling wordt geleverd, wordt toegepast boven op descaling
parameter. De laatste schaalfactor wordt toegepast op de geometriepunten en de lokale transformaties van de scènegrafiekknooppunten. De schaalaanpassing voor de transformatie van de hoofdentiteit blijft ongewijzigd.Belangrijk
Showcase en Quickstart kunnen eventuele conversietijdsschalen compenseren omdat ze elk een ingebouwde functie voor automatisch schalen hebben. Zie de gids voor probleemoplossing voor meer informatie.
recenterToOrigin
: Deze parameter geeft aan dat een model moet worden geconverteerd, zodat het begrenzingsvak is gecentreerd in de oorsprong. Als een bronmodel ver van de oorsprong wordt verplaatst, kunnen problemen met precisie van drijvende komma leiden tot renderingartefacten. Het centreren van het model kan in dit scenario helpen.opaqueMaterialDefaultSidedness
: De rendering-engine gaat ervan uit dat ondoorzichtige materialen dubbelzijdig zijn. Als deze aanname niet waar is voor een bepaald model, moet deze parameter worden ingesteld opSingleSided
. Zie Rendering met één zijde voor meer informatie.
Materiaalontdubbeling
deduplicateMaterials
: Met deze parameter wordt automatische ontdubbeling van materialen met dezelfde eigenschappen en patronen ingeschakeld of uitgeschakeld. Ontdubbeling vindt plaats nadat materiaaloverschrijvingen zijn verwerkt. Standaard is deze functionaliteit ingeschakeld.Als een model meer dan 65.535 materialen heeft, zelfs na ontdubbeling, probeert de service materialen met vergelijkbare eigenschappen samen te voegen. Als laatste optie worden alle materialen die de limiet overschrijden vervangen door een rood foutmateriaal.
In de volgende afbeelding ziet u twee kubussen van 68.921 gekleurde driehoeken. Het linkervoorbeeld is vóór ontdubbeling, met 68.921 kleurmaterialen. Het juiste voorbeeld is na ontdubbeling, met 64.000 kleurmaterialen. De limiet is 65.535 materialen. Zie limieten voor meer informatie over materiaallimieten.
Kleurruimteparameters
De rendering-engine verwacht dat kleurwaarden zich in lineaire ruimte bevindt. Als een model wordt gedefinieerd met behulp van gammaruimte, moeten de volgende opties worden ingesteld op true
:
gammaToLinearMaterial
: Materiaalkleuren converteren van gammaruimte naar lineaire ruimte.gammaToLinearVertex
: Converteer hoekpuntkleuren van gammaruimte naar lineaire ruimte.
Notitie
Voor FBX-, E57-, PLY-, LAS-, LAZ- en XYZ-bestandsindelingen zijn deze instellingen standaard ingesteld true
op. Voor alle andere bestandsindelingen is de standaardwaarde false
.
Scèneparameters
sceneGraphMode
: Definieert hoe de scènegrafiek in het bronbestand wordt geconverteerd.dynamic
(standaard): Alle objecten in het bestand worden weergegeven als entiteiten in de API en kunnen willekeurig worden getransformeerd en opnieuw worden gebruikt. Tijdens runtime is de knooppunthiërarchie identiek aan de structuur in het bronbestand.static
: Vergelijkbaar metdynamic
, maar objecten in de scènegrafiek kunnen tijdens runtime niet dynamisch worden gebruikt voor andere objecten. Voor dynamische modellen met veel bewegende onderdelen, zoals de explosieweergave, genereert dedynamic
optie een model dat efficiënter kan worden weergegeven, maarstatic
in de modus kunnen nog steeds afzonderlijke onderdeeltransformaties worden uitgevoerd. Als dynamische herhaling niet vereist is, is destatic
optie het meest geschikt voor modellen met veel afzonderlijke onderdelen.none
: De scènegrafiek wordt samengevouwen in één object.
Elke modus heeft verschillende runtimeprestaties. In dynamic
de modus worden de prestatiekosten lineair geschaald met het aantal entiteiten in de grafiek, zelfs wanneer er geen deel wordt verplaatst. Gebruik dynamic
de modus alleen wanneer het nodig is om veel delen of grote subgrafen tegelijk te verplaatsen. Een voorbeeld hiervan is animatie voor explosieweergave.
De static
modus exporteert ook de volledige scènegrafiek. Ruimtelijke query's retourneren afzonderlijke onderdelen en elk onderdeel kan worden gewijzigd via statusoverschrijvingen. Met deze modus is de runtime-overhead per object te verwaarlozen. Deze modus is ideaal voor grote scènes waarin u per objectinspectie en af en toe transformatiewijzigingen op afzonderlijke onderdelen nodig hebt, maar geen objectresarenatie.
De none
modus heeft de minste runtime-overhead en ook iets betere laadtijden. Inspectie of transformatie van afzonderlijke objecten is niet mogelijk in deze modus. Gebruiksvoorbeelden zijn bijvoorbeeld fotogrammetriemodellen die niet beginnen met een zinvolle scènegrafiek.
Fooi
Veel toepassingen laden meerdere modellen. U moet de conversieparameters voor elk model optimaliseren, afhankelijk van hoe u dit gaat gebruiken. Als u bijvoorbeeld het model van een auto wilt weergeven om de gebruiker in detail uit elkaar te halen en te inspecteren, moet u het eerst converteren met behulp van dynamic
de modus. Als u de auto echter ook in een omgeving met een showruimte wilt plaatsen, kunt u dat model converteren met behulp van sceneGraphMode
ingesteld op static
, of zelfs naar none
.
Fysicaparameters
generateCollisionMesh
: Als u ondersteuning nodig hebt voor ruimtelijke query's in een model, moet deze optie zijn ingeschakeld. Het genereren van aanvarings-mesh voegt geen extra conversietijd toe en verhoogt ook niet de grootte van het uitvoerbestand. De laadtijd en runtimekosten van een model met aanvaringsnetten zijn slechts onaangetekend hoger. U kunt deze vlag op de standaardwaarde (ingeschakeld) laten, tenzij u een specifieke reden hebt om een model uit te sluiten van ruimtelijke query's.
Niet-verlichte materialen
unlitMaterials
: Standaard worden met de conversie fysiek gebaseerde renderingmaterialen (PBR) gemaakt. Wanneer deze optie is ingesteld, behandelt het conversieprogramma in plaats daarvan alle materialen als kleurmaterialen. Als u gegevens hebt die al verlichting bevatten, zoals modellen die zijn gemaakt via fotogrammetrie, kunt u met deze optie snel de juiste conversie afdwingen voor alle materialen. U hoeft niet elk materiaal afzonderlijk te overschrijven.
Conversie van eerdere FBX-indelingen en Phong-materiaalmodellen
fbxAssumeMetallic
: Eerdere versies van de FBX-indeling definiëren hun materialen met behulp van een Phong-materiaalmodel. Het conversieproces moet afleiden hoe deze materialen zijn toegewezen aan het PBR-model van de renderer. Deze toewijzing werkt meestal goed, maar er kan een dubbelzinnigheid ontstaan wanneer een materiaal geen patronen, hoge speculaire waarden en een niet-grijze albedo-kleur heeft. In dit scenario moet de conversie kiezen tussen het prioriteren van de hoge speculaire waarden, het definiëren van een zeer reflecterend en metaalmateriaal waarbij de albedo-kleur verdwijnt of de albedo-kleur prioriteert door iets te definiëren, zoals in een glanzend kleurrijk plastic. Bij het conversieproces wordt standaard ervan uitgegaan dat zeer speculatieve waarden een metaalmateriaal impliceren in dubbelzinnige scenario's. U kunt deze parameter instellen opfalse
voor het tegenovergestelde effect.
Coördinaatsysteem negeren
axis
: Gebruik deze parameter om coördinaatsysteem-eenheidsvectoren te overschrijven. Standaardwaarden zijn["+x", "+y", "+z"]
. In theorie heeft de FBX-indeling een header waarin deze vectoren worden gedefinieerd en de conversie gebruikt die informatie om de scène te transformeren. De GLTF-indeling definieert ook een vast coördinaatsysteem. In de praktijk hebben sommige assets onjuiste informatie in hun header of zijn opgeslagen met behulp van een andere coördinaatsysteemconventie. Met deze optie kunt u het coördinaatsysteem overschrijven om te compenseren. Wissel bijvoorbeeld"axis" : ["+x", "+z", "-y"]
de Z-as en de Y-as uit en houdt systeemhandigheid bij elkaar door de richting van de Y-as om te draaien.
Metagegevens van knooppunten
metadataKeys
: Gebruik deze parameter om sleutels op te geven van metagegevenseigenschappen van knooppunten die u wilt behouden in het conversieresultaat. U kunt exacte sleutels of jokertekens opgeven. Jokertekens hebben de notatieABC*
en komen overeen met elke sleutel die begint metABC
. Ondersteunde typen metagegevenswaarden zijnbool
,int
enfloat
string
.Voor GLTF-bestanden zijn deze gegevens afkomstig van het extra-object op knooppunten. Voor FBX-bestanden zijn deze gegevens afkomstig van de
Properties70
gegevens opModel nodes
. Zie de documentatie voor uw 3D Asset Tool voor meer informatie.
Wanneer u een model laadt waarvoor metagegevens zijn ingeschakeld, kan de lijst met metagegevens van een specifieke entiteit worden opgehaald via de asynchrone QueryMetadataAsync-functie.
Hoekpuntindeling
Het is mogelijk om de hoekpuntindeling voor een mesh aan te passen om precisie te ruilen voor geheugenbesparing. Als uw model een lagere geheugenvoetafdruk heeft, kunt u grotere modellen laden of betere prestaties behalen. Afhankelijk van uw gegevens kan de verkeerde indeling echter een aanzienlijke invloed hebben op de renderingkwaliteit.
Let op
Het wijzigen van de hoekpuntindeling moet een laatste optie zijn wanneer modellen niet meer in het geheugen passen of wanneer u optimaliseert voor de best mogelijke prestaties. Wijzigingen kunnen eenvoudig renderingartefacten introduceren, zowel duidelijk als subtiel. Tenzij u weet waar u op moet letten, moet u de standaardwaarde niet wijzigen.
U kunt deze aanpassingen aanbrengen:
- Specifieke gegevensstromen expliciet opnemen of uitsluiten.
- Verlaag de nauwkeurigheid van gegevensstromen om de geheugenvoetafdruk te verminderen.
De volgende vertex
sectie in het JSON-bestand is optioneel. Voor elk gedeelte dat niet expliciet is opgegeven, valt de conversieservice terug op de standaardinstelling.
{
...
"vertex" : {
"position" : "32_32_32_FLOAT",
"color0" : "NONE",
"color1" : "NONE",
"normal" : "NONE",
"tangent" : "NONE",
"binormal" : "NONE",
"texcoord0" : "32_32_FLOAT",
"texcoord1" : "NONE"
},
...
}
Door een onderdeel af te NONE
dwingen, is het gegarandeerd dat de uitvoer-mesh niet over de respectieve stroom beschikt.
Onderdeelindelingen per hoekpuntstroom
In de volgende tabel worden indelingen beschreven die zijn toegestaan voor respectieve onderdelen:
Hoekpuntonderdeel | Ondersteunde indelingen | Gebruik in materialen |
---|---|---|
position |
32_32_32_FLOAT (standaard), 16_16_16_16_FLOAT |
Hoekpuntpositie. Moet altijd aanwezig zijn. |
color0 |
8_8_8_8_UNSIGNED_NORMALIZED (standaard), NONE |
Hoekpuntkleuren. Zie useVertexColor de eigenschap zowel in kleurmaterialen als PBR-materialen en vertexMix in kleurmaterialen. |
color1 |
8_8_8_8_UNSIGNED_NORMALIZED , NONE (standaard) |
Ongebruikte. Laat de standaardwaarde NONE staan. |
normal |
8_8_8_8_SIGNED_NORMALIZED (standaard), 16_16_16_16_FLOAT , NONE |
Gebruikt voor verlichting in PBR-materialen. |
tangent |
8_8_8_8_SIGNED_NORMALIZED (standaard), 16_16_16_16_FLOAT , NONE |
Wordt gebruikt voor verlichting met normale kaarten in PBR-materialen. |
binormal |
8_8_8_8_SIGNED_NORMALIZED (standaard), 16_16_16_16_FLOAT , NONE |
Wordt gebruikt voor verlichting met normale kaarten in PBR-materialen. |
texcoord0 |
32_32_FLOAT (standaard), 16_16_FLOAT , NONE |
Eerste sleuf met patrooncoördinaten. Afzonderlijke patronen zoals albedo en normale kaart kunnen sleuf 0 of 1 gebruiken, die is gedefinieerd in het bronbestand. |
texcoord1 |
32_32_FLOAT (standaard), 16_16_FLOAT , NONE |
Tweede sleuf met patrooncoördinaten. Afzonderlijke patronen zoals albedo en normale kaart kunnen sleuf 0 of 1 gebruiken, die is gedefinieerd in het bronbestand. |
Ondersteunde onderdeelindelingen
In de volgende tabel worden de geheugenvoetafdrukken van ondersteunde onderdeelindelingen beschreven:
Indeling | Omschrijving | Bytes per hoekpunt |
---|---|---|
32_32_FLOAT |
Volledige precisie van drijvende komma in twee onderdelen | 8 |
16_16_FLOAT |
Precisie van twee componenten met halve drijvende komma | 4 |
32_32_32_FLOAT |
Volledige precisie van drie componenten met drijvende komma | 12 |
16_16_16_16_FLOAT |
Precisie van vier componenten half zwevend komma | 8 |
8_8_8_8_UNSIGNED_NORMALIZED |
Byte met vier componenten, genormaliseerd tot het [0; 1] bereik |
4 |
8_8_8_8_SIGNED_NORMALIZED |
Byte met vier componenten, genormaliseerd tot het [-1; 1] bereik |
4 |
Aanbevolen procedures voor wijzigingen in onderdeelindeling
position
: Het is zeldzaam dat verminderde nauwkeurigheid voldoende is.16_16_16_16_FLOAT
introduceert merkbare kwantisatieartefacten, zelfs voor kleine modellen.normal
,tangent
enbinormal
: Normaal gesproken worden deze waarden samen gewijzigd. Tenzij er merkbare lichtartefacten zijn die het gevolg zijn van normale kwantisatie, is er geen reden om hun nauwkeurigheid te verhogen. In sommige gevallen kunnen deze onderdelen echter worden ingesteld opNONE
:normal
,tangent
enbinormal
zijn alleen nodig wanneer ten minste één materiaal in het model moet worden verlicht. In Azure Remote Rendering treedt dit scenario op wanneer op elk gewenst moment een PBR-materiaal op het model wordt gebruikt.tangent
enbinormal
zijn alleen nodig wanneer een van de verlichte materialen een normale kaarttextuur gebruikt.
texcoord0
entexcoord1
: patrooncoördinaten kunnen een verminderde nauwkeurigheid (16_16_FLOAT
) gebruiken wanneer hun waarden in het[0; 1]
bereik blijven en wanneer de geadresseerde patronen een maximale grootte hebben van 2048 × 2048 pixels. Als deze limieten worden overschreden, neemt de kwaliteit van patroontoewijzing af.
voorbeeld
Stel dat u een fotogrammetriemodel hebt dat verlichting in de patronen heeft gebakken. Alles wat nodig is om het model weer te geven, zijn hoekpuntposities en patrooncoördinaten.
Standaard moet het conversieprogramma ervan uitgaan dat u op een bepaald moment PBR-materialen op een model wilt gebruiken, zodat er gegevens voor u worden gegenereerd normal
en tangent
binormal
gegenereerd. Het geheugengebruik per hoekpunt is position
dus (12 bytes) + texcoord0
(8 bytes) + normal
(4 bytes) + tangent
(4 bytes) + (4 bytes) + binormal
(4 bytes) = 32 bytes. Grotere modellen van dit type kunnen eenvoudig vele miljoenen hoekpunten hebben, wat resulteert in modellen die meerdere gigabytes geheugen in beslag nemen. Dergelijke grote hoeveelheden gegevens zijn van invloed op de prestaties en u hebt mogelijk zelfs onvoldoende geheugen.
Als u weet dat u nooit dynamische belichting op het model nodig hebt en weet dat alle patrooncoördinaten zich in het [0; 1]
bereik bevinden, kunt u , tangent
en op NONE
, en binormal
instellen normal
texcoord0
op halve precisie (16_16_FLOAT
), wat resulteert in slechts 16 bytes per hoekpunt. Wanneer de mesh-gegevens in de helft worden gesneden, kunt u grotere modellen laden en worden de prestaties mogelijk verbeterd.
Instellingen voor puntwolken
Wanneer een puntwolk wordt geconverteerd, wordt slechts een kleine subset eigenschappen uit het schema gebruikt. Andere eigenschappen worden genegeerd, tenzij ze zijn opgegeven.
De eigenschappen die wel effect hebben op puntcloudconversie zijn:
scaling
: Dezelfde betekenis als voor driehoekige meshes.recenterToOrigin
: Dezelfde betekenis als voor driehoekige meshes.axis
: Dezelfde betekenis als voor driehoekige meshes. Standaardwaarden zijn["+x", "+y", "+z"]
, maar de meeste puntwolkgegevens worden geroteerd in vergelijking met het eigen coördinatensysteem van de renderer. Ter compensatie wordt in de meeste gevallen["+x", "+z", "-y"]
de draaiing opgelost.gammaToLinearVertex
: Vergelijkbaar met driehoekige meshes geeft deze vlag aan of puntkleuren moeten worden geconverteerd van gammaruimte naar lineaire ruimte. De standaardwaarde voor puntwolkindelingen (E57-, PLY-, LAS-, LAZ- en XYZ-bestanden) istrue
.generateCollisionMesh
: Vergelijkbaar met driehoekige meshes, om ruimtelijke query's te ondersteunen, moet u deze vlag inschakelen.
Geheugenoptimalisaties
Geheugenverbruik van geladen inhoud kan een knelpunt worden in het renderingsysteem. Als de nettolading van het geheugen te groot wordt, kan dit de renderingprestaties beïnvloeden of ertoe leiden dat het model niet helemaal wordt geladen. In deze alinea worden enkele belangrijke strategieën besproken om de geheugenvoetafdruk te verminderen.
Notitie
De volgende optimalisaties zijn van toepassing op driehoekige meshes. U kunt de uitvoer van puntwolken niet optimaliseren door conversie-instellingen te configureren.
Instantiëren
Instancing worden meshes hergebruikt voor onderdelen die verschillende ruimtelijke transformaties hebben in plaats van elk onderdeel dat verwijst naar een eigen unieke geometrie. Instancing heeft een aanzienlijke invloed op de geheugenvoetafdruk.
Voorbeeldgebruiksvoorbeelden voor instancing zijn de schroeven in een motormodel of stoelen in een architectuurmodel.
Notitie
Instancing kan het geheugenverbruik (en dus laadtijden) aanzienlijk verbeteren, maar de verbeteringen in de renderingprestaties zijn onbelangrijk.
De conversieservice respecteert het instancing als onderdelen dienovereenkomstig worden gemarkeerd in het bronbestand. Conversie voert echter geen extra, grondige analyse van mesh-gegevens uit om herbruikbare onderdelen te identificeren. Het hulpprogramma voor het maken van inhoud en de exportpijplijn zijn de beslissende criteria voor de juiste instellingen voor het indelen van de inhoud.
Een eenvoudige manier om te testen of instancing-informatie behouden blijft tijdens de conversie, is om de uitvoerstatistieken te bekijken. Controleer met name de numMeshPartsInstanced
waarde. Als de waarde numMeshPartsInstanced
groter is dan nul, worden meshes gedeeld tussen exemplaren.
Voorbeeld: Instelling voor instancing in 3ds Max
Autodesk 3ds Max heeft verschillende objectklonenmodi met de naam Copy, Instance en Reference. De modi werken anders voor het instancing in het geëxporteerde .fbx-bestand .
- Kopiëren: In deze modus wordt de mesh gekloond, dus er wordt geen instancering gebruikt ( =
numMeshPartsInstanced
0
). - Instantie: De twee objecten delen hetzelfde mesh, dus instancing wordt gebruikt ( =
numMeshPartsInstanced
1
). - Referentie: Verschillende modifiers kunnen worden toegepast op de geometrieën, dus de exporteur kiest een conservatieve benadering en gebruikt geen instancing ( =
numMeshPartsInstanced
0
).
Samenstellingsmodus op basis van diepte
Als geheugen een probleem is, configureert u de renderer met behulp van de samenstellingsmodus op basis van diepte. In deze modus wordt gpu-nettolading verdeeld over meerdere GPU's.
Hoekpuntgrootte verkleinen
Zoals besproken in best practices voor wijzigingen in onderdelenindelingen, kan het aanpassen van de hoekpuntindeling de geheugenvoetafdruk verminderen. Deze optie moet echter de laatste optie zijn die u kiest.
Patroongrootten
Afhankelijk van het type scenario kan de hoeveelheid textuurgegevens opwegen tegen het geheugen dat wordt gebruikt voor mesh-gegevens. Fotogrammetriemodellen zijn kandidaten. De conversieconfiguratie biedt geen manier om patronen automatisch omlaag te schalen. Indien nodig moet het schalen van patronen worden uitgevoerd als een voorverwerkingsstap aan de clientzijde. Maar de conversiestap kiest wel een geschikte textuurcompressie-indeling:
- BC1-bestandsindeling voor ondoorzichtige kleurtextuur
- BC7-bestandsindeling voor bronkleurpatroon met alfakanaal
Omdat de BC7-bestandsindeling tweemaal de geheugenvoetafdruk van de BC1-bestandsindeling heeft, is het belangrijk om ervoor te zorgen dat de invoertextuur geen onnodig alfakanaal biedt.
Typische gebruiksvoorbeelden
Het vinden van goede importinstellingen voor een specifieke use case kan een tijdrovend proces zijn. Aan de andere kant kunnen conversie-instellingen een aanzienlijke invloed hebben op runtimeprestaties.
Sommige specifieke gebruiksvoorbeelden komen in aanmerking voor specifieke optimalisaties. In de volgende secties worden enkele voorbeelden beschreven.
Use case: Architectuurvisualisatie of grote buitenkaarten
Houd rekening met de volgende factoren voor scenario's die betrekking hebben op architectuurvisualisatie of grote buitenkaarten:
Deze typen scènes zijn meestal statisch. Ze hebben geen beweegbare onderdelen nodig. Daarom kunt u instellen
sceneGraphMode
opstatic
, of zelfs opnone
, en de runtimeprestaties verbeteren. Instatic
de modus kan het hoofdknooppunt van de scène nog steeds worden verplaatst, gedraaid en geschaald. Het kan bijvoorbeeld dynamisch schakelen tussen 1:1-schaal (voor eerste persoonsweergave) en een tabelweergave.Als de toepassing geen knipvlakken gebruikt, moet de
opaqueMaterialDefaultSidedness
vlag worden uitgeschakeld. De prestatiewinst is doorgaans 20 procent tot 30 procent. U kunt nog steeds knipvlakken gebruiken, maar er is geen ruggezicht wanneer u naar het binnenste deel van een object kijkt, wat contra-intuïtief lijkt. Zie rendering met één zijde voor meer informatie.
Use case: Photogrammetry models
Wanneer u fotogrammetriemodellen weergeeft, hebt u doorgaans geen scènegrafiek nodig. In dit scenario kunt u instellen sceneGraphMode
none
op . Omdat deze modellen zelden een complexe scènegrafiek bevatten, is het effect van het kiezen van deze optie waarschijnlijk onbelangrijk. Omdat verlichting al in de patronen is gebakken, is er geen dynamische verlichting nodig. In dit scenario geldt het volgende:
- Stel de
unlitMaterials
vlag in omtrue
alle materialen om te zetten in niet-verlichte kleurmaterialen. - Verwijder overbodige gegevens uit de hoekpuntindeling. Zie het eerdere voorbeeld.
Use case: Visualisatie van compacte machines en anderen
In deze gebruiksvoorbeelden hebben de modellen vaak een hoge mate van detail in een klein volume. De renderer is zwaar geoptimaliseerd om deze gevallen goed te verwerken. De meeste optimalisaties die in de eerdere use case worden beschreven, zijn hier echter niet van toepassing. De optimalisaties omvatten:
- Afzonderlijke onderdelen moeten selecteerbaar en beweegbaar zijn, dus
sceneGraphMode
moeten worden ingesteld opdynamic
. - Ray-casts zijn doorgaans een integraal onderdeel van de toepassing, dus botsingsnetten moeten worden gegenereerd.
- Knipvlakken zien er beter uit wanneer de
opaqueMaterialDefaultSidedness
vlag is ingeschakeld.
Afgeschafte functies
Het instellen van parameters voor modelconversie met behulp van de niet-modelspecifieke conversie Instellingen.json-bestandsnaam wordt nog steeds ondersteund, maar is afgeschaft. Gebruik in plaats daarvan het modelspecifieke <modelName>. Conversie Instellingen.json-bestandsnaam.
Het gebruik van een material-override
instelling om een materiaaloverschrijvend bestand in het bestand met conversie-instellingen te identificeren, wordt nog steeds ondersteund, maar wordt afgeschaft. Gebruik in plaats daarvan de modelspecifieke <modelName>. MaterialOverrides.json bestandsnaam.