Condividi tramite


Configurare i parametri di conversione del modello

Questo articolo illustra come configurare i parametri per una conversione del modello.

File di impostazioni

Se un file denominato <modelName>. Conversione Impostazioni.json si trova nel contenitore di input accanto al model modelName>< di input.<ext>, quindi il file viene usato per fornire una configurazione aggiuntiva per il processo di conversione del modello. Ad esempio, quando si converte box.gltf, si userà box. Conversione Impostazioni.json per impostare i parametri per la conversione del modello.

Il contenuto del file delle impostazioni di conversione JSON deve avere questo schema:

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

Una scatola. Il file Conversion Impostazioni.json potrebbe essere simile all'esempio seguente:

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

Lo schema per la conversione di una mesh triangolare e una nuvola di punti è identica. Tuttavia, una conversione cloud punto usa un subset rigoroso di funzionalità rispetto a una conversione mesh triangolare.

Impostazioni per una mesh triangolare

Quando si converte una mesh triangolare, ad esempio da un file fbx , tutti i parametri nell'esempio di schema illustrato nella sezione precedente influiscono sul risultato della conversione. Le sezioni successive forniscono una spiegazione dettagliata dei parametri.

Parametri geometrici

  • scaling: questo parametro ridimensiona un modello in modo uniforme. Il ridimensionamento può essere usato per aumentare o ridurre un modello, ad esempio per visualizzare un modello di compilazione in una tabella superiore. Il ridimensionamento è importante anche quando un modello viene definito in unità diverse dai contatori perché il motore di rendering prevede contatori. Ad esempio, se un modello è definito in centimetri, l'applicazione di una scala pari a 0,01 esegue il rendering del modello alle dimensioni corrette. Alcuni formati di dati di origine (ad esempio, file fbx ) forniscono un hint di ridimensionamento unità. In questo caso, la conversione ridimensiona in modo implicito il modello in unità contatore. Il ridimensionamento implicito fornito dal formato di origine viene applicato sopra il scaling parametro . Il fattore di scala finale verrà applicato ai vertici della geometria e alle trasformazioni locali dei nodi del grafico della scena. Il ridimensionamento per la trasformazione dell'entità radice rimarrà invariato.

    Importante

    Presentazione e Avvio rapido possono compensare qualsiasi ridimensionamento in fase di conversione perché ognuno ha una funzionalità di ridimensionamento automatico predefinita. Per altre informazioni, vedere la guida alla risoluzione dei problemi.

  • recenterToOrigin: questo parametro indica che un modello deve essere convertito in modo che il relativo rettangolo di selezione sia centrato all'origine. Se un modello di origine viene spostato lontano dall'origine, i problemi di precisione a virgola mobile potrebbero causare artefatti di rendering. Il centro del modello può essere utile in questo scenario.

  • opaqueMaterialDefaultSidedness: il motore di rendering presuppone che i materiali opachi siano affiancati. Se tale presupposto non è vero di un particolare modello, questo parametro deve essere impostato su SingleSided. Per altre informazioni, vedere Rendering lato singolo.

Deduplicazione del materiale

  • deduplicateMaterials: questo parametro abilita o disabilita la deduplicazione automatica dei materiali che condividono le stesse proprietà e trame. La deduplicazione viene eseguita dopo l'elaborazione delle sostituzioni dei materiali. È abilitata per impostazione predefinita.

  • Se un modello ha più di 65.535 materiali anche dopo la deduplicazione, il servizio tenta di unire materiali con proprietà simili. Come ultima opzione, tutti i materiali che superano il limite vengono sostituiti da un materiale di errore rosso.

La figura seguente mostra due cubi di 68.921 triangoli colorati. L'esempio a sinistra è prima della deduplicazione, con 68.921 materiali a colori. L'esempio corretto è dopo la deduplicazione, con 64.000 materiali a colori. Il limite è di 65.535 materiali. Per altre informazioni sui limiti dei materiali, vedere Limiti.

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

Parametri di spazio colore

Il motore di rendering prevede che i valori di colore siano nello spazio lineare. Se un modello viene definito usando lo spazio gamma, è necessario impostare le opzioni seguenti su true:

  • gammaToLinearMaterial: converte i colori del materiale dallo spazio gamma allo spazio lineare.
  • gammaToLinearVertex: converte i colori dei vertici dallo spazio gamma allo spazio lineare.

Nota

Per i formati di file FBX, E57, PLY, LAS, LAZ e XYZ, queste impostazioni sono impostate true su per impostazione predefinita. Per tutti gli altri formati di file, il valore predefinito è false.

Parametri della scena

  • sceneGraphMode: definisce la modalità di conversione del grafico della scena nel file di origine.
    • dynamic (impostazione predefinita): tutti gli oggetti nel file vengono esposti come entità nell'API e possono essere trasformati e replicati in modo arbitrario. In fase di esecuzione, la gerarchia dei nodi è identica alla struttura nel file di origine.
    • static: simile a dynamic, ma gli oggetti nel grafico della scena non possono essere replicati in modo dinamico ad altri oggetti in fase di esecuzione. Per i modelli dinamici con molte parti in movimento, ad esempio la visualizzazione esplosione, l'opzione dynamic genera un modello più efficiente per il rendering, ma static la modalità consente comunque le trasformazioni delle singole parti. Se il reparenting dinamico non è necessario, l'opzione static è la più adatta per i modelli con molte singole parti.
    • none: il grafico della scena viene compresso in un unico oggetto.

Ogni modalità offre prestazioni diverse in fase di esecuzione. Nella modalità dynamic, il costo in termini di prestazioni presenta una scalabilità lineare rispetto al numero di entità nel grafico, anche quando nessuna parte viene spostata. Usare dynamic la modalità solo quando è necessario spostare contemporaneamente più parti o sottogrammi di grandi dimensioni. Un esempio è l'animazione della visualizzazione esplosione.

La static modalità esporta anche il grafico della scena completo. Le query spaziali restituiscono singole parti e ogni parte può essere modificata tramite override dello stato. Con questa modalità, il sovraccarico in fase di esecuzione per ogni singolo oggetto è trascurabile. Questa modalità è ideale per scene di grandi dimensioni in cui è necessaria l'ispezione per oggetto e modifiche occasionali di trasformazione su singole parti, ma senza replica di oggetti.

La modalità none comporta il sovraccarico minore in fase di esecuzione e tempi di caricamento leggermente migliori. L'ispezione o la trasformazione di singoli oggetti non è possibile in questa modalità. I casi d'uso sono, ad esempio, modelli di fotogrammimetria che non iniziano con un grafico di scena significativo.

Suggerimento

Molte applicazioni caricano più modelli. È consigliabile ottimizzare i parametri di conversione per ogni modello in base alla modalità di utilizzo. Ad esempio, se si desidera visualizzare il modello di un'automobile per consentire all'utente di separare e controllare in dettaglio, prima di tutto convertirlo usando dynamic la modalità . Tuttavia, se si vuole posizionare l'auto in un ambiente show room, è possibile convertire tale modello usando sceneGraphMode impostato su statico anche su none.

Parametri fisici

  • generateCollisionMesh: se è necessario il supporto per le query spaziali in un modello, questa opzione deve essere abilitata. La generazione di mesh di collisione non aggiunge tempi di conversione aggiuntivi e non aumenta anche le dimensioni del file di output. Il tempo di caricamento e il costo di runtime di un modello con mesh di collisione è significativamente superiore. È possibile lasciare questo flag come predefinito (abilitato) a meno che non si disponga di un motivo specifico per escludere un modello dalle query spaziali.

Materiali senza illuminazione

  • unlitMaterials: per impostazione predefinita, la conversione crea materiali PBR (Physically Based Rendering). Quando questa opzione è impostata, il convertitore considera invece tutti i materiali come materiali a colori. Se si dispone di dati che incorporano già l'illuminazione, ad esempio i modelli creati tramite la fotogrammametria, questa opzione consente di applicare rapidamente la conversione corretta per tutti i materiali. Non è necessario eseguire l'override di ogni materiale singolarmente.

Conversione da formati FBX precedenti e modelli di materiale Phong

  • fbxAssumeMetallic: le versioni precedenti del formato FBX definiscono i materiali usando un modello di materiale Phong. Il processo di conversione deve dedurre il mapping di questi materiali al modello PBR del renderer. In genere questo mapping funziona correttamente, ma può verificarsi un'ambiguità quando un materiale non ha trame, valori speculari elevati e un colore albedo non grigio. In questo scenario, la conversione deve scegliere tra classificare in ordine di priorità i valori speculari elevati, definendo un materiale altamente riflettente e metallico in cui il colore albedo si dissolve o assegnando priorità al colore albedo definendo qualcosa, come in una plastica colorata brillante. Per impostazione predefinita, il processo di conversione presuppone che valori altamente speculari implicano un materiale metallico in scenari ambigui. È possibile impostare questo parametro su false per l'effetto opposto.

Override del sistema di coordinate

  • axis: usare questo parametro per eseguire l'override dei vettori dell'unità di sistema di coordinate. I valori predefiniti sono ["+x", "+y", "+z"]. In teoria, il formato FBX ha un'intestazione in cui sono definiti tali vettori e la conversione usa tali informazioni per trasformare la scena. Il formato GLTF definisce anche un sistema a coordinate fisse. In pratica, alcuni asset hanno informazioni non corrette nell'intestazione o sono state salvate usando una convenzione diversa del sistema di coordinate. Questa opzione consente di sostituire il sistema di coordinate per compensare. Ad esempio, "axis" : ["+x", "+z", "-y"] scambia l'asse Z e l'asse Y e mantiene la mano del sistema di coordinate invertendo la direzione dell'asse Y.

Metadati del nodo

  • metadataKeys: usare questo parametro per specificare le chiavi delle proprietà dei metadati del nodo da mantenere nel risultato della conversione. È possibile specificare chiavi esatte o chiavi con caratteri jolly. Le chiavi con caratteri jolly sono del formato ABC* e corrispondono a qualsiasi chiave che inizia con ABC. I tipi di valore dei metadati supportati sono bool, int, floate string.

    Per i file GLTF, questi dati provengono dall'oggetto extra sui nodi. Per i file FBX, questi dati provengono dai Properties70 dati in Model nodes. Per altre informazioni, vedere la documentazione per lo strumento asset 3D.

Quando si carica un modello con metadati abilitati, è possibile recuperare l'elenco di voci di metadati di un'entità specifica tramite la funzione asincrona QueryMetadataAsync.

Formato dei vertici

È possibile regolare il formato dei vertici per una mesh in modo da scambiare precisione per il risparmio di memoria. Se il modello ha un footprint di memoria inferiore, è possibile caricare modelli di dimensioni maggiori o ottenere prestazioni migliori. Tuttavia, a seconda dei dati, il formato errato può influire significativamente sulla qualità del rendering.

Attenzione

La modifica del formato dei vertici deve essere un'ultima opzione quando i modelli non rientrano più nella memoria o quando si ottimizzano per ottenere prestazioni ottimali. Le modifiche possono introdurre facilmente artefatti di rendering, ovvio e sottile. A meno che non si sappia a cosa prestare attenzione, è consigliabile non modificare l'impostazione predefinita.

È possibile apportare queste modifiche:

  • Includere o escludere in modo esplicito flussi di dati specifici.
  • Ridurre l'accuratezza dei flussi di dati per ridurre il footprint di memoria.

La sezione seguente vertex nel file JSON è facoltativa. Per ogni parte non specificata in modo esplicito, il servizio di conversione esegue il fallback all'impostazione predefinita.

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

Forzando un componente a NONE, è garantito che la mesh di output non abbia il rispettivo flusso.

Formati dei componenti per flusso di vertici

La tabella seguente descrive i formati consentiti per i rispettivi componenti:

Componente del vertice Formati supportati Utilizzo nei materiali
position 32_32_32_FLOAT (impostazione predefinita), 16_16_16_16_FLOAT Posizione del vertice. Deve essere sempre presente.
color0 8_8_8_8_UNSIGNED_NORMALIZED (impostazione predefinita), NONE Colori vertice. Vedere useVertexColor la proprietà sia nei materiali a colori che nei materiali PBR e vertexMix nei materiali a colori.
color1 8_8_8_8_UNSIGNED_NORMALIZED, NONE (impostazione predefinita) Non utilizzato. Lasciare il valore predefinito NONE.
normal 8_8_8_8_SIGNED_NORMALIZED (impostazione predefinita), 16_16_16_16_FLOAT, NONE Utilizzato per l'illuminazione nei materiali PBR.
tangent 8_8_8_8_SIGNED_NORMALIZED (impostazione predefinita), 16_16_16_16_FLOAT, NONE Usato per l'illuminazione con mappe normali nei materiali PBR.
binormal 8_8_8_8_SIGNED_NORMALIZED (impostazione predefinita), 16_16_16_16_FLOAT, NONE Usato per l'illuminazione con mappe normali nei materiali PBR.
texcoord0 32_32_FLOAT (impostazione predefinita), 16_16_FLOAT, NONE Primo slot di coordinate della trama. Le singole trame come albedo e la mappa normale possono usare lo slot 0 o 1, definito nel file di origine.
texcoord1 32_32_FLOAT (impostazione predefinita), 16_16_FLOAT, NONE Secondo slot di coordinate di trama. Le singole trame come albedo e la mappa normale possono usare lo slot 0 o 1, definito nel file di origine.

Formati dei componenti supportati

La tabella seguente descrive i footprint di memoria dei formati dei componenti supportati:

Formato Descrizione Byte per vertice
32_32_FLOAT Precisione a virgola mobile a due componenti 8
16_16_FLOAT Precisione a virgola mobile a due componenti 4
32_32_32_FLOAT Precisione a virgola mobile a tre componenti 12
16_16_16_16_FLOAT Precisione a virgola mobile a quattro componenti 8
8_8_8_8_UNSIGNED_NORMALIZED Byte a quattro componenti, normalizzato per l'intervallo [0; 1] 4
8_8_8_8_SIGNED_NORMALIZED Byte a quattro componenti, normalizzato per l'intervallo [-1; 1] 4

Procedure consigliate per le modifiche al formato dei componenti

  • position: è raro che la riduzione dell'accuratezza sia sufficiente. 16_16_16_16_FLOAT introduce elementi di quantizzazione evidenti, anche per i modelli di piccole dimensioni.
  • normal, tangente binormal: in genere, questi valori vengono modificati insieme. A meno che non ci siano artefatti di illuminazione evidenti che derivano dalla quantizzazione normale, non c'è motivo di aumentare la loro accuratezza. In alcuni casi, tuttavia, questi componenti possono essere impostati su NONE:
    • normal, tangente binormal sono necessari solo quando deve essere acceso almeno un materiale nel modello. In Azure Rendering remoto questo scenario si verifica quando un materiale PBR viene usato nel modello in qualsiasi momento.
    • tangent e binormal sono necessari solo quando uno dei materiali illuminati utilizza una trama mappa normale.
  • texcoord0 e texcoord1 : le coordinate della trama possono usare una precisione ridotta (16_16_FLOAT) quando i valori rimangono nell'intervallo [0; 1] e quando le trame indirizzate hanno una dimensione massima di 2.048 × 2.048 pixel. Se questi limiti vengono superati, la qualità del mapping delle trame diminuisce.

Esempio

Si supponga di avere un modello di fotogrammetria in cui l'illuminazione è integrata nelle trame. Per eseguire il rendering del modello sono sufficienti le posizioni dei vertici e le coordinate delle trame.

Per impostazione predefinita, il convertitore deve presupporre che si vogliano usare materiali PBR in un modello in un determinato momento, in modo da generare normali dati , tangente binormal per l'utente. Pertanto, l'utilizzo della memoria per vertice è position (12 byte) + texcoord0 (8 byte) + (4 byte) + normal tangent (4 byte) + binormal (4 byte) = 32 byte. I modelli più grandi di questo tipo possono avere facilmente molti milioni di vertici, ottenendo modelli che possono richiedere più gigabyte di memoria. Tali grandi quantità di dati influiscono sulle prestazioni e si potrebbe anche esaurire la memoria.

Sapere che non è mai necessaria l'illuminazione dinamica sul modello e sapere che tutte le coordinate della trama si trovano nell'intervallo [0; 1] , è possibile impostare normal, tangente binormal su NONEe impostare su texcoord0 metà precisione (16_16_FLOAT), ottenendo solo 16 byte per vertice. Quando i dati mesh vengono tagliati a metà, è possibile caricare modelli più grandi e le prestazioni sono potenzialmente migliorate.

Impostazioni per le nuvole di punti

Quando viene convertita una nuvola di punti, viene usato solo un piccolo subset di proprietà dello schema. Le altre proprietà vengono ignorate a meno che non vengano specificate.

Le proprietà che hanno un effetto sulla conversione del cloud dei punti sono:

  • scaling: lo stesso significato delle mesh triangolari.
  • recenterToOrigin: lo stesso significato delle mesh triangolari.
  • axis: lo stesso significato delle mesh triangolari. I valori predefiniti sono ["+x", "+y", "+z"], ma la maggior parte dei dati cloud punto viene ruotata rispetto al sistema di coordinate del renderer. Per compensare, nella maggior parte dei casi ["+x", "+z", "-y"] corregge la rotazione.
  • gammaToLinearVertex: simile alle mesh triangolari, questo flag indica se i colori dei punti devono essere convertiti dallo spazio gamma allo spazio lineare. Il valore predefinito per i formati cloud punto (file E57, PLY, LAS, LAZ e XYZ) è true.
  • generateCollisionMesh: simile alle mesh triangolari, per supportare le query spaziali, è necessario abilitare questo flag.

Ottimizzazioni della memoria

L'utilizzo della memoria del contenuto caricato potrebbe diventare un collo di bottiglia nel sistema di rendering. Se il payload di memoria diventa troppo grande, potrebbe compromettere le prestazioni di rendering o causare il caricamento del modello. Questo paragrafo illustra alcune strategie importanti per ridurre il footprint di memoria.

Nota

Le ottimizzazioni seguenti si applicano alle mesh triangolari. Non è possibile ottimizzare l'output dei cloud di punti configurando le impostazioni di conversione.

Instancing

Nella creazione di istanze, le mesh vengono riutilizzate per le parti con trasformazioni spaziali distinte anziché per ogni parte che fa riferimento alla propria geometria univoca. La creazione di istanze ha un impatto significativo sul footprint di memoria.

I casi d'uso di esempio per l'instancing sono le viti in un modello di motore o sedie in un modello architettonico.

Nota

La creazione di istanze può migliorare significativamente il consumo di memoria (e quindi i tempi di caricamento), ma i miglioramenti sulle prestazioni di rendering sono irrilevanti.

Il servizio di conversione rispetta la creazione di istanze se le parti vengono contrassegnate di conseguenza nel file di origine. Tuttavia, la conversione non esegue un'analisi approfondita aggiuntiva dei dati mesh per identificare parti riutilizzabili. Lo strumento di creazione del contenuto e la relativa pipeline di esportazione sono i criteri decisivi per la corretta installazione di istanze.

Un modo semplice per verificare se le informazioni di creazione di istanze vengono mantenute durante la conversione consiste nell'esaminare le statistiche di output. In particolare, controllare il numMeshPartsInstanced valore. Se il valore di numMeshPartsInstanced è maggiore di zero, le mesh vengono condivise tra istanze.

Esempio: installazione di istanze in 3ds Max

Autodesk 3ds Max ha modalità di clonazione di oggetti distinti denominata Copy, Instance e Reference. Le modalità funzionano in modo diverso per la creazione di istanze nel file fbx esportato.

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

  • Copia: in questa modalità la mesh viene clonata, quindi non viene usata alcuna istanza ( = numMeshPartsInstanced0).
  • Istanza: i due oggetti condividono la stessa mesh, quindi viene usata la creazione di istanze (numMeshPartsInstanced = 1).
  • Riferimento: i modificatori distinti possono essere applicati alle geometrie, quindi l'esportatore sceglie un approccio conservativo e non usa istanze ( = numMeshPartsInstanced0).

Modalità di composizione basata su profondità

Se la memoria è un problema, configurare il renderer usando la modalità di composizione basata sulla profondità. In questa modalità, il payload GPU viene distribuito tra più GPU.

Ridurre le dimensioni dei vertici

Come illustrato in Procedure consigliate per le modifiche al formato dei componenti, la regolazione del formato dei vertici può ridurre il footprint di memoria. Tuttavia, questa opzione deve essere l'ultima opzione scelta.

Dimensioni delle trame

A seconda del tipo di scenario, la quantità di dati di trama potrebbe superare la memoria usata per i dati mesh. I modelli di fotogrammametria sono candidati. La configurazione di conversione non consente di ridurre automaticamente le trame. Se necessario, il ridimensionamento delle trame deve essere eseguito come passaggio di pre-elaborazione lato client. Tuttavia, il passaggio di conversione sceglie un formato di compressione trama appropriato:

  • Formato di file BC1 per trame di colori opache
  • Formato di file BC7 per le trame dei colori di origine con canale alfa

Poiché il formato di file BC7 ha due volte il footprint di memoria del formato di file BC1, è importante assicurarsi che le trame di input non forniscano un canale alfa non necessario.

Casi d'uso tipici

Trovare impostazioni di importazione valide per un caso d'uso specifico può essere un processo noioso. D'altra parte, le impostazioni di conversione potrebbero avere un impatto significativo sulle prestazioni di runtime.

Alcune classi specifiche di casi d'uso sono idonee per ottimizzazioni specifiche. Alcuni esempi sono descritti nelle sezioni seguenti.

Caso d'uso: visualizzazione architetturale o mappe esterne di grandi dimensioni

Per gli scenari che coinvolgono la visualizzazione dell'architettura o mappe esterne di grandi dimensioni, considerare i fattori seguenti:

  • Questi tipi di scene tendono a essere statici. Non hanno bisogno di parti mobili. Di conseguenza, è possibile impostare su sceneGraphMode statico anche su nonee migliorare le prestazioni di runtime. In static modalità, il nodo radice della scena può comunque essere spostato, ruotato e ridimensionato. Ad esempio, può passare dinamicamente tra la scala 1:1 (per la visualizzazione first-person) e una visualizzazione tabella-superiore.

  • Se l'applicazione non usa piani di taglio, il opaqueMaterialDefaultSidedness flag deve essere disattivato. Il miglioramento delle prestazioni in genere è dal 20% al 30%. È comunque possibile usare piani di taglio, ma non ci sarà una faccia rovesciata quando si esamina la parte interna di un oggetto, che appare controintuitivo. Per altre informazioni, vedere Rendering a lato singolo.

Caso d'uso: modelli di fotogrammametria

Quando si esegue il rendering dei modelli di fotogramma, in genere non è necessario un grafico della scena. In questo scenario è possibile scegliere di impostare su sceneGraphMode none. Poiché questi modelli contengono raramente un grafico della scena complesso, è probabile che l'effetto della scelta di questa opzione sia insignificante. Non è necessaria alcuna illuminazione dinamica perché l'illuminazione è già integrata nelle trame. In questo scenario:

  • Impostare il flag unlitMaterials su true per trasformare tutti i materiali in materiali a colori senza illuminazione.
  • Rimuovere i dati non necessari dal formato dei vertici. Vedere l'esempio precedente.

Caso d'uso: visualizzazione di computer compatta e altri

In questi casi d'uso, i modelli hanno spesso un livello elevato di dettaglio in un volume ridotto. Il renderer è fortemente ottimizzato per gestire correttamente questi casi. Tuttavia, la maggior parte delle ottimizzazioni descritte nel caso d'uso precedente non si applica qui. Le ottimizzazioni includono:

  • Le singole parti devono essere selezionabili e rimovibili, quindi sceneGraphMode devono essere impostate su dynamic.
  • Le operazioni di ray casting sono in genere parte integrante dell'applicazione, pertanto è necessario generare mesh di collisione.
  • I piani di taglio sembrano migliori quando il opaqueMaterialDefaultSidedness flag è abilitato.

Funzionalità obsolete

L'impostazione dei parametri di conversione del modello usando la conversione non specifica del modello Impostazioni.json è ancora supportata, ma è deprecata. Usare invece modelName> specifico <del modello. Conversione Impostazioni.json filename.

L'uso di un'impostazione material-override per identificare un file di override materiale nel file delle impostazioni di conversione è ancora supportato, ma è deprecato. Usare invece modelName> specifico <del modello. MaterialOverrides.json filename.

Passaggi successivi