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 ilscaling
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 suSingleSided
. 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.
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 adynamic
, 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'opzionedynamic
genera un modello più efficiente per il rendering, mastatic
la modalità consente comunque le trasformazioni delle singole parti. Se il reparenting dinamico non è necessario, l'opzionestatic
è 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 static
o 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 sufalse
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 formatoABC*
e corrispondono a qualsiasi chiave che inizia conABC
. I tipi di valore dei metadati supportati sonobool
,int
,float
estring
.Per i file GLTF, questi dati provengono dall'oggetto extra sui nodi. Per i file FBX, questi dati provengono dai
Properties70
dati inModel 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
,tangent
ebinormal
: 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 suNONE
:normal
,tangent
ebinormal
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
ebinormal
sono necessari solo quando uno dei materiali illuminati utilizza una trama mappa normale.
texcoord0
etexcoord1
: 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 normal
i dati , tangent
e 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
, tangent
e binormal
su NONE
e 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.
- Copia: in questa modalità la mesh viene clonata, quindi non viene usata alcuna istanza ( =
numMeshPartsInstanced
0
). - 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 ( =
numMeshPartsInstanced
0
).
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
static
o anche sunone
e migliorare le prestazioni di runtime. Instatic
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
sutrue
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 sudynamic
. - 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.