Configurar parâmetros de conversão de modelo
Nesse artigo, saiba como configurar parâmetros para uma conversão de modelo.
Arquivo de configurações
Se um arquivo chamado <modelName> .ConversionSettings.json for encontrado no contêiner de entrada ao lado do modelo de entrada <modelName>.<ext>, o arquivo será usado para fornecer configuração extra para o processo de conversão do modelo. Por exemplo, ao converter box.gltf, você usaria box.ConversionSettings.json para definir parâmetros para a conversão do modelo.
O conteúdo do arquivo de configurações de conversão JSON deve ter esse esquema:
{
"$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
}
Um arquivo box.ConversionSettings.json pode se parecer com esse exemplo:
{
"scaling" : 0.01,
"recenterToOrigin" : true,
"material-override" : "box_materials_override.json"
}
O esquema para converter uma malha triangular e uma nuvem de pontos é idêntico. No entanto, uma conversão de nuvem de pontos usa um subconjunto estrito de recursos em comparação a uma conversão de malha triangular.
Configurações para uma malha triangular
Ao converter uma malha triangular, como de um arquivo .fbx, todos os parâmetros no exemplo de esquema mostrado na seção anterior afetam o resultado da conversão. As próximas seções fornecem uma explicação detalhada dos parâmetros.
Parâmetros de geometria
scaling
: Esse parâmetro dimensiona um modelo uniformemente. A escala pode ser usado para aumentar ou diminuir um modelo, por exemplo, para exibir um modelo de construção em cima de uma mesa. A escala também é importante quando um modelo é definido em unidades diferentes de metros, porque o mecanismo de renderização espera metros. Por exemplo, se um modelo for definido em centímetros, a aplicação de uma escala de 0,01 renderiza o modelo no tamanho correto. Alguns formatos de dados de origem (por exemplo, arquivos .fbx) fornecem uma dica de escala de unidade. Nesse caso, a conversão dimensiona implicitamente o modelo para unidades de metros. A escala implícita fornecida pelo formato de origem é aplicado sobre o parâmetroscaling
. O fator de dimensionamento final será aplicado aos vértices de geometria e às transformações locais dos nós do grafo de cena. O dimensionamento para a transformação da entidade raiz continua inalterado.Importante
O Showcase e o Início Rápido podem compensar qualquer escala no tempo de conversão porque cada um deles tem um recurso de dimensionamento automático integrado. Para obter mais informações, confira o guia de solução de problemas.
recenterToOrigin
: Esse parâmetro indica que um modelo deve ser convertido para que sua caixa delimitadora fique centralizada na origem. Se um modelo de origem for deslocado para longe da origem, problemas de precisão de ponto flutuante podem causar artefatos de renderização. Centralizar o modelo pode ajudar nesse cenário.opaqueMaterialDefaultSidedness
: O mecanismo de renderização assume que materiais opacos são dupla face. Se essa suposição não for verdadeira para um modelo específico, esse parâmetro deve ser definido comoSingleSided
. Para obter mais informações, veja Renderização unilateral.
Desduplicação de material
deduplicateMaterials
: Esse parâmetro habilita ou desabilita a desduplicação automática de materiais que compartilham as mesmas propriedades e texturas. A desduplicação ocorre depois que as substituições de material são processadas. Isso é habilitado por padrão.Se um modelo tiver mais de 65.535 materiais, mesmo após a desduplicação, o serviço tentará mesclar materiais que tenham propriedades semelhantes. Como última opção, qualquer material que exceda o limite é substituído por um material com erro vermelho.
A figura a seguir mostra dois cubos com 68.921 triângulos coloridos. O exemplo à esquerda é antes da desduplicação, com 68.921 materiais coloridos. O exemplo certo é após a desduplicação, com 64.000 materiais coloridos. O limite é de 65.535 materiais. Para obter mais informações sobre limites de material, veja limites.
Parâmetros de espaço de cores
O mecanismo de renderização espera que os valores de cores estejam em um espaço linear. Se um modelo for definido usando o espaço gama, as seguintes opções devem ser definidas como true
:
gammaToLinearMaterial
: Converta cores de materiais do espaço gama para o espaço linear.gammaToLinearVertex
: Converter cores de vértices do espaço gama para o espaço linear.
Observação
Para os formatos de arquivo FBX, E57, PLY, LAS, LAZ e XYZ, essas configurações são definidas como true
por padrão. Para todos os outros formatos de arquivo, o padrão é false
.
Parâmetros de cena
sceneGraphMode
: Define como o gráfico de cena no arquivo de origem é convertido.dynamic
(padrão): todos os objetos no arquivo são expostos como entidades na API e podem ser transformados e ter o parentesco redefinido de maneira arbitrária. Em tempo de execução, a hierarquia de nós é idêntica à estrutura no arquivo de origem.static
: semelhante adynamic
, mas os objetos no grafo de cena não podem ter o parentesco redefinido para outros objetos de maneira dinâmica em runtime. Para modelos dinâmicos que têm muitas partes móveis, como a vista de explosão, a opçãodynamic
gera um modelo que é mais eficiente para renderizar, mas o modostatic
ainda permite transformações de partes individuais. Se a reconstrução dinâmica não for necessária, a opçãostatic
é a mais adequada para modelos que possuem muitas partes individuais.none
: O gráfico de cena é recolhido em um objeto.
Cada modo tem um desempenho de runtime diferente. No modo dynamic
, o custo de desempenho é dimensionado linearmente com o número de entidades no grafo, mesmo quando nenhuma parte for movida. Use o modo dynamic
somente quando for necessário mover muitas partes ou subgráficos grandes simultaneamente. Um exemplo é a animação de exibição de explosão.
O modo static
também exporta o grafo de cena completo. Consultas espaciais retornam partes individuais, e cada parte pode ser modificada por meio de substituições de estado. Com esse modo, a sobrecarga do runtime por objeto é insignificante. Esse modo é ideal para cenas grandes nas quais você precisa de inspeção por objeto e alterações ocasionais de transformação em partes individuais, mas sem reparentalidade de objetos.
O modo none
tem a menor sobrecarga do runtime, além de tempos de carregamento um pouco melhores. Não é possível fazer a inspeção ou a transformação de objetos únicos nesse modo. Casos de uso são, por exemplo, modelos de fotogrametria que não começam com um gráfico de cena significativo.
Dica
Muitos aplicativos carregam vários modelos. Você deve otimizar os parâmetros de conversão para cada modelo dependendo de como você irá usá-lo. Por exemplo, se você quiser exibir o modelo de um carro para o usuário desmontar e inspecionar em detalhes, primeiro converta-o usando o modo dynamic
. No entanto, se você também quiser colocar o carro em um ambiente de showroom, você pode converter esse modelo usando sceneGraphMode
definido como static
, ou mesmo para none
.
Parâmetros físicos
generateCollisionMesh
: Se você precisar de suporte para consultas espaciais em um modelo, essa opção deve ser habilitada. A geração de malha de colisão não adiciona tempo extra de conversão e também não aumenta o tamanho do arquivo de saída. O tempo de carregamento e o custo de execução de um modelo que possui malhas de colisão são apenas insignificantemente maiores. Você pode deixar esse sinalizador no padrão (habilitado), a menos que tenha um motivo específico para excluir um modelo de consultas espaciais.
Materiais não iluminados
unlitMaterials
: Por padrão, a conversão cria materiais de renderização baseados em física (PBR). Quando essa opção é definida, o conversor trata todos os materiais como materiais coloridos. Se você tiver dados que já incorporam iluminação, como modelos criados por fotogrametria, essa opção permite que você aplique rapidamente a conversão correta para todos os materiais. Você não precisará substituir cada material individualmente.
Conversão de formatos FBX anteriores e modelos de material Phong
fbxAssumeMetallic
: Versões anteriores do formato FBX definem seus materiais usando um modelo de material Phong. O processo de conversão deve inferir como esses materiais são mapeados para o modelo PBR do renderizador. Normalmente, esse mapeamento funciona bem, mas é possível que surja uma ambiguidade quando um material não tiver texturas, valores especulares altos e uma cor de albedo não cinza. Nesse cenário, a conversão deve escolher entre priorizar os altos valores especulares, definindo um material altamente refletivo e metálico onde a cor do albedo se dissolve, ou priorizar a cor do albedo definindo algo, como em um plástico colorido brilhante. Por padrão, o processo de conversão assume que valores altamente especulares implicam um material metálico em cenários ambíguos. Você pode definir esse parâmetro comofalse
para o efeito oposto.
Substituição do sistema de coordenadas
axis
: Use esse parâmetro para substituir vetores unitários do sistema de coordenadas. Os valores padrão são["+x", "+y", "+z"]
. Em teoria, o formato FBX tem um cabeçalho no qual esses vetores são definidos, e a conversão usa essas informações para transformar a cena. O formato GLTF também define um sistema de coordenadas fixas. Na prática, alguns ativos têm informações incorretas no cabeçalho ou foram salvos usando uma convenção de sistema de coordenadas diferente. Essa opção permite que você substitua o sistema de coordenadas como forma de compensação. Por exemplo,"axis" : ["+x", "+z", "-y"]
troca o eixo Z e o eixo Y e mantém a destreza do sistema de coordenadas invertendo a direção do eixo Y.
Metadados do nó
metadataKeys
: Use esse parâmetro para especificar chaves de propriedades de metadados do nó que você deseja manter no resultado da conversão. Você pode especificar chaves exatas ou chaves curinga. As chaves curinga têm o formatoABC*
e correspondem a qualquer chave que comece comABC
. Os tipos de valor de metadados com suporte sãobool
,int
,float
estring
.Para arquivos GLTF, esses dados vêm do objeto extras nos nós. Para arquivos FBX, esses dados vêm dos dados
Properties70
emModel nodes
. Para obter mais informações, consulte a documentação da sua ferramenta de ativos 3D.
Ao carregar um modelo com metadados habilitados, a lista de entradas de metadados de uma entidade específica pode ser recuperada por meio da função QueryMetadataAsync assíncrona.
Formato de vértice
É possível ajustar o formato do vértice de uma malha para trocar precisão por economia de memória. Se o seu modelo tiver um consumo de memória menor, você poderá carregar modelos maiores ou obter melhor desempenho. No entanto, dependendo dos seus dados, o formato errado pode afetar significativamente a qualidade da renderização.
Cuidado
No entanto, dependendo dos seus dados, o formato diferente pode afetar significativamente a qualidade da renderização. Alterações podem facilmente introduzir artefatos de renderização, tanto óbvios quanto sutis. A menos que saiba o que deve procurar, você não deve alterar o padrão.
Você pode fazer esses ajustes:
- Incluir ou excluir explicitamente fluxos de dados específicos.
- Diminua a precisão dos fluxos de dados para reduzir o consumo de memória.
A seção vertex
a seguir no arquivo JSON é opcional. Para cada parte que não seja especificada explicitamente, o serviço de conversão volta à sua configuração padrão.
{
...
"vertex" : {
"position" : "32_32_32_FLOAT",
"color0" : "NONE",
"color1" : "NONE",
"normal" : "NONE",
"tangent" : "NONE",
"binormal" : "NONE",
"texcoord0" : "32_32_FLOAT",
"texcoord1" : "NONE"
},
...
}
Ao forçar um componente a NONE
, garante-se que a malha de saída não terá o respectivo fluxo.
Formatos de componentes por fluxo de vértice
A tabela a seguir descreve os formatos permitidos para os respectivos componentes:
Componente de vértice | Formatos com suporte | Uso em materiais |
---|---|---|
position |
32_32_32_FLOAT (padrão), 16_16_16_16_FLOAT |
Posição do vértice. Deve estar sempre presente. |
color0 |
8_8_8_8_UNSIGNED_NORMALIZED (padrão), NONE |
Cores de vértice. Veja useVertexColor propriedade em materiais coloridos e materiais PBR, e vertexMix em materiais coloridos. |
color1 |
8_8_8_8_UNSIGNED_NORMALIZED , NONE (padrão) |
Não utilizado. Deixar como padrão NONE . |
normal |
8_8_8_8_SIGNED_NORMALIZED (padrão), 16_16_16_16_FLOAT , NONE |
Usado para iluminação em Materiais PBR. |
tangent |
8_8_8_8_SIGNED_NORMALIZED (padrão), 16_16_16_16_FLOAT , NONE |
Usado para iluminação com mapas normais em materiais PBR. |
binormal |
8_8_8_8_SIGNED_NORMALIZED (padrão), 16_16_16_16_FLOAT , NONE |
Usado para iluminação com mapas normais em materiais PBR. |
texcoord0 |
32_32_FLOAT (padrão), 16_16_FLOAT , NONE |
Primeiro slot de coordenadas de textura. Texturas individuais como albedo e mapa normal podem usar o slot 0 ou 1, que é definido no arquivo de origem. |
texcoord1 |
32_32_FLOAT (padrão), 16_16_FLOAT , NONE |
Segundo slot de coordenadas de textura. Texturas individuais como albedo e mapa normal podem usar o slot 0 ou 1, que é definido no arquivo de origem. |
Formatos de componentes com suporte
A tabela a seguir descreve as pegadas de memória dos formatos de componentes suportados:
Formatar | Descrição | Bytes por vértice |
---|---|---|
32_32_FLOAT |
Precisão de ponto flutuante total de dois componentes | 8 |
16_16_FLOAT |
Precisão de meio ponto flutuante de dois componentes | 4 |
32_32_32_FLOAT |
Precisão de ponto flutuante total de três componentes | 12 |
16_16_16_16_FLOAT |
Precisão de ponto flutuante de quatro componentes | 8 |
8_8_8_8_UNSIGNED_NORMALIZED |
Byte de quatro componentes, normalizado para o intervalo [0; 1] |
4 |
8_8_8_8_SIGNED_NORMALIZED |
Byte de quatro componentes, normalizado para o intervalo [-1; 1] |
4 |
Melhores práticas para alterações de formato de componente
position
: raramente a precisão reduzida é suficiente.16_16_16_16_FLOAT
introduz artefatos de quantização perceptíveis, mesmo para modelos pequenos.normal
,tangent
, ebinormal
: Normalmente, esses valores são alterados juntos. A menos que haja artefatos de iluminação perceptíveis que sejam resultado da quantificação normal, não há motivos para aumentar sua precisão. Em alguns casos, porém, esses componentes podem ser definidos paraNONE
:normal
,tangent
, ebinormal
são necessários somente quando pelo menos um material no modelo deve ser aceso. No Azure Remote Rendering, esse cenário ocorre quando um material PBR é usado no modelo a qualquer momento.tangent
ebinormal
são necessários somente quando qualquer um dos materiais iluminados usa uma textura de mapa normal.
texcoord0
etexcoord1
: As coordenadas de textura podem usar precisão reduzida (16_16_FLOAT
) quando seus valores permanecem no[0; 1]
intervalo e quando as texturas endereçadas têm um tamanho máximo de 2.048 × 2.048 pixels. Se esses limites forem excedidos, a qualidade do mapeamento de textura diminui.
Exemplo
Suponha que você tenha um modelo de fotogrametria, o qual tenha iluminação nas texturas. Tudo de que você precisa para renderizar o modelo são as posições de vértice e as coordenadas de textura.
Por padrão, o conversor precisa assumir que você pode querer usar materiais PBR em um modelo em algum momento, então ele gera dados normal
, tangent
, e binormal
para você. Portanto, o uso de memória por vértice é position
(12 bytes) + texcoord0
(8 bytes) + normal
(4 bytes) + tangent
(4 bytes) + binormal
(4 bytes) = 32 bytes. Modelos maiores desse tipo podem facilmente ter muitos milhões de vértices, resultando em modelos que podem ocupar vários gigabytes de memória. Essas grandes quantidades de dados afetam o desempenho e você pode até ficar sem memória.
Sabendo que você nunca precisa de iluminação dinâmica no modelo e sabendo que todas as coordenadas de textura estão no [0; 1]
intervalo, você pode definir normal
, tangent
, e binormal
como NONE
e definir texcoord0
como meia precisão (16_16_FLOAT
), resultando em apenas 16 bytes por vértice. Quando os dados da malha são cortados pela metade, você pode carregar modelos maiores e o desempenho é potencialmente melhorado.
Configurações para nuvens de ponto
Quando uma nuvem de pontos é convertida, apenas um pequeno subconjunto de propriedades do esquema é usado. Outras propriedades são ignoradas, a menos que sejam especificadas.
As propriedades que têm um efeito na conversão de nuvem de ponto são:
scaling
: O mesmo significado das malhas triangulares.recenterToOrigin
: O mesmo significado das malhas triangulares.axis
: O mesmo significado das malhas triangulares. Os valores padrão são["+x", "+y", "+z"]
, mas a maioria dos dados da nuvem de pontos é rotacionada em comparação ao próprio sistema de coordenadas do renderizador. Para compensar, na maioria dos casos["+x", "+z", "-y"]
corrige a rotação.gammaToLinearVertex
: Semelhante às malhas triangulares, esse sinalizador indica se as cores dos pontos devem ser convertidas do espaço gama para o espaço linear. O valor padrão para formatos de nuvem de pontos (arquivos E57, PLY, LAS, LAZ e XYZ) étrue
.generateCollisionMesh
: Semelhante às malhas triangulares, para oferecer suporte a consultas espaciais, você deve habilitar esse sinalizador.
Otimizações de memória
O consumo de memória do conteúdo carregado pode se tornar um gargalo no sistema de renderização. Se a carga de memória ficar muito grande, isso poderá comprometer o desempenho da renderização ou fazer com que o modelo não carregue completamente. Este parágrafo discute algumas estratégias importantes para reduzir o volume de memória.
Observação
As otimizações a seguir se aplicam a malhas triangulares. Não é possível otimizar a saída de nuvens de pontos configurando as configurações de conversão.
Instanciação
Por exemplo, as malhas são reutilizadas para peças que têm transformações espaciais distintas, em vez de cada peça referenciar sua própria geometria exclusiva. A instanciação tem um impacto significativo no consumo de memória.
Exemplos de casos de uso de instanciação são os parafusos em um modelo de motor ou cadeiras em um modelo de arquitetura.
Observação
A instanciação pode melhorar significativamente o consumo de memória (e, portanto, os tempos de carregamento), mas as melhorias no desempenho de renderização são insignificantes.
O serviço de conversão respeitará a instanciação se as partes estiverem marcadas adequadamente no arquivo de origem. No entanto, a conversão não realiza análises extras e profundas dos dados de malha para identificar peças reutilizáveis. A ferramenta de criação de conteúdo e seu pipeline de exportação são os critérios decisivos para a configuração adequada da instância.
Uma maneira simples de testar se as informações de instanciação são preservadas durante a conversão é observar as estatísticas de saída. Especificamente, verifique o valor numMeshPartsInstanced
. Se o valor de numMeshPartsInstanced
for maior que zero, as malhas serão compartilhadas entre instâncias.
Exemplo: configuração de instanciação em 3ds Max
O Autodesk 3ds Max possui modos distintos de clonagem de objetos chamados Cópia, Instância e Referência. Os modos funcionam de forma diferente para instanciação no arquivo .fbx exportado.
- Cópia: Nesse modo, a malha é clonada, portanto, nenhuma instância é usada (
numMeshPartsInstanced
=0
). - Instância: Os dois objetos compartilham a mesma malha, então a instanciação é usada (
numMeshPartsInstanced
=1
). - Referência: Modificadores distintos podem ser aplicados às geometrias, de modo que o exportador escolha uma abordagem conservadora e não use instanciação (
numMeshPartsInstanced
=0
).
Modo de composição com base em profundidade
Se a memória for uma preocupação, configure o renderizador usando o modo de composição baseado em profundidade. Nesse modo, o conteúdo de GPU é distribuído entre várias GPUs.
Diminuir tamanho do vértice
Conforme discutido em Melhores práticas para alterações de formato de componente, ajustar o formato do vértice pode diminuir o consumo de memória. No entanto, essa opção deve ser a última que você escolher.
Tamanhos de textura
Dependendo do tipo de cenário, a quantidade de dados de textura pode superar a memória usada para dados de malha. Os modelos de fotogrametria são candidatos. A configuração de conversão não fornece uma forma de reduzir verticalmente as texturas de modo automático. Se necessário, a escala da textura deve ser feito como uma etapa de pré-processamento do lado do cliente. Mas a etapa de conversão escolhe um formato de compressão de textura adequado:
- Formato de arquivo BC1 para texturas de cores opacas
- Formato de arquivo BC7 para texturas de cores de origem com canal alfa
Como o formato de arquivo BC7 ocupa o dobro da memória do formato de arquivo BC1, é importante garantir que as texturas de entrada não forneçam um canal alfa desnecessário.
Casos de uso típicos
Encontrar boas configurações de importação para um caso de uso específico pode ser um processo tedioso. Por outro lado, as configurações de conversão podem ter um impacto significativo no desempenho do tempo de execução.
Algumas classes específicas de casos de uso se qualificam para otimizações específicas. Alguns exemplos são descritos nas seções a seguir.
Caso de uso: visualização arquitetônica ou grandes mapas externos
Para cenários que envolvem visualização arquitetônica ou grandes mapas externos, considere os seguintes fatores:
Esses tipos de cenas tendem a ser estáticas. Eles não precisam de partes móveis. Dessa forma, você pode definir
sceneGraphMode
comostatic
, ou até mesmo comonone
, e melhorar o desempenho do tempo de execução. No modostatic
, o nó raiz da cena ainda pode ser movido, girado e dimensionado. Por exemplo, ele pode alternar dinamicamente entre escala 1:1 (para visão em primeira pessoa) e visão de mesa.Caso o aplicativo não use planos de corte, o sinalizador
opaqueMaterialDefaultSidedness
deverá ser desativado. O ganho de desempenho normalmente é de 20% a 30%. Você ainda pode usar planos de corte, mas não haverá uma face posterior quando você olhar para a parte interna de um objeto, o que parece contraintuitivo. Para obter mais informações, veja renderização unilateral.
Caso de uso: Modelos de fotogrametria
Ao renderizar modelos de fotogrametria, normalmente você não precisa de um gráfico de cena. Nesse cenário, você pode escolher definir sceneGraphMode
para none
. Como esses modelos raramente contêm um gráfico de cena complexo, o efeito de escolher essa opção provavelmente é insignificante. Como a iluminação já está presente nas texturas, nenhuma iluminação dinâmica é necessária. Neste cenário:
- Defina o sinalizador
unlitMaterials
comotrue
para transformar todos os materiais em materiais de cores não iluminados. - Remova dados desnecessários do formato de vértice. Veja o exemplo anterior.
Caso de uso: Visualização de máquinas compactas e outras
Nesses casos de uso, os modelos geralmente têm um alto grau de detalhes em um pequeno volume. O renderizador é altamente otimizado para lidar bem com esses casos. Entretanto, a maioria das otimizações descritas no caso de uso anterior não se aplicam aqui As otimizações incluem:
- As partes individuais devem ser selecionáveis e móveis, portanto
sceneGraphMode
deve ser definido comodynamic
. - Os ray casts normalmente são parte integrante do aplicativo, de modo que as malhas de colisão devem ser geradas.
- Os planos de corte ficam melhores quando o sinalizador
opaqueMaterialDefaultSidedness
está habilitado.
Recursos preteridos
A definição de parâmetros de conversão de modelo usando o nome de arquivo conversionSettings.json não específico do modelo ainda é suportada, mas está obsoleta. Em vez disso, use o nome de arquivo <modelName>.ConversionSettings.json específico do modelo.
O uso de uma configuração material-override
para identificar um arquivo de substituição de material no arquivo de configurações de conversão ainda é suportado, mas está obsoleto. Em vez disso, use o nome de arquivo <modelName>.MaterialOverrides.json específico do modelo.