Sdílet prostřednictvím


Konfigurace parametrů převodu modelu

V tomto článku se dozvíte, jak nakonfigurovat parametry pro převod modelu.

Soubor nastavení

Pokud se soubor nazývá <modelName>. ConversionSettings.json se nachází ve vstupním kontejneru vedle názvu modelu vstupního modelu.>< <ext>, pak se soubor použije k poskytnutí další konfigurace pro proces převodu modelu. Například při převodu box.gltf byste použili pole. ConversionSettings.json nastavit parametry pro převod modelu.

Obsah souboru nastavení převodu JSON by měl mít toto schéma:

{
    "$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
}

Krabice . soubor ConversionSettings.json může vypadat jako v tomto příkladu:

{
    "scaling" : 0.01,
    "recenterToOrigin" : true,
    "material-override" : "box_materials_override.json"
}

Schéma pro převod trojúhelníkové sítě a bodového cloudu je stejné. Převod bodového cloudu však používá striktní podmnožinu funkcí ve srovnání s převodem trojúhelníkové sítě.

Nastavení trojúhelníkové mřížky

Při převodu trojúhelníkové sítě, například ze souboru .fbx , všechny parametry v příkladu schématu zobrazeném v předchozí části ovlivňují výsledek převodu. V dalších částech najdete podrobné vysvětlení parametrů.

Parametry geometrie

  • scaling: Tento parametr rovnoměrně škáluje model. Škálování se dá použít k zvětšení nebo zmenšení modelu, například k zobrazení modelu budovy v horní části tabulky. Škálování je důležité také v případech, kdy je model definován v jiných jednotkách než v metrech, protože vykreslovací modul očekává měřiče. Pokud je například model definován v centimetrech, pak použití měřítka 0,01 vykreslí model ve správné velikosti. Některé formáty zdrojových dat (například soubory .fbx ) poskytují nápovědu ke škálování jednotek. V tomto případě převod implicitně škáluje model na jednotky měřiče. Implicitní škálování poskytované zdrojovým formátem se použije nad parametrem scaling . Konečný faktor měřítka se použije na vrcholy geometrie a místní transformace uzlů grafu scény. Škálování transformace kořenové entity zůstává nezměněné.

    Důležité

    Prezentace a rychlý start můžou kompenzovat jakékoli škálování v době převodu, protože každá z nich má integrovanou funkci automatického škálování. Další informace najdete v průvodci odstraňováním potíží.

  • recenterToOrigin: Tento parametr uvádí, že model by měl být převeden tak, aby jeho ohraničující rámeček byl na střed na počátku. Pokud je zdrojový model přesunut daleko od původu, můžou problémy s přesností s plovoucí desetinnou čárkou způsobit vykreslování artefaktů. V tomto scénáři vám může pomoct zacentrování modelu.

  • opaqueMaterialDefaultSidedness: Vykreslovací modul předpokládá, že neprůhlené materiály jsou oboustranné. Pokud tento předpoklad neplatí pro konkrétní model, měl by být tento parametr nastaven na SingleSidedhodnotu . Další informace najdete v tématu Jednostranné vykreslování.

Odstranění duplicitních dat materiálu

  • deduplicateMaterials: Tento parametr povolí nebo zakáže automatické odstranění duplicit materiálů, které sdílejí stejné vlastnosti a textury. Odstranění duplicitních dat probíhá po zpracování přepsání materiálu. Ve výchozím nastavení je zapnuté.

  • Pokud má model více než 65 535 materiálů i po odstranění duplicit, služba se pokusí sloučit materiály, které mají podobné vlastnosti. Jako poslední možnost se všechny materiály, které překročí limit, nahradí červeným chybovým materiálem.

Následující obrázek znázorňuje dvě datové krychle 68 921 barevných trojúhelníků. Levý příklad je před odstraněním duplicit s barevnými materiály 68 921. Správný příklad je po odstranění duplicit s 64 000 barevnými materiály. Limit je 65 535 materiálů. Další informace o omezeních materiálu najdete v tématu limity.

Snímek obrazovky znázorňující dvě datové krychle se 68 921 barevnými trojúhelníky a efektem odstranění duplicit

Parametry barevného prostoru

Vykreslovací modul očekává, že hodnoty barev budou v lineárním prostoru. Pokud je model definován pomocí gama prostoru, měly by být nastaveny truenásledující možnosti:

  • gammaToLinearMaterial: Převede barvy materiálu z gama prostoru na lineární prostor.
  • gammaToLinearVertex: Převeďte barvy vrcholů z gama prostoru na lineární prostor.

Poznámka:

Pro formáty souborů FBX, E57, PLY, LAS, LAZ a XYZ jsou tato nastavení ve výchozím nastavení nastavená true . Ve všech ostatních formátech souborů je falsevýchozí hodnota .

Parametry scény

  • sceneGraphMode: Definuje způsob převodu grafu scény ve zdrojovém souboru.
    • dynamic (výchozí): Všechny objekty v souboru jsou vystaveny jako entity v rozhraní API a lze je libovolně transformovat a znovu načíst. V době běhu je hierarchie uzlů stejná jako struktura ve zdrojovém souboru.
    • static: Podobně jako dynamicobjekty v grafu scény se nedají dynamicky převést na jiné objekty za běhu. U dynamických modelů, které mají mnoho pohyblivých částí, jako je například zobrazení exploze, vygeneruje dynamic možnost model, který je efektivnější k vykreslení, ale static režim stále umožňuje transformace jednotlivých částí. Pokud dynamické opakování není povinné, je tato možnost nejvhodnější pro modely, static které mají mnoho jednotlivých částí.
    • none: Graf scény je sbalený do jednoho objektu.

Každý režim má jiný výkon modulu runtime. V dynamic režimu se náklady na výkon škálují lineárně s počtem entit v grafu, i když se nepřesune žádná část. Režim používejte dynamic pouze v případě, že je nutné současně přesouvat mnoho částí nebo velkých podgrafů. Příkladem je animace zobrazení explozí.

Režim static také exportuje graf celé scény. Prostorové dotazy vracejí jednotlivé části a jednotlivé části je možné upravit prostřednictvím přepsání stavu. V tomto režimu je režie za běhu na objekt zanedbatelná. Tento režim je ideální pro velké scény, ve kterých potřebujete kontrolu jednotlivých objektů a občasné změny transformace jednotlivých částí, ale žádné opakování objektu.

Režim none má nejmenší režii za běhu a také mírně lepší dobu načítání. Kontrola nebo transformace jednotlivých objektů není v tomto režimu možná. Případy použití jsou například modely fotogrammetrie, které nezačínají smysluplným grafem scény.

Tip

Mnoho aplikací načítá více modelů. Parametry převodu byste měli optimalizovat pro každý model podle toho, jak ho budete používat. Pokud například chcete zobrazit model auta, který má uživatel podrobně rozebrat a zkontrolovat, nejprve ho převeďte pomocí dynamic režimu. Pokud ale také chcete umístit auto do prostředí show room, můžete tento model převést pomocí sceneGraphMode nastaveného nebo staticdokonce i na none.

Parametry fyziky

  • generateCollisionMesh: Pokud potřebujete podporu prostorových dotazů v modelu, musí být tato možnost povolená. Generování kolizí sítě nepřidá další čas převodu a nezvětší také velikost výstupního souboru. Doba načítání a náklady na běh modelu, který má kolizní sítě, jsou pouze nepatrně vyšší. Tento příznak můžete ponechat na výchozí (povolené), pokud nemáte konkrétní důvod vyloučit model z prostorových dotazů.

Nesvícené materiály

  • unlitMaterials: Ve výchozím nastavení převod vytváří fyzicky založené materiály pro vykreslování (PBR). Pokud je tato možnost nastavena, převaděč místo toho považuje všechny materiály za barevné materiály. Pokud máte data, která už obsahují osvětlení, jako jsou modely vytvořené prostřednictvím fotogrammetrie, tato možnost umožňuje rychle vynutit správný převod pro všechny materiály. Jednotlivé materiály nebudete muset přepsat jednotlivě.

Převod z dřívějších formátů FBX a modelů materiálu Phong

  • fbxAssumeMetallic: Starší verze formátu FBX definují své materiály pomocí modelu materiálu Phong. Proces převodu musí odvodit, jak se tyto materiály mapují na model PBR rendereru. Toto mapování obvykle funguje dobře, ale nejednoznačnost může nastat, když materiál nemá žádné textury, vysoké specifikární hodnoty a nešedlou albedo barvu. V tomto scénáři musí převod zvolit mezi stanovením priority vysokých specifikátorů, definování vysoce reflexního a kovového materiálu, kde se barva albedo rozpustí, nebo stanovení priority barvy albedo definováním něčeho, jako v lesklém barevném plastu. Ve výchozím nastavení proces převodu předpokládá, že vysoce specifikované hodnoty znamenají kovový materiál v nejednoznačných scénářích. Tento parametr můžete nastavit na false opačný efekt.

Přepsání souřadnicového systému

  • axis: Tento parametr použijte k přepsání vektorů jednotek souřadnicového systému. Výchozí hodnoty jsou ["+x", "+y", "+z"]. V teorii má formát FBX hlavičku, ve které jsou tyto vektory definovány, a převod používá tyto informace k transformaci scény. Formát GLTF také definuje pevný souřadnicový systém. V praxi některé prostředky mají v hlavičce nesprávné informace nebo byly uloženy pomocí jiné konvence souřadnicového systému. Tato možnost umožňuje přepsat souřadnicový systém tak, aby kompenzuje. "axis" : ["+x", "+z", "-y"] Například vymění osu Z a osu Y a udržuje směr osy Y invertováním směru osy Y.

Metadata uzlu

  • metadataKeys: Tento parametr použijte k určení klíčů vlastností metadat uzlu, které chcete zachovat ve výsledku převodu. Můžete zadat přesné klíče nebo zástupné kóty. Zástupné klávesy jsou ve formátu ABC* a odpovídají libovolnému klíči, který začíná ABC. Podporované typy hodnot metadat jsou bool, int, float, a string.

    U souborů GLTF pocházejí tato data z objektu extra na uzlech. Pro soubory FBX tato data pocházejí z Properties70 dat na Model nodes. Další informace najdete v dokumentaci k nástroji 3D Asset Tool.

Při načítání modelu s povolenými meta daty je možné načíst seznam položek meta dat konkrétní entity prostřednictvím asynchronní funkce QueryMetadataAsync.

Formát vrcholů

Formát vrcholu je možné upravit tak, aby síť obchoduje s přesností pro úspory paměti. Pokud má váš model nižší nároky na paměť, můžete načíst větší modely nebo dosáhnout lepšího výkonu. V závislosti na datech ale může nesprávný formát výrazně ovlivnit kvalitu vykreslování.

Upozornění

Změna formátu vrcholu by měla být poslední možností, pokud se modely už nevejdou do paměti nebo když optimalizujete nejlepší možný výkon. Změny můžou snadno zavádět vykreslovací artefakty, a to jak zřejmé, tak drobné. Pokud nevíte, co byste měli hledat, neměli byste výchozí nastavení měnit.

Můžete provést tyto úpravy:

  • Explicitně zahrňte nebo vylučte konkrétní datové proudy.
  • Snižte přesnost datových proudů, abyste snížili nároky na paměť.

Následující vertex část v souboru JSON je volitelná. Pro každou část, která není explicitně zadaná, se služba převodu vrátí do výchozího nastavení.

{
    ...
    "vertex" : {
        "position"  : "32_32_32_FLOAT",
        "color0"    : "NONE",
        "color1"    : "NONE",
        "normal"    : "NONE",
        "tangent"   : "NONE",
        "binormal"  : "NONE",
        "texcoord0" : "32_32_FLOAT",
        "texcoord1" : "NONE"
    },
    ...
}

Vynucením komponenty , NONEje zaručeno, že výstupní síť nemá odpovídající datový proud.

Formáty komponent na datový proud vrcholu

Následující tabulka popisuje formáty, které jsou povoleny pro příslušné komponenty:

Komponenta vrcholu Podporované formáty Použití v materiálech
position 32_32_32_FLOAT(výchozí),16_16_16_16_FLOAT Pozice vrcholu. Musí být vždy přítomna.
color0 8_8_8_8_UNSIGNED_NORMALIZED(výchozí),NONE Barvy vrcholů. Zobrazit useVertexColor vlastnost v barevných materiálech i materiálech PBR a vertexMix v barevných materiálech.
color1 8_8_8_8_UNSIGNED_NORMALIZED, NONE (výchozí) Nepoužívá se. Ponechte výchozí hodnotu NONE.
normal 8_8_8_8_SIGNED_NORMALIZED(výchozí), 16_16_16_16_FLOAT,NONE Používá se pro osvětlení v materiálech PBR.
tangent 8_8_8_8_SIGNED_NORMALIZED(výchozí), 16_16_16_16_FLOAT,NONE Používá se pro osvětlení s normálními mapami v materiálech PBR.
binormal 8_8_8_8_SIGNED_NORMALIZED(výchozí), 16_16_16_16_FLOAT,NONE Používá se pro osvětlení s normálními mapami v materiálech PBR.
texcoord0 32_32_FLOAT(výchozí), 16_16_FLOAT,NONE První slot souřadnic textury. Jednotlivé textury, jako je albedo a normální mapa, mohou buď použít slot 0 nebo 1, který je definován ve zdrojovém souboru.
texcoord1 32_32_FLOAT(výchozí), 16_16_FLOAT,NONE Druhý slot souřadnic textury. Jednotlivé textury, jako je albedo a normální mapa, mohou buď použít slot 0 nebo 1, který je definován ve zdrojovém souboru.

Podporované formáty komponent

Následující tabulka popisuje využití paměti podporovaných formátů komponent:

Formát Popis Bajty na vrchol
32_32_FLOAT Dvousložková plná přesnost s plovoucí desetinnou čárkou 8
16_16_FLOAT Dvousložková přesnost s plovoucí desetinnou čárkou 4
32_32_32_FLOAT Přesnost s plovoucí desetinnou čárkou se třemi součástmi 12
16_16_16_16_FLOAT Přesnost s plovoucí desetinnou čárkou ve čtyřech součástech 8
8_8_8_8_UNSIGNED_NORMALIZED Čtyřsložkové bajty normalizované do rozsahu [0; 1] 4
8_8_8_8_SIGNED_NORMALIZED Čtyřsložkové bajty normalizované do rozsahu [-1; 1] 4

Osvědčené postupy pro změny formátu součástí

  • position: Je vzácné, že je dostatečná nižší přesnost. 16_16_16_16_FLOAT představuje znatelné kvantizační artefakty, a to i u malých modelů.
  • normal, tangenta binormal: Obvykle se tyto hodnoty mění společně. Pokud nejsou viditelné světelné artefakty, které jsou výsledkem normálního kvantování, není důvod zvýšit jejich přesnost. V některých případech ale mohou být tyto komponenty nastaveny na NONE:
    • normal, tangenta binormal jsou potřeba pouze tehdy, pokud by měl být v modelu lit alespoň jeden materiál. V Azure Remote Renderingu k tomuto scénáři dochází v případě, že se v modelu používá materiál PBR kdykoli.
    • tangent a binormal jsou potřeba pouze tehdy, když některý z litých materiálů používá normální texturu mapy.
  • texcoord0 a texcoord1 : Souřadnice textury můžou použít nižší přesnost (16_16_FLOAT), když jejich hodnoty zůstanou v [0; 1] rozsahu a když mají adresované textury maximální velikost 2 048 × 2 048 pixelů. Pokud dojde k překročení těchto limitů, sníží se kvalita mapování textury.

Příklad

Předpokládejme, že máte model fotogrammetrie, který má osvětlení pečené do textur. Vše, co je potřeba k vykreslení modelu, jsou pozice vrcholu a souřadnice textury.

Ve výchozím nastavení převaděč musí předpokládat, že byste mohli chtít použít PBR materiály na modelu v určitém okamžiku, takže generuje normal, tangenta binormal data za vás. Využití paměti pro každý vrchol je position tedy (12 bajtů) + texcoord0 (8 bajtů) + normal (4 bajty) + tangent (4 bajty) + (4 bajty) + binormal (4 bajty) = 32 bajtů. Větší modely tohoto typu můžou mít snadno mnoho milionů vrcholů, což vede k modelům, které můžou zabírat více gigabajtů paměti. Takové velké objemy dat mají vliv na výkon a může dojít dokonce k nedostatku paměti.

Znalost, že v modelu nikdy nepotřebujete dynamické osvětlení a víte, že všechny souřadnice textury jsou v [0; 1] rozsahu, můžete nastavit normal, tangenta na NONEa binormal nastavit texcoord0 na poloviční přesnost (16_16_FLOAT), což vede pouze k 16 bajtům na vrchol. Když se data sítě sníží na polovinu, můžete načíst větší modely a výkon se potenciálně zlepší.

Nastavení pro bodové cloudy

Při převodu mračna bodu se použije pouze malá podmnožina vlastností ze schématu. Jiné vlastnosti se ignorují, pokud nejsou zadané.

Vlastnosti, které mají vliv na převod typu bodový cloud, jsou:

  • scaling: Stejný význam jako u trojúhelníkových ok.
  • recenterToOrigin: Stejný význam jako u trojúhelníkových ok.
  • axis: Stejný význam jako u trojúhelníkových ok. Výchozí hodnoty jsou ["+x", "+y", "+z"], ale většina bodových cloudových dat se v porovnání s vlastním souřadnicovým systémem rendereru otočí. Ke kompenzaci ve většině případů ["+x", "+z", "-y"] se rotace opravuje.
  • gammaToLinearVertex: Podobně jako trojúhelníkové mřížky označuje tento příznak, zda mají být barvy bodů převedeny z gama prostoru na lineární prostor. Výchozí hodnota pro formáty cloudových bodů (E57, PLY, LAS, LAZ a XYZ) je true.
  • generateCollisionMesh: Podobně jako u trojúhelníkových sítí je nutné povolit tento příznak pro podporu prostorových dotazů.

Optimalizace paměti

Využití paměti načteného obsahu může být kritickým bodem v systému vykreslování. Pokud je datová část paměti příliš velká, může ohrozit výkon vykreslování nebo způsobit, že se model nenačte úplně. Tento odstavec popisuje některé důležité strategie, jak snížit nároky na paměť.

Poznámka:

Následující optimalizace platí pro trojúhelníkové sítě. Pomocí konfigurace nastavení převodu nemůžete optimalizovat výstup cloudů bodů.

Vytváření instancí

V instanci se sítě znovu používají pro části, které mají jedinečné prostorové transformace místo každé části odkazující na vlastní jedinečnou geometrii. Vytváření instancí má významný dopad na využití paměti.

Příklady případů použití pro vytváření instancí jsou šrouby v modelu motoru nebo židle v architektonickém modelu.

Poznámka:

Vytváření instancí může výrazně zlepšit spotřebu paměti (a tím dobu načítání), ale vylepšení výkonu vykreslování jsou nevýznamná.

Služba převodu respektuje instanci, pokud jsou části v zdrojovém souboru odpovídajícím způsobem označené. Převod ale neprovádí další hloubkovou analýzu dat sítě za účelem identifikace opakovaně použitelných částí. Nástroj pro vytváření obsahu a jeho kanál exportu jsou rozhodujícími kritérii pro správné nastavení vytváření instancí.

Jednoduchý způsob, jak otestovat, jestli se během převodu zachovají informace o instanci, je podívat se na výstupní statistiku. Konkrétně zkontrolujte numMeshPartsInstanced hodnotu. Pokud je hodnota numMeshPartsInstanced větší než nula, jsou sítě sdíleny napříč instancemi.

Příklad: Nastavení vytváření instancí v 3ds Max

Autodesk 3ds Max má odlišné režimy klonování objektů s názvem Copy, Instance a Reference. Režimy fungují pro vytváření instancí v exportovaného souboru .fbx odlišně.

Snímek obrazovky znázorňující příklad klonování objektu pomocí aplikace Autodesk 3ds Max

  • Kopírování: V tomto režimu se síť naklonuje, takže se nepoužívá žádná instance ( = numMeshPartsInstanced0).
  • Instance: Dva objekty sdílejí stejnou síť, takže se použije instanceng ( = numMeshPartsInstanced1).
  • Odkaz: U geometrií lze použít odlišné modifikátory, takže vývozce zvolí konzervativní přístup a nepoužívá instanci ( = numMeshPartsInstanced0).

Režim složení na základě hloubky

Pokud jde o paměť, nakonfigurujte renderer pomocí režimu složení založeného na hloubkách. V tomto režimu se datová část GPU distribuuje napříč několika gpu.

Zmenšení velikosti vrcholů

Jak je popsáno v osvědčených postupech pro změny formátu komponent, úprava formátu vrcholu může snížit nároky na paměť. Tato možnost by ale měla být poslední možností, kterou zvolíte.

Velikosti textury

V závislosti na typu scénáře může množství dat textury převažovat nad pamětí používanou pro data sítě. Modely fotogrammetrie jsou kandidáti. Konfigurace převodu neposkytuje způsob, jak automaticky snížit kapacitu textur. V případě potřeby je nutné provést škálování textury jako krok předběžného zpracování na straně klienta. Ale krok převodu zvolí vhodný formát komprese textury:

  • Formát souboru BC1 pro neprůsvitné barevné textury
  • Formát souboru BC7 pro textury zdrojové barvy s alfa kanálem

Vzhledem k tomu, že formát souboru BC7 má dvojnásobnou paměťovou stopu formátu souboru BC1, je důležité zajistit, aby vstupní textury nezadály nepotřebný alfa kanál.

Typické případy použití

Hledání vhodných nastavení importu pro konkrétní případ použití může být zdlouhavý proces. Na druhou stranu nastavení převodu může mít významný vliv na výkon modulu runtime.

Některé konkrétní třídy případů použití mají nárok na konkrétní optimalizace. Některé příklady jsou popsané v následujících částech.

Případ použití: Vizualizace architektury nebo velké venkovní mapy

V případě scénářů, které zahrnují vizualizaci architektury nebo velké venkovní mapy, zvažte následující faktory:

  • Tyto typy scén jsou obvykle statické. Nepotřebují pohyblivé části. Podle toho můžete nastavit sceneGraphMode static(nebo dokonce i na none) a zlepšit výkon modulu runtime. V static režimu je možné kořenový uzel scény stále přesouvat, otáčet a škálovat. Může například dynamicky přepínat mezi měřítkem 1:1 (pro zobrazení první osoby) a zobrazením v horní tabulce.

  • Pokud aplikace nepoužívá roviny řezů, opaqueMaterialDefaultSidedness měl by být příznak vypnutý. Zvýšení výkonu obvykle činí 20 až 30 procent. I tak můžete použít roviny řezů, ale při pohledu na vnitřní část objektu, která vypadá jako neintuitivní, nebude k dispozici zadní tvář. Další informace najdete v tématu jednostranné vykreslování.

Případ použití: Modely photogrammetry

Při vykreslování modelů fotogrammetrie obvykle nepotřebujete graf scény. V tomto scénáři se můžete rozhodnout nastavit sceneGraphMode na nonehodnotu . Vzhledem k tomu, že tyto modely zřídka obsahují složitý graf scény, je efekt výběru této možnosti pravděpodobně nevýznamný. Vzhledem k tomu, že osvětlení je již upečeno do textur, není potřeba žádné dynamické osvětlení. V tomto scénáři:

  • unlitMaterials Nastavte příznak tak, aby true se všechny materiály přeměnily na nesvícené barevné materiály.
  • Odeberte nepotřebná data z formátu vrcholu. Podívejte se na předchozí příklad.

Případ použití: Vizualizace kompaktních počítačů a dalších

V těchto případech použití mají modely často vysoký stupeň podrobností v malém objemu. Renderer je silně optimalizovaný pro zpracování těchto případů. Většina optimalizací popsaných v předchozím případě použití se zde ale nevztahuje. Mezi optimalizace patří:

  • Jednotlivé části by měly být vybratelné a pohyblivé, takže sceneGraphMode musí být nastaveny na dynamic.
  • Paprskové přetypování jsou obvykle nedílnou součástí aplikace, takže kolizní sítě musí být generovány.
  • Vyjmout roviny vypadají lépe, když opaqueMaterialDefaultSidedness je příznak povolen.

Zastaralé funkce

Nastavení parametrů převodu modelu pomocí jiného než modelem specifického souboru conversionSettings.json je stále podporováno, ale je zastaralé. Místo toho použijte název modelu konkrétního <modelu>. ConversionSettings.json název souboru.

material-override Použití nastavení k identifikaci souboru přepsání materiálu v souboru nastavení převodu je stále podporováno, ale je zastaralé. Místo toho použijte název modelu konkrétního <modelu>. MaterialOverrides.json název souboru.

Další kroky