Delen via


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 de scaling 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 op SingleSided. 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.

Screenshot that shows two cubes of 68,921 colored triangles and the effect of deduplication.

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 met dynamic, 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 de dynamic optie een model dat efficiënter kan worden weergegeven, maar static in de modus kunnen nog steeds afzonderlijke onderdeeltransformaties worden uitgevoerd. Als dynamische herhaling niet vereist is, is de static 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 op false 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 notatie ABC* en komen overeen met elke sleutel die begint met ABC. Ondersteunde typen metagegevenswaarden zijn bool, inten floatstring.

    Voor GLTF-bestanden zijn deze gegevens afkomstig van het extra-object op knooppunten. Voor FBX-bestanden zijn deze gegevens afkomstig van de Properties70 gegevens op Model 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 NONEdwingen, 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 NONEstaan.
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, tangenten binormal: 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 op NONE:
    • normal, tangenten binormal 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 en binormal zijn alleen nodig wanneer een van de verlichte materialen een normale kaarttextuur gebruikt.
  • texcoord0 en texcoord1 : 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 normalen tangentbinormal 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 , tangenten op NONE, en binormal instellen normaltexcoord0 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) is true.
  • 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 .

Screenshot that shows an example of cloning an object by using Autodesk 3ds Max.

  • Kopiëren: In deze modus wordt de mesh gekloond, dus er wordt geen instancering gebruikt ( = numMeshPartsInstanced0).
  • Instantie: De twee objecten delen hetzelfde mesh, dus instancing wordt gebruikt ( = numMeshPartsInstanced1).
  • Referentie: Verschillende modifiers kunnen worden toegepast op de geometrieën, dus de exporteur kiest een conservatieve benadering en gebruikt geen instancing ( = numMeshPartsInstanced0).

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 op static, of zelfs op none, en de runtimeprestaties verbeteren. In static 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 noneop . 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 om true 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 op dynamic.
  • 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.

Volgende stappen