Configurer les paramètres de conversion de modèle

Dans cet article, découvrez comment configurer des paramètres pour une conversion de modèle.

Fichier de paramètres

Si un fichier appelé <modelName>. La conversion Paramètres.json se trouve dans le conteneur d’entrée en regard du model modelName> du modèle <d’entrée.<ext>, puis le fichier est utilisé pour fournir une configuration supplémentaire pour le processus de conversion de modèle. Par exemple, lorsque vous convertissez box.gltf, vous utiliseriez la zone. Conversion Paramètres.json pour définir des paramètres pour la conversion de modèle.

Le contenu du fichier de paramètres de conversion JSON doit avoir ce schéma :

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

Une boîte. Le fichier conversion Paramètres.json peut ressembler à cet exemple :

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

Le schéma de conversion d’un maillage triangulaire et d’un nuage de points est identique. Toutefois, une conversion de nuage de points utilise un sous-ensemble strict de fonctionnalités par rapport à une conversion de maillage triangulaire.

Paramètres pour un maillage triangulaire

Lorsque vous convertissez un maillage triangulaire, comme à partir d’un fichier .fbx , tous les paramètres de l’exemple de schéma présenté dans la section précédente affectent le résultat de la conversion. Les sections suivantes vous donnent une explication détaillée des paramètres.

Paramètres Geometry

  • scaling: ce paramètre met à l’échelle un modèle uniformément. La mise à l’échelle peut être utilisée pour augmenter ou réduire un modèle, par exemple pour afficher un modèle de construction sur une table supérieure. La mise à l’échelle est également importante lorsqu’un modèle est défini en unités autres que les compteurs, car le moteur de rendu attend des compteurs. Par exemple, si un modèle est défini en centimètres, l’application d’une échelle de 0,01 restitue le modèle à la taille correcte. Certains formats de données sources (par exemple, les fichiers .fbx ) fournissent un indicateur de mise à l’échelle unitaire. Dans ce cas, la conversion met implicitement à l’échelle le modèle en unités de compteur. La mise à l’échelle implicite fournie par le format source est appliquée au-dessus du scaling paramètre. Le facteur de mise à l’échelle final est appliqué aux vertex géométriques et aux transformations locales des nœuds de graphique de scène. La mise à l’échelle de la transformation de l’entité racine reste inchangée.

    Important

    La présentation et le démarrage rapide peuvent compenser toute mise à l’échelle du temps de conversion, car elles ont chacune une fonctionnalité intégrée de mise à l’échelle automatique. Pour plus d’informations, consultez le guide de résolution des problèmes.

  • recenterToOrigin: ce paramètre indique qu’un modèle doit être converti afin que son cadre englobant soit centré à l’origine. Si un modèle source est déplacé loin de l’origine, les problèmes de précision à virgule flottante peuvent entraîner des artefacts de rendu. Le centre du modèle peut vous aider dans ce scénario.

  • opaqueMaterialDefaultSidedness: le moteur de rendu part du principe que les matériaux opaques sont double face. Si cette hypothèse n’est pas vraie d’un modèle particulier, ce paramètre doit être défini sur SingleSided. Pour plus d’informations, consultez rendu à côté unique.

Déduplication matérielle

  • deduplicateMaterials: ce paramètre active ou désactive la déduplication automatique des matériaux qui partagent les mêmes propriétés et textures. La déduplication se produit après le traitement des remplacements de matériel. Elle est activée par défaut.

  • Si un modèle a plus de 65 535 matériaux même après la déduplication, le service tente de fusionner des matériaux qui ont des propriétés similaires. En dernière option, tous les matériaux qui dépassent la limite sont remplacés par un matériau d’erreur rouge.

La figure suivante montre deux cubes de 68 921 triangles colorés. L’exemple gauche est avant la déduplication, avec 68 921 matériaux de couleur. L’exemple approprié est après la déduplication, avec 64 000 matériaux de couleur. La limite est de 65 535 matériaux. Pour plus d’informations sur les limites matérielles, consultez les limites.

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

Paramètres d’espace colorimétrique

Le moteur de rendu s’attend à ce que les valeurs de couleur soient dans l’espace linéaire. Si un modèle est défini à l’aide de l’espace gamma, les options suivantes doivent être définies truesur :

  • gammaToLinearMaterial: convertissez les couleurs de matériau de l’espace gamma en espace linéaire.
  • gammaToLinearVertex: convertissez les couleurs de vertex de l’espace gamma en espace linéaire.

Remarque

Pour les formats de fichier FBX, E57, PLY, LAS, LAZ et XYZ, ces paramètres sont définis true par défaut. Pour tous les autres formats de fichier, la valeur par défaut est false.

Paramètres de scène

  • sceneGraphMode: définit la façon dont le graphique de scène dans le fichier source est converti.
    • dynamic (valeur par défaut) : tous les objets du fichier sont exposés en tant qu’entités dans l’API et peuvent être transformés et reapparentés arbitrairement. Au moment de l’exécution, la hiérarchie de nœuds est identique à la structure dans le fichier source.
    • static : semblable à dynamic, mais les objets dans le graphique de scène ne peuvent pas être réapparentés à d’autres objets de manière dynamique au moment de l’exécution. Pour les modèles dynamiques qui ont de nombreuses parties mobiles, telles que la vue d’explosion, l’option dynamic génère un modèle plus efficace pour le rendu, mais le static mode autorise toujours les transformations de parties individuelles. Si la réparentation dynamique n’est pas nécessaire, l’option static est la plus adaptée aux modèles qui ont de nombreuses parties individuelles.
    • none: le graphique de scène est réduit en un seul objet.

Chaque mode a des performances d’exécution différentes. En mode dynamic, le coût des performances est mis à l’échelle de manière linéaire avec le nombre d’entités dans le graphique, même si aucune partie n’est déplacée. Utilisez dynamic le mode uniquement lorsqu’il est nécessaire de déplacer plusieurs parties ou sous-graphes volumineux simultanément. Voici un exemple d’animation de vue d’explosion.

Le mode static exporte également le graphique complet de la scène. Les requêtes spatiales retournent des parties individuelles, et chaque partie peut être modifiée via des remplacements d’état. Avec ce mode, la charge d’exécution par objet est négligeable. Ce mode est idéal pour les grandes scènes dans lesquelles vous avez besoin d’une inspection par objet et de modifications occasionnelles de transformation sur des parties individuelles, mais pas de réparentation d’objet.

Le mode none a la surcharge d’exécution la plus basse et des temps de chargement légèrement meilleurs. L’inspection ou la transformation d’objets uniques n’est pas possible dans ce mode. Les cas d’usage sont, par exemple, des modèles photogrammetry qui ne commencent pas par un graphique de scène explicite.

Conseil

De nombreuses applications chargent plusieurs modèles. Vous devez optimiser les paramètres de conversion pour chaque modèle en fonction de la façon dont vous l’utiliserez. Par exemple, si vous souhaitez afficher le modèle d’une voiture pour que l’utilisateur se sépare et inspecte en détail, commencez par le convertir dynamic en mode. Toutefois, si vous souhaitez également placer la voiture dans un environnement de salle d’exposition, vous pouvez convertir ce modèle en staticutilisant sceneGraphMode défini sur , ou même sur none.

Paramètres physiques

  • generateCollisionMesh: Si vous avez besoin de la prise en charge des requêtes spatiales sur un modèle, cette option doit être activée. La génération de maillage de collision n’ajoute pas de temps de conversion supplémentaire, et elle n’augmente pas également la taille du fichier de sortie. Le temps de chargement et le coût d’exécution d’un modèle qui a des maillages de collisions n’est que faiblement plus élevé. Vous pouvez laisser cet indicateur à la valeur par défaut (activée) sauf si vous avez une raison spécifique d’exclure un modèle des requêtes spatiales.

Matériaux non éclairés

Conversion à partir de formats FBX antérieurs et de modèles matériels Phong

  • fbxAssumeMetallic: les versions antérieures du format FBX définissent leurs matériaux à l’aide d’un modèle de matériau Phong. Le processus de conversion doit déduire la façon dont ces matériaux correspondent au modèle PBR du convertisseur. Ce mappage fonctionne généralement bien, mais une ambiguïté peut exister lorsqu’un matériau n’a pas de texture, de valeurs spéculaires élevées et une couleur Albedo non grisée. Dans ce scénario, la conversion doit choisir entre hiérarchiser les valeurs spéculaires élevées, définir un matériau hautement réfléchissant et métallique où la couleur albedo se dissout ou hiérarchiser la couleur albedo en définissant quelque chose, comme dans un plastique coloré brillant. Par défaut, le processus de conversion suppose que les valeurs hautement spéculaires impliquent un matériau métallique dans des scénarios ambigus. Vous pouvez définir ce paramètre pour false l’effet opposé.

Remplacement du système de coordonnées

  • axis: utilisez ce paramètre pour remplacer les vecteurs d’unité système de coordonnées. Les valeurs par défaut sont ["+x", "+y", "+z"]. En théorie, le format FBX a un en-tête dans lequel ces vecteurs sont définis et la conversion utilise ces informations pour transformer la scène. Le format GLTF définit également un système de coordonnées fixes. Dans la pratique, certaines ressources ont des informations incorrectes dans leur en-tête ou ont été enregistrées à l’aide d’une convention de système de coordonnées différente. Cette option vous permet de remplacer le système de coordonnées pour compenser cela. Par exemple, "axis" : ["+x", "+z", "-y"] échange l’axe Z et l’axe Y et maintient la remise du système de coordonnées en inversé la direction de l’axe Y.

Métadonnées de nœud

  • metadataKeys: utilisez ce paramètre pour spécifier des clés de propriétés de métadonnées de nœud que vous souhaitez conserver dans le résultat de conversion. Vous pouvez spécifier des clés exactes ou des clés génériques . Les touches wild carte sont au format ABC* et correspondent à n’importe quelle clé commençant par ABC. Les types de valeurs de métadonnées pris en charge sont bool, int, float et string.

    Pour les fichiers GLTF, ces données proviennent de l’objet supplémentaire sur les nœuds. Pour les fichiers FBX, ces données proviennent des Properties70 données sur Model nodes. Pour plus d’informations, consultez la documentation de votre outil de ressources 3D.

Lors du chargement d’un modèle avec les métadonnées activées, la liste d’entrées de métadonnées d’une entité spécifique peut être récupérée via la fonction QueryMetadataAsync asynchrone.

Format de vertex

Il est possible d’ajuster le format de vertex d’un maillage pour échanger une précision pour économiser de la mémoire. Si votre modèle a une empreinte mémoire inférieure, vous pouvez charger des modèles plus volumineux ou obtenir de meilleures performances. Toutefois, selon vos données, le mauvais format peut affecter considérablement la qualité du rendu.

Attention

La modification du format de vertex doit être une dernière option lorsque les modèles ne tiennent plus en mémoire, ou lorsque vous optimisez les meilleures performances possibles. Les modifications peuvent facilement introduire des artefacts de rendu, à la fois évidents et subtils. À moins de savoir ce à quoi vous devez prêter attention, il est déconseillé de modifier la valeur par défaut.

Vous pouvez effectuer ces ajustements :

  • Incluez ou excluez explicitement des flux de données spécifiques.
  • Réduisez la précision des flux de données pour réduire l’empreinte mémoire.

La section suivante vertex du fichier JSON est facultative. Pour chaque partie qui n’est pas explicitement spécifiée, le service de conversion revient à sa valeur par défaut.

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

En forçant un composant sur NONE, il est garanti que le maillage de sortie n’a pas le flux respectif.

Formats de composant par flux de vertex

Le tableau suivant décrit les formats autorisés pour les composants respectifs :

Composant vertex Formats pris en charge Utilisation dans les matériaux
position 32_32_32_FLOAT (par défaut), 16_16_16_16_FLOAT Position de vertex. Doit toujours être présent.
color0 8_8_8_8_UNSIGNED_NORMALIZED (par défaut), NONE Couleurs de vertex. Voir useVertexColor la propriété à la fois dans les matériaux de couleur et les matériaux PBR, et vertexMix dans les matériaux de couleur.
color1 8_8_8_8_UNSIGNED_NORMALIZED, NONE (par défaut) Inutilisé. Conservez la valeur par défaut NONE.
normal 8_8_8_8_SIGNED_NORMALIZED (par défaut), 16_16_16_16_FLOAT, NONE Utilisé pour l’éclairage dans les matériaux PBR.
tangent 8_8_8_8_SIGNED_NORMALIZED (par défaut), 16_16_16_16_FLOAT, NONE Utilisé pour l’éclairage avec des cartes normales dans des matériaux PBR.
binormal 8_8_8_8_SIGNED_NORMALIZED (par défaut), 16_16_16_16_FLOAT, NONE Utilisé pour l’éclairage avec des cartes normales dans des matériaux PBR.
texcoord0 32_32_FLOAT (par défaut), 16_16_FLOAT, NONE Premier emplacement de coordonnées de texture. Les textures individuelles telles que l’albedo et la carte normale peuvent utiliser l’emplacement 0 ou 1, qui est défini dans le fichier source.
texcoord1 32_32_FLOAT (par défaut), 16_16_FLOAT, NONE Deuxième emplacement de coordonnées de texture. Les textures individuelles telles que l’albedo et la carte normale peuvent utiliser l’emplacement 0 ou 1, qui est défini dans le fichier source.

Formats de composant pris en charge

Le tableau suivant décrit les empreintes mémoire des formats de composants pris en charge :

Format Description Octets par vertex
32_32_FLOAT Précision à virgule flottante complète à deux composants 8
16_16_FLOAT Précision à virgule flottante à deux composants 4
32_32_32_FLOAT Précision à virgule flottante complète en trois composants 12
16_16_16_16_FLOAT Précision à virgule flottante à quatre composants 8
8_8_8_8_UNSIGNED_NORMALIZED Octet à quatre composants, normalisé dans la [0; 1] plage 4
8_8_8_8_SIGNED_NORMALIZED Octet à quatre composants, normalisé dans la [-1; 1] plage 4

Meilleures pratiques pour les modifications de format de composant

  • position : il est rare que la précision réduite soit suffisante. 16_16_16_16_FLOAT introduit des artefacts de quantisation notables, même pour les petits modèles.
  • normal, tangentet binormal: Généralement, ces valeurs sont modifiées ensemble. À moins qu’il y ait des artefacts d’éclairage perceptibles découlant d’une quantification normale, il n’y a aucune raison d’augmenter leur précision. Dans certains cas, toutefois, ces composants peuvent être définis sur NONE:
    • normal, tangentet binormal sont nécessaires uniquement quand au moins un matériau dans le modèle doit être allumé. Dans Azure Remote Rendering, ce scénario se produit lorsqu’un matériau PBR est utilisé sur le modèle à tout moment.
    • tangent et binormal sont nécessaires uniquement lorsque l’un des matériaux éclairés utilise une texture de carte normale.
  • texcoord0 et texcoord1 : les coordonnées de texture peuvent utiliser une précision réduite (16_16_FLOAT) lorsque leurs valeurs restent dans la [0; 1] plage et lorsque les textures traitées ont une taille maximale de 2 048 × 2 048 pixels. Si ces limites sont dépassées, la qualité du mappage de texture diminue.

Exemple

Supposons que vous avez un modèle de photogrammétrie qui a une lumière intégrée dans les textures. Pour restituer le modèle, il vous suffit des positions de vertex et des coordonnées de texture.

Par défaut, le convertisseur doit supposer que vous souhaiterez peut-être utiliser des matériaux PBR sur un modèle à un moment donné, afin qu’il génère , tangentet binormal les normaldonnées pour vous. Par conséquent, l’utilisation de la mémoire par vertex est position (12 octets) + texcoord0 (8 octets) + normal (4 octets) + tangent (4 octets) + binormal (4 octets) = 32 octets. Les modèles plus volumineux de ce type peuvent facilement avoir plusieurs millions de sommets, ce qui permet de prendre plusieurs gigaoctets de mémoire. De telles quantités de données affectent les performances, et vous risquez même de manquer de mémoire.

Sachant que vous n’avez jamais besoin d’éclairage dynamique sur le modèle et que toutes les coordonnées de texture se trouvent dans la [0; 1] plage, vous pouvez définir normal, tangentet binormaltexcoord0 définir NONEsur demi-précision (16_16_FLOAT), ce qui entraîne seulement 16 octets par vertex. Lorsque les données de maillage sont coupées en moitié, vous pouvez charger des modèles plus volumineux et les performances sont potentiellement améliorées.

Paramètres des nuages de points

Lorsqu’un cloud de point est converti, seul un petit sous-ensemble de propriétés du schéma est utilisé. D’autres propriétés sont ignorées, sauf si elles sont spécifiées.

Les propriétés qui ont un effet sur la conversion de nuage de points sont les suivantes :

  • scaling: Même signification que pour les maillages triangulaires.
  • recenterToOrigin: Même signification que pour les maillages triangulaires.
  • axis: Même signification que pour les maillages triangulaires. Les valeurs par défaut sont ["+x", "+y", "+z"], mais la plupart des données cloud point sont pivotées par rapport au système de coordonnées du convertisseur. Pour compenser, dans la plupart des cas, ["+x", "+z", "-y"] corrige la rotation.
  • gammaToLinearVertex: Semblable aux maillages triangulaires, cet indicateur indique si les couleurs de point doivent être converties de l’espace gamma à l’espace linéaire. La valeur par défaut pour les formats cloud de point (fichiers E57, PLY, LAS, LAZ et XYZ) est true.
  • generateCollisionMesh: Comme pour les maillages triangulaires, pour prendre en charge les requêtes spatiales, vous devez activer cet indicateur.

Optimisations de mémoire

La consommation de mémoire du contenu chargé peut devenir un goulot d’étranglement sur le système de rendu. Si la charge utile de mémoire devient trop volumineuse, elle risque de compromettre les performances de rendu ou de ne pas charger complètement le modèle. Ce paragraphe présente quelques stratégies importantes pour réduire l’empreinte mémoire.

Remarque

Les optimisations suivantes s’appliquent aux maillages triangulaires. Vous ne pouvez pas optimiser la sortie des nuages de points en configurant les paramètres de conversion.

Instanciation

Dans l’instanciation, les maillages sont réutilisés pour les parties qui ont des transformations spatiales distinctes au lieu de chaque partie référençant sa propre géométrie unique. L’instanciation a un impact significatif sur l’empreinte mémoire.

Parmi ses cas d’usage, citons par exemple les vis d’un modèle de moteur ou les chaises dans un modèle architectural.

Remarque

L’instanciation peut améliorer considérablement la consommation de mémoire (et ainsi les temps de chargement), mais les améliorations apportées aux performances de rendu sont insignifiantes.

Le service de conversion respecte l’instanciation si les parties concernées sont marquées en conséquence dans le fichier source. Toutefois, la conversion n’effectue pas d’analyse approfondie supplémentaire des données de maillage pour identifier les parties réutilisables. L’outil de création de contenu et son pipeline d’exportation sont les critères décisifs pour une configuration d’instanciation appropriée.

Un moyen simple de tester si les informations d’instanciation sont conservées pendant la conversion consiste à examiner les statistiques de sortie. Plus précisément, case activée la numMeshPartsInstanced valeur. Si la valeur pour numMeshPartsInstanced laquelle la valeur est supérieure à zéro, les maillages sont partagés entre les instances.

Exemple : Configuration de l’instanciation dans 3ds Max

Autodesk 3ds Max a des modes distincts de clonage d’objets appelés Copy, Instance et Reference. Les modes fonctionnent différemment pour l’instanciation dans le fichier .fbx exporté.

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

  • Copie : dans ce mode, le maillage est cloné, donc aucune instanciation n’est utilisée ( = numMeshPartsInstanced0).
  • Instance : les deux objets partagent le même maillage, de sorte que l’instanciation est utilisée ( = numMeshPartsInstanced1).
  • Référence : des modificateurs distincts peuvent être appliqués aux géométries, de sorte que l’exportateur choisit une approche conservatrice et n’utilise pas d’instanciation ( = numMeshPartsInstanced0).

Mode de composition basé sur la profondeur

Si la mémoire est un problème, configurez le renderer à l’aide du mode de composition basé sur la profondeur. Dans ce mode, la charge utile GPU est distribuée sur plusieurs GPU.

Réduction de la taille de vertex

Comme indiqué dans Les meilleures pratiques pour les modifications de format de composant, l’ajustement du format de vertex peut réduire l’empreinte mémoire. Toutefois, cette option doit être la dernière option que vous choisissez.

Taille des textures

Selon le type de scénario, la quantité de données de texture peut dépasser la mémoire utilisée pour les données de maillage. Les modèles de photogrammétrie sont des candidats. La configuration de la conversion n’offre aucun moyen de réduire automatiquement les textures. Si nécessaire, la mise à l’échelle de texture doit être effectuée en tant qu’étape de prétraitement côté client. Mais l’étape de conversion choisit un format de compression de texture approprié :

  • Format de fichier BC1 pour les textures de couleurs opaques
  • Format de fichier BC7 pour les textures de couleur source avec canal alpha

Étant donné que le format de fichier BC7 a deux fois l’empreinte mémoire du format de fichier BC1, il est important de s’assurer que les textures d’entrée ne fournissent pas de canal alpha inutile.

Études de cas classiques

La recherche de bons paramètres d’importation pour un cas d’usage spécifique peut être un processus fastidieux. En revanche, les paramètres de conversion peuvent avoir un impact significatif sur les performances du runtime.

Certaines classes spécifiques de cas d’usage se qualifient pour des optimisations spécifiques. Certains exemples sont décrits dans les sections suivantes.

Cas d’usage : Visualisation architecturale ou cartes extérieures volumineuses

Pour les scénarios qui impliquent une visualisation architecturale ou de grandes cartes extérieures, tenez compte des facteurs suivants :

  • Ces types de scènes ont tendance à être statiques. Ils n’ont pas besoin de pièces mobiles. En conséquence, vous pouvez définir sceneGraphModestaticsur , ou même sur none, et améliorer les performances du runtime. En static mode, le nœud racine de la scène peut toujours être déplacé, pivoté et mis à l’échelle. Par exemple, il peut basculer dynamiquement d’une échelle de 1 :1 (pour la vue de première personne) et d’une vue de table.

  • Si l’application n’utilise pas de plans de coupe, l’indicateur opaqueMaterialDefaultSidedness doit être désactivé. Le gain de performances est généralement de 20 à 30 %. Vous pouvez toujours utiliser des plans coupés, mais il n’y aura pas de face arrière lorsque vous examinez la partie interne d’un objet, qui apparaît contre-intuitif. Pour plus d’informations, consultez le rendu à côté unique.

Cas d’usage : Modèles photogrammetry

Lorsque vous affichez des modèles photogrammetry, vous n’avez généralement pas besoin d’un graphe de scène. Dans ce scénario, vous pouvez choisir de définir sceneGraphModenonela valeur . Étant donné que ces modèles contiennent rarement un graphique de scène complexe, l’effet du choix de cette option est probablement négligeable. Étant donné que l’éclairage est déjà intégré aux textures, aucun éclairage dynamique n’est nécessaire. Dans ce scénario :

  • Définissez l’indicateur unlitMaterials sur true pour transformer tous les matériaux en matériaux de couleur non éclairés.
  • Supprimez les données inutiles du format de vertex. Consultez l’exemple précédent.

Cas d’usage : visualisation des machines compactes et d’autres

Dans ces cas d’usage, les modèles ont souvent un degré élevé de détails dans un petit volume. Le renderer est fortement optimisé pour gérer ces cas correctement. Toutefois, la plupart des optimisations décrites dans le cas d’usage précédent ne s’appliquent pas ici. Les optimisations sont les suivantes :

  • Les parties individuelles doivent être sélectionnables et mobiles. Elles doivent donc sceneGraphMode être définies sur dynamic.
  • Les raycastings font généralement partie intégrante de l’application. Les maillages de collision doivent donc être générés.
  • Les plans de coupe s’affichent mieux lorsque l’indicateur opaqueMaterialDefaultSidedness est activé.

Fonctionnalités dépréciées

La définition des paramètres de conversion de modèle à l’aide de la conversion non spécifique au modèle Paramètres.json est toujours prise en charge, mais elle est déconseillée. Utilisez plutôt modelName> spécifique <au modèle. Conversion Paramètres.json nom de fichier.

L’utilisation d’un material-override paramètre pour identifier un fichier de remplacement de matériel dans le fichier de paramètres de conversion est toujours prise en charge, mais elle est déconseillée. Utilisez plutôt modelName> spécifique <au modèle. Nom de fichier MaterialOverrides.json.

Étapes suivantes