Configuración de parámetros de conversión de modelos

En este artículo, aprenderá a configurar parámetros para una conversión de modelos.

Archivo de configuración

Si un archivo denominado <modelName>. Conversion Configuración.json se encuentra en el contenedor de entrada junto al modelName>< de entrada.<ext>, el archivo se usa para proporcionar una configuración adicional para el proceso de conversión del modelo. Por ejemplo, al convertir box.gltf, usaría box. Conversion Configuración.json para establecer parámetros para la conversión del modelo.

El contenido del archivo de configuración de conversión JSON debe tener este 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
}

Un cuadro. La conversión Configuración.json del archivo podría tener este aspecto:

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

El esquema para convertir una malla triangular y una nube de puntos es idéntica. Sin embargo, una conversión de nube de puntos usa un subconjunto estricto de características en comparación con una conversión de malla triangular.

Configuración para una malla triangular

Al convertir una malla triangular, como desde un archivo .fbx , todos los parámetros del ejemplo de esquema que se muestra en la sección anterior afectan al resultado de la conversión. En las secciones siguientes se proporciona una explicación detallada de los parámetros.

Parámetros de geometría

  • scaling: este parámetro escala un modelo uniformemente. El escalado se puede usar para aumentar o reducir un modelo, por ejemplo, para mostrar un modelo de creación en una tabla superior. El escalado también es importante cuando se define un modelo en unidades distintas de medidores porque el motor de representación espera medidores. Por ejemplo, si un modelo se define en centímetros, la aplicación de una escala de 0,01 representa el modelo en el tamaño correcto. Algunos formatos de datos de origen (por ejemplo, archivos .fbx ) proporcionan una sugerencia de escalado de unidades. En este caso, la conversión escala implícitamente el modelo a unidades de medidor. El escalado implícito proporcionado por el formato de origen se aplica sobre el scaling parámetro . El factor de escalado final se aplica a los vértices de geometría y las transformaciones locales de los nodos de gráfico de escena. El escalado para la transformación de la entidad raíz permanece sin modificar.

    Importante

    Presentación e inicio rápido pueden compensar cualquier escalado en tiempo de conversión, ya que cada uno tiene una característica de escalado automático integrada. Para más información, consulte la guía para la solución de problemas.

  • recenterToOrigin: este parámetro indica que se debe convertir un modelo para que su rectángulo de límite se centre en el origen. Si un modelo de origen se desplaza lejos del origen, los problemas de precisión de punto flotante pueden provocar artefactos de representación. Centrar el modelo puede ayudar en este escenario.

  • opaqueMaterialDefaultSidedness: el motor de representación da por supuesto que los materiales opacos son de doble cara. Si esa suposición no es cierta para un modelo determinado, este parámetro debe establecerse SingleSideden . Para obtener más información, consulte Representación en un solo lado.

Desduplicación de material

  • deduplicateMaterials: este parámetro habilita o deshabilita la desduplicación automática de materiales que comparten las mismas propiedades y texturas. La desduplicación se produce después de procesar las invalidaciones de material. Esta casilla está habilitada de forma predeterminada.

  • Si un modelo tiene más de 65 535 materiales incluso después de la desduplicación, el servicio intenta combinar materiales que tienen propiedades similares. Como última opción, los materiales que superen el límite se reemplazan por un material de error rojo.

En la ilustración siguiente se muestran dos cubos de 68 921 triángulos coloreados. El ejemplo izquierdo es antes de la desduplicación, con 68 921 materiales de color. El ejemplo correcto es después de la desduplicación, con 64 000 materiales de color. El límite es de 65 535 materiales. Para obtener más información sobre los límites de material, consulte límites.

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

Parámetros de espacio de colores

El motor de representación espera que los valores del color estén en el espacio lineal. Si un modelo se define mediante el espacio gamma, las siguientes opciones deben establecerse trueen :

  • gammaToLinearMaterial: convierte colores de material de espacio gamma a espacio lineal.
  • gammaToLinearVertex: convierte colores de vértices de espacio gamma a espacio lineal.

Nota:

En el caso de los formatos de archivo FBX, E57, PLY, LAS, LAZ y XYZ, estos valores se establecen true en de forma predeterminada. Para todos los demás formatos de archivo, el valor predeterminado es false.

Parámetros de escena

  • sceneGraphMode: define cómo se convierte el grafo de escena en el archivo de origen.
    • dynamic (valor predeterminado): todos los objetos del archivo se exponen como entidades en la API y se pueden transformar y pueden cambiar de elemento principal de manera independiente. En tiempo de ejecución, la jerarquía de nodos es idéntica a la estructura del archivo de origen.
    • static: similar a dynamic, pero los objetos del grafo de escena no pueden cambiar de elemento principal a otros objetos de forma dinámica en tiempo de ejecución. Para los modelos dinámicos que tienen muchas partes móviles, como la vista de explosión, la dynamic opción genera un modelo que es más eficaz para representar, pero static el modo todavía permite transformaciones de elementos individuales. Si no se requiere la reparentación dinámica, la static opción es la más adecuada para los modelos que tienen muchas partes individuales.
    • none: el gráfico de escenas se contrae en un objeto.

Cada modo tiene un rendimiento en tiempo de ejecución diferente. En el modo dynamic, el costo de rendimiento se escala linealmente con el número de entidades del gráfico, incluso cuando no se mueve ninguna parte. Use dynamic el modo solo cuando sea necesario mover muchas partes o subgráficos grandes simultáneamente. Un ejemplo es la animación de la vista de explosión.

El modo static también exporta el gráfico de escena completo. Las consultas espaciales devuelven partes individuales y cada elemento se puede modificar mediante invalidaciones de estado. Con este modo, la sobrecarga en tiempo de ejecución por objeto es insignificante. Este modo es ideal para escenas grandes en las que necesita inspección por objeto y cambios de transformación ocasionales en partes individuales, pero no para la reparentación de objetos.

El modo none tiene la sobrecarga en tiempo de ejecución más baja, así como tiempos de carga ligeramente mejores. La inspección o transformación de objetos individuales no es posible en este modo. Los casos de uso son, por ejemplo, modelos de fotogrametría que no comienzan con un gráfico de escena significativo.

Sugerencia

Muchas aplicaciones cargan varios modelos. Debe optimizar los parámetros de conversión para cada modelo en función de cómo lo use. Por ejemplo, si desea mostrar el modelo de un automóvil para que el usuario se desenlaza e inspeccione con detalle, primero conviértelo mediante dynamic el modo . Sin embargo, si también desea colocar el coche en un entorno de sala de presentación, puede convertir ese modelo mediante sceneGraphMode el uso de establecido staticen o incluso en none.

Parámetros de física

  • generateCollisionMesh: si necesita compatibilidad con consultas espaciales en un modelo, esta opción debe estar habilitada. La generación de mallas de colisión no agrega tiempo de conversión adicional y tampoco aumenta el tamaño del archivo de salida. El tiempo de carga y el costo en tiempo de ejecución de un modelo que tiene mallas de colisión solo es insignificantemente mayor. Puede dejar esta marca en el valor predeterminado (habilitado) a menos que tenga una razón específica para excluir un modelo de las consultas espaciales.

Materiales sin iluminación

  • unlitMaterials: de forma predeterminada, la conversión crea materiales de representación (PBR) basados físicamente. Cuando se establece esta opción, el convertidor trata en su lugar todos los materiales como materiales de color. Si tiene datos que ya incorporan iluminación, como los modelos creados a través de la fotogrametría, esta opción le permite aplicar rápidamente la conversión correcta para todos los materiales. No tendrá que invalidar cada material individualmente.

Conversión de formatos FBX anteriores y modelos de material de Phong

  • fbxAssumeMetallic: las versiones anteriores del formato FBX definen sus materiales mediante un modelo de material Phong. El proceso de conversión debe deducir cómo se asignan estos materiales al modelo PBR del representador. Normalmente esto funciona bien, pero puede surgir ambigüedad con materiales sin texturas, valores especulares altos ni colores albedo no grises. En este escenario, la conversión debe elegir entre priorizar los valores especulares altos, definir un material altamente reflectante y metálico en el que el color albedo se disuelva o priorizar el color albedo definiendo algo, como en un plástico colorido brillante. De forma predeterminada, el proceso de conversión supone que los valores muy especulares implican un material metálico en escenarios ambiguos. Puede establecer este parámetro false en para el efecto opuesto.

Invalidación del sistema de coordenadas

  • axis: use este parámetro para invalidar los vectores de unidad del sistema de coordenadas. Los valores predeterminados son ["+x", "+y", "+z"]. En teoría, el formato FBX tiene un encabezado en el que se definen esos vectores y la conversión usa esa información para transformar la escena. El formato GLTF también define un sistema de coordenadas fijas. En la práctica, algunos recursos tienen información incorrecta en su encabezado o se guardaron mediante una convención del sistema de coordenadas diferente. Esta opción permite invalidar el sistema de coordenadas que se va a compensar. Por ejemplo, "axis" : ["+x", "+z", "-y"] intercambia el eje Z y el eje Y y mantiene la entrega del sistema de coordenadas al invertir la dirección del eje Y.

Metadatos del nodo

  • metadataKeys: use este parámetro para especificar las claves de las propiedades de metadatos de nodo que desea mantener en el resultado de la conversión. Puede especificar claves exactas o claves de caracteres comodín. Las teclas comodín tienen el formato ABC* y coinciden con cualquier clave que comience por ABC. Los tipos de valor de metadatos admitidos son bool, int, float y string.

    En el caso de los archivos GLTF, estos datos proceden del objeto extras en los nodos. En el caso de los archivos FBX, estos datos proceden de los Properties70 datos de Model nodes. Para obtener más información, consulte la documentación de la herramienta de recursos 3D.

Al cargar un modelo con metadatos habilitados, la lista de entradas de metadatos de una entidad específica se puede recuperar a través de la función asincrónica QueryMetadataAsync.

Formato de vértice

Es posible ajustar el formato de vértice de una malla para cambiar la precisión del ahorro de memoria. Si el modelo tiene una superficie de memoria inferior, puede cargar modelos más grandes o lograr un mejor rendimiento. Sin embargo, dependiendo de los datos, el formato incorrecto puede afectar significativamente a la calidad de la representación.

Precaución

Cambiar el formato de vértice debe ser una última opción cuando los modelos ya no caben en la memoria o cuando se optimiza para obtener el mejor rendimiento posible. Los cambios pueden introducir fácilmente artefactos de representación, tanto obvios como sutiles. A menos que sepa qué buscar, no debe cambiar el valor predeterminado.

Puede realizar estos ajustes:

  • Incluya o excluya explícitamente flujos de datos específicos.
  • Reduzca la precisión de los flujos de datos para reducir la superficie de memoria.

La siguiente vertex sección del archivo JSON es opcional. Para las partes que no se especifican explícitamente, el servicio de conversión recurre a su configuración predeterminada.

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

Al forzar un componente a NONE, se garantiza que la malla de salida no tenga el flujo correspondiente.

Formatos de componentes por flujo de vértices

En la tabla siguiente se describen los formatos permitidos para los componentes respectivos:

Componente de vértice Formatos compatibles Uso en materiales
position 32_32_32_FLOAT (valor predeterminado), 16_16_16_16_FLOAT Posición del vértice. Siempre debe estar presente.
color0 8_8_8_8_UNSIGNED_NORMALIZED (valor predeterminado), NONE Colores de vértice. Vea useVertexColor la propiedad tanto en materiales de color como en materiales PBR, y vertexMix en materiales de color.
color1 8_8_8_8_UNSIGNED_NORMALIZED, NONE (valor predeterminado) Sin usar. Deje como valor predeterminado NONE.
normal 8_8_8_8_SIGNED_NORMALIZED (valor predeterminado), 16_16_16_16_FLOAT, NONE Se usa para la iluminación en materiales PBR.
tangent 8_8_8_8_SIGNED_NORMALIZED (valor predeterminado), 16_16_16_16_FLOAT, NONE Se usa para la iluminación con mapas normales en materiales PBR.
binormal 8_8_8_8_SIGNED_NORMALIZED (valor predeterminado), 16_16_16_16_FLOAT, NONE Se usa para la iluminación con mapas normales en materiales PBR.
texcoord0 32_32_FLOAT (valor predeterminado), 16_16_FLOAT, NONE Primera ranura de coordenadas de textura. Las texturas individuales, como albedo y el mapa normal, pueden usar la ranura 0 o 1, que se define en el archivo de origen.
texcoord1 32_32_FLOAT (valor predeterminado), 16_16_FLOAT, NONE Segunda ranura de coordenadas de textura. Las texturas individuales, como albedo y el mapa normal, pueden usar la ranura 0 o 1, que se define en el archivo de origen.

Formatos de componentes compatibles

En la tabla siguiente se describen las superficies de memoria de los formatos de componente admitidos:

Formato Descripción Bytes por vértice
32_32_FLOAT Precisión de punto flotante completo de dos componentes 8
16_16_FLOAT Precisión de punto flotante de dos componentes 4
32_32_32_FLOAT Precisión de punto flotante completo de tres componentes 12
16_16_16_16_FLOAT Precisión de punto flotante de cuatro componentes 8
8_8_8_8_UNSIGNED_NORMALIZED Byte de cuatro componentes, normalizado en el [0; 1] intervalo 4
8_8_8_8_SIGNED_NORMALIZED Byte de cuatro componentes, normalizado en el [-1; 1] intervalo 4

Procedimientos recomendados para los cambios del formato de componentes

  • position: es poco habitual que la precisión reducida sea suficiente. 16_16_16_16_FLOAT presenta artefactos de cuantificación notables, incluso para modelos pequeños.
  • normal, tangenty binormal: normalmente, estos valores se cambian juntos. A menos que haya artefactos de iluminación perceptibles derivados de la cuantificación normal, no hay ninguna razón para aumentar su precisión. Sin embargo, en algunos casos, estos componentes se pueden establecer NONEen :
    • normal, tangenty binormal solo se necesitan cuando se debe iluminar al menos un material del modelo. En Azure Remote Rendering, este escenario se produce cuando se usa un material de PBR en el modelo en cualquier momento.
    • tangent y binormal solo son necesarios cuando cualquiera de los materiales iluminados usa una textura de mapa normal.
  • texcoord0 y texcoord1 : las coordenadas de textura pueden usar una precisión reducida (16_16_FLOAT) cuando sus valores permanecen en el [0; 1] intervalo y cuando las texturas direcciondas tienen un tamaño máximo de 2048 × 2048 píxeles. Si se superan esos límites, la calidad de la asignación de texturas disminuye.

Ejemplo

Suponga que tiene un modelo de fotogrametría, cuya iluminación está preparada en las texturas. Todo lo que se necesita para representar el modelo son las posiciones de los vértices y las coordenadas de textura.

De forma predeterminada, el convertidor tiene que suponer que es posible que quiera usar materiales PBR en un modelo en algún momento, por lo que genera normaldatos , tangenty binormal para usted. Por lo tanto, el uso de memoria por vértice es position (12 bytes) + texcoord0 (8 bytes) + normal (4 bytes) + tangent (4 bytes) + binormal (4 bytes) = 32 bytes. Los modelos más grandes de este tipo pueden tener fácilmente muchos millones de vértices, lo que da lugar a modelos que pueden ocupar varios gigabytes de memoria. Estas grandes cantidades de datos afectan al rendimiento y es posible que incluso se agote la memoria.

Sabiendo que nunca necesita iluminación dinámica en el modelo y sabiendo que todas las coordenadas de textura están en el [0; 1] intervalo, puede establecer normal, tangenty binormal en NONEy establecer en texcoord0 precisión media (16_16_FLOAT), lo que da como resultado solo 16 bytes por vértice. Cuando los datos de malla se cortan a la mitad, puede cargar modelos más grandes y el rendimiento se puede mejorar.

Configuración de nubes de puntos

Cuando se convierte una nube de puntos, solo se usa un pequeño subconjunto de propiedades del esquema. Otras propiedades se omiten a menos que se especifiquen.

Las propiedades que afectan la conversión de nube de puntos son:

  • scaling: el mismo significado que para las mallas triangulares.
  • recenterToOrigin: el mismo significado que para las mallas triangulares.
  • axis: el mismo significado que para las mallas triangulares. Los valores predeterminados son ["+x", "+y", "+z"], pero la mayoría de los datos de la nube de puntos se giran en comparación con el propio sistema de coordenadas del representador. Para compensar, en la mayoría de los casos, ["+x", "+z", "-y"] corrige la rotación.
  • gammaToLinearVertex: similar a las mallas triangulares, esta marca indica si los colores de punto deben convertirse de espacio gamma a espacio lineal. El valor predeterminado para los formatos de nube de punto (archivos E57, PLY, LAS, LAZ y XYZ) es true.
  • generateCollisionMesh: similar a las mallas triangulares, para admitir consultas espaciales, debe habilitar esta marca.

Optimizaciones de memoria

El consumo de memoria del contenido cargado puede convertirse en un cuello de botella en el sistema de representación. Si la carga de memoria es demasiado grande, podría poner en peligro el rendimiento de la representación o hacer que el modelo no se cargue por completo. En este párrafo se describen algunas estrategias importantes para reducir la superficie de memoria.

Nota:

Las siguientes optimizaciones se aplican a las mallas triangulares. No se puede optimizar la salida de las nubes de punto mediante la configuración de la conversión.

Creación de instancias

En la creación de instancias, las mallas se reutilizan para las partes que tienen transformaciones espaciales distintas en lugar de cada parte que hace referencia a su propia geometría única. La creación de instancias tiene un impacto significativo en la superficie de memoria.

Los casos de uso de ejemplo para la instanciación son los tornillos de un modelo de motor o las sillas de un modelo arquitectónico.

Nota:

La creación de instancias puede mejorar significativamente el consumo de memoria (y, por tanto, los tiempos de carga), pero las mejoras en el rendimiento de la representación son insignificantes.

El servicio de conversión respeta la instanciación si las partes están marcadas en consecuencia en el archivo de origen. Sin embargo, la conversión no realiza análisis profundos adicionales de datos de malla para identificar partes reutilizables. La herramienta de creación de contenido y su canalización de exportación son los criterios decisivos para la configuración adecuada de la creación de instancias.

Una manera sencilla de probar si se conserva la información de creación de instancias durante la conversión es examinar las estadísticas de salida. En concreto, compruebe el numMeshPartsInstanced valor. Si el valor de numMeshPartsInstanced es mayor que cero, las mallas se comparten entre instancias.

Ejemplo: Configuración de creación de instancias en 3ds Max

Autodesk 3ds Max tiene distintos modos de clonación de objetos denominados Copiar, Instancia y Referencia. Los modos funcionan de forma diferente para la creación de instancias en el archivo .fbx exportado.

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

  • Copiar: en este modo, se clona la malla, por lo que no se usa ninguna instancia ( = numMeshPartsInstanced0).
  • Instancia: los dos objetos comparten la misma malla, por lo que se usa la creación de instancias ( = numMeshPartsInstanced1).
  • Referencia: se pueden aplicar modificadores distintos a las geometrías, por lo que el exportador elige un enfoque conservador y no usa la creación de instancias ( = numMeshPartsInstanced0).

Modo de composición basado en profundidad

Si la memoria es un problema, configure el representador mediante el modo de composición basado en profundidad. En este modo, la carga de GPU se distribuye entre varias GPU.

Reducir el tamaño del vértice

Como se describe en Procedimientos recomendados para los cambios en el formato de componente, ajustar el formato de vértice puede reducir la superficie de memoria. Sin embargo, esta opción debe ser la última opción que elija.

Tamaños de texturas

Según el tipo de escenario, la cantidad de datos de textura puede superar la memoria que se usa para los datos de malla. Los modelos de fotogrametría son candidatos. La configuración de la conversión no es una manera de reducir verticalmente las texturas de forma automática. Si es necesario, el escalado de texturas debe realizarse como un paso de preprocesamiento del lado cliente. Pero el paso de conversión elige un formato de compresión de textura adecuado:

  • Formato de archivo BC1 para texturas de color opaco
  • Formato de archivo BC7 para texturas de color de origen con canal alfa

Dado que el formato de archivo BC7 tiene dos veces la superficie de memoria del formato de archivo BC1, es importante asegurarse de que las texturas de entrada no proporcionan un canal alfa innecesario.

Casos de uso típicos

Encontrar una buena configuración de importación para un caso de uso específico puede ser un proceso tedioso. Por otro lado, la configuración de conversión podría tener un impacto significativo en el rendimiento del tiempo de ejecución.

Algunas clases específicas de casos de uso califican para optimizaciones específicas. Algunos ejemplos se describen en las secciones siguientes.

Caso de uso: Visualización arquitectónica o mapas exteriores grandes

Para escenarios que implican visualización arquitectónica o mapas exteriores grandes, tenga en cuenta los siguientes factores:

  • Estos tipos de escenas tienden a ser estáticos. No necesitan piezas extraíbles. En consecuencia, puede establecer en sceneGraphModestatic, o incluso en none, y mejorar el rendimiento en tiempo de ejecución. En static modo, el nodo raíz de la escena todavía se puede mover, girar y escalar. Por ejemplo, puede cambiar dinámicamente entre una escala de 1:1 (para la vista de primera persona) y una vista superior de tabla.

  • Si la aplicación no usa planos de corte, la marca opaqueMaterialDefaultSidedness debe desactivarse. Normalmente, la ganancia de rendimiento es del 20 al 30 %. Todavía puede usar planos de corte, pero no habrá una cara trasera cuando examine la parte interna de un objeto, que aparece contraintuitiva. Para obtener más información, consulte Representación de un solo lado.

Caso de uso: Modelos de fotogrametría

Al representar modelos de fotogrametría, normalmente no se necesita un gráfico de escenas. En este escenario, puede elegir establecer en sceneGraphModenone. Dado que esos modelos rara vez contienen un gráfico de escena complejo, es probable que el efecto de elegir esta opción sea insignificante. Dado que la iluminación ya recurre a las texturas, no se necesita iluminación dinámica. En este escenario:

  • Establezca la marca unlitMaterials en true para convertir todos los materiales en materiales de color sin iluminación.
  • Quite los datos innecesarios del formato de vértice. Consulte el ejemplo anterior.

Caso de uso: Visualización de máquinas compactas y otras

En estos casos de uso, los modelos suelen tener un alto grado de detalle en un volumen pequeño. El representador está muy optimizado para controlar bien estos casos. Sin embargo, la mayoría de las optimizaciones descritas en el caso de uso anterior no se aplican aquí. Las optimizaciones incluyen:

  • Las partes individuales deben ser seleccionables y extraíbles, por lo que sceneGraphMode debe establecerse en dynamic.
  • Las conversiones de rayo suelen ser una parte integral de la aplicación, por lo que se deben generar mallas de colisión.
  • Los planos de corte se ven mejor cuando la opaqueMaterialDefaultSidedness marca está habilitada.

Características en desuso

El establecimiento de parámetros de conversión de modelos mediante la conversión no específica del modelo Configuración.json sigue siendo compatible, pero está en desuso. En su lugar, use modelName> específico <del modelo. Nombre de archivo de conversión Configuración.json.

El uso de una material-override configuración para identificar un archivo de invalidación de material en el archivo de configuración de conversión sigue siendo compatible, pero está en desuso. En su lugar, use modelName> específico <del modelo. Nombre de archivo MaterialOverrides.json.

Pasos siguientes