Compartir a través de


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

En este artículo, descubrirá cómo configurar parámetros para una conversión de modelos.

Archivo de configuración

Si un archivo denominado <modelName>.ConversionSettings.json se encuentra en el contenedor de entrada junto al modelo de entrada <modelName>.<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.ConversionSettings.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 archivo box.ConversionSettings.json 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 de 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 uniformemente un modelo. El escalado se puede usar para aumentar o reducir un modelo, por ejemplo, para mostrar un modelo de compilación en la parte superior de una tabla. El escalado también es importante cuando un modelo se define en unidades distintas a los 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 con 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 parámetro scaling. 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 un modelo debe convertirse para que su rectángulo de selección se centre en el origen. Si el modelo de origen se desplaza lejos del origen, las incidencias de precisión del número de punto flotante pueden dar lugar a artefactos de representación. Centrar el modelo puede ayudar en este escenario.

  • opaqueMaterialDefaultSidedness: el motor de representación da por sentado que los materiales opacos son de doble cara. Si esa suposición no es verdadera para un modelo determinado, este parámetro debe establecerse en SingleSided. Para más información, consulte Representación de 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.

Captura de pantalla que muestra dos cubos de 68 921 triángulos de color y el efecto de desduplicación.

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 en true:

  • gammaToLinearMaterial: conversión de colores del material del espacio gamma al espacio lineal.
  • gammaToLinearVertex: conversión de colores del vértice del espacio gamma al espacio lineal.

Nota:

En el caso de los formatos de archivo FBX, E57, PLY, LAS, LAZ y XYZ, esta configuración se establece en true 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 gráfico 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. La jerarquía de nodos en tiempo de ejecución 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. En el caso de los modelos dinámicos con muchas partes móviles, como la vista de expansión, la opción dynamic genera un modelo más eficaz de representar, pero el modo static todavía permite transformaciones de partes individuales. Si no es necesario cambiar de elemento principal de forma dinámica, la opción static es la más adecuada para los modelos que tienen muchos elementos individuales.
    • none: el gráfico de escena 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 el modo dynamic 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 elementos individuales, y cada uno se puede modificar mediante invalidaciones de estado. Con este modo, la sobrecarga en tiempo de ejecución por objeto es insignificante. Este modo es idóneo para escenas grandes que requieren la inspección de todos los objetos y cambios ocasionales de transformación en elementos individuales, pero no cambiar el elemento principal de los 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 de cada modelo en función de cómo lo vaya a utilizar. Por ejemplo, si desea mostrar el modelo de un automóvil para que el usuario lo desmonte e inspeccione a fondo, primero debe convertirlo con el modo dynamic. Sin embargo, si también desea colocar el coche en un entorno de sala de presentación, puede convertir ese modelo mediante el uso de sceneGraphMode establecido static en o incluso en none.

Parámetros de física

  • generateCollisionMesh: si necesita compatibilidad con consultas espaciales en un modelo, debe habilitarse esta opción. 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 basados físicamente (PBR). 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, por ejemplo, los modelos creados a través de 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 de FBX definen sus materiales mediante un modelo de material de Phong. El proceso de conversión debe deducir cómo se asignan estos materiales al modelo de 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 decidir entre priorizar los valores especulares altos, definir un material metálico altamente reflectante en el que el color albedo se disuelve o priorizar el color albedo al definir algo similar a un plástico de colores brillantes. De forma predeterminada, en el proceso de conversión se da por sentado que los valores altamente especulares implican un material metálico en los escenarios ambiguos. Puede establecer este parámetro en false 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 de 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 fijo. En la práctica, algunos recursos tienen información incorrecta en su encabezado o se han guardado usando una convención diferente del sistema de coordenadas. Esta opción permite invalidar el sistema de coordenadas que se va a compensar. Por ejemplo, "axis" : ["+x", "+z", "-y"] intercambiará el eje Z y el eje Y y mantendrá la mano del sistema de coordenadas invirtiendo 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 conservar en el resultado de la conversión. Puede especificar claves exactas o claves de caracteres comodín. Las claves de caracteres comodín tienen el formato ABC* y coinciden con cualquier clave que empiece 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 datos de Properties70 en 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, en función 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 presentar fácilmente artefactos de representación, ambos obvios y 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 los flujos de datos para, a su vez, reducir la superficie de memoria.

La siguiente sección vertex 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 (predeterminado), 16_16_16_16_FLOAT Posición del vértice. Siempre debe estar presente.
color0 8_8_8_8_UNSIGNED_NORMALIZED (predeterminado), NONE Colores de vértice. Consulte la propiedad useVertexColor en materiales de color y en materiales PBR, y la propiedad vertexMix en materiales de color.
color1 8_8_8_8_UNSIGNED_NORMALIZED, NONE (predeterminado) Sin usar. Deje NONE como predeterminado.
normal 8_8_8_8_SIGNED_NORMALIZED (predeterminado), 16_16_16_16_FLOAT, NONE Se usa para la iluminación en materiales PBR.
tangent 8_8_8_8_SIGNED_NORMALIZED (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 (predeterminado), 16_16_16_16_FLOAT, NONE Se usa para la iluminación con mapas normales en materiales PBR.
texcoord0 32_32_FLOAT (predeterminado), 16_16_FLOAT, NONE Primera ranura de coordenadas de textura. Las texturas individuales como albedo y mapa normal pueden usar la ranura 0 o 1, que se define en el archivo de origen.
texcoord1 32_32_FLOAT (predeterminado), 16_16_FLOAT, NONE Segunda ranura de coordenadas de textura. Las texturas individuales como albedo y 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 del número de punto flotante completa de dos componentes 8
16_16_FLOAT Precisión del número de punto flotante media de dos componentes 4
32_32_32_FLOAT Precisión del número de punto flotante completa de tres componentes 12
16_16_16_16_FLOAT Precisión del número de punto flotante media de cuatro componentes 8
8_8_8_8_UNSIGNED_NORMALIZED Byte de cuatro componentes, normalizado en el intervalo [0; 1] 4
8_8_8_8_SIGNED_NORMALIZED Byte de cuatro componentes, normalizado en el intervalo [-1; 1] 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 perceptibles, incluso para modelos pequeños.
  • normal, tangent y 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. En algunos casos, sin embargo, estos componentes se pueden establecer en NONE:
    • normal, tangent y binormal solo son necesarios si 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 si alguno de los materiales de iluminación usa una textura de mapa normal.
  • texcoord0 y texcoord1: las coordenadas de textura pueden usar una precisión reducida (16_16_FLOAT) si sus valores permanecen en el intervalo [0; 1] y si las texturas tratadas tienen un tamaño máximo de 2,048 x 2,048 píxeles. Si se superan esos límites, la calidad de la asignación de textura disminuirá.

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 debe suponer que es posible que desee usar materiales de PBR en un modelo en algún momento, por lo que genera datos relativos a normal, tangent y binormal automáticamente. 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 que dan como resultado modelos que pueden aceptar varios gigabytes de memoria. Estas grandes cantidades de datos afectan al rendimiento y es posible que incluso se quede sin memoria.

Al saber que nunca va a necesitar iluminación dinámica en el modelo y que todas las coordenadas de textura están en el intervalo [0; 1], puede establecer normal, tangent y binormal en NONE, y establecer texcoord0 en 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: como en las mallas triangulares, esta marca indica si los colores de punto se deben convertir 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 de contenido cargado puede convertirse en un cuello de botella en el sistema de representación. Si la carga de memoria llega a ser demasiado grande, puede 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 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 instanciación tiene un impacto considerable 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 instanciación puede mejorar considerablemente 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 un análisis profundo adicional de los datos de la malla para identificar las partes que se pueden volver a usar. La herramienta de creación de contenido y su canalización de exportación son los criterios decisivos para la correcta configuración de la instanciación.

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 valor numMeshPartsInstanced. Si el valor de numMeshPartsInstanced es mayor que cero, las mallas se comparten entre las instancias.

Ejemplo: Configuración de la instanciación 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.

Captura de pantalla que muestra un ejemplo de clonación de un objeto mediante Autodesk 3ds Max.

  • Copiar: En este modo, se clona la malla, por lo que no se usa la instanciación (numMeshPartsInstanced = 0).
  • Instancia: Los dos objetos comparten la misma malla, por lo que se usa la instanciación (numMeshPartsInstanced = 1).
  • Referencia: se pueden aplicar distintos modificadores a las geometrías, por lo que el exportador elige un enfoque conservador y no utiliza la instanciación (numMeshPartsInstanced = 0).

Modo de composición basado en profundidad

Si la memoria es un problema, configure el representador con 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 los procedimientos recomendados para realizar cambios en el formato de los componentes, el ajuste del formato del 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

Dependiendo del tipo de escenario, la cantidad de datos de textura puede ser mayor que la memoria que se usa para los datos de la 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 fuera necesario, el escalado de textura debe realizarse como un paso del procesamiento previo del 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

Buscar 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 puede afectar de forma significativa al rendimiento en 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 sceneGraphMode en static, o incluso en none, y mejorar el rendimiento en tiempo de ejecución. En el modo static, 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 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 sceneGraphMode en none. 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 estos casos de manera adecuada. 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 poder seleccionarse y moverse, por lo que el 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 marca opaqueMaterialDefaultSidedness está habilitada.

Características en desuso

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

Todavía se admite el uso de material-override para identificar un archivo de invalidación de material en el archivo de configuración de conversión, pero está en desuso. En su lugar, use el nombre de archivo <modelName>.MaterialOverrides.json específico del modelo.

Pasos siguientes