Partager via


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>. ConversionSettings.json se trouve dans le conteneur d’entrée à côté du model d’entrée <modelName>.<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 box.ConversionSettings.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
}

Un fichier box.ConversionSettings.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 maillages 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. La mise à l’échelle est également importante quand un modèle est défini dans des unités différentes du mètre, car le moteur de rendu attend des mètres. Par exemple, si un modèle est défini en centimètres, l’application d’une échelle de 0,01 affiche 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 paramètre scaling. 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 pour que son cadre englobant soit centré à l’origine. Si un modèle source est éloigné de l’origine, les problèmes de précision à virgule flottante peuvent entraîner des artefacts de rendu. Le centrage du modèle peut aider dans ce scénario.

  • opaqueMaterialDefaultSidedness : le moteur de rendu part du principe que les matériaux opaques sont recto verso. Si cette hypothèse ne s’applique pas pour un modèle particulier, le paramètre doit être défini sur SingleSided. Pour plus d’informations, consultez Rendu unilatéral.

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 Limites.

Capture d’écran montrant deux cubes de 68 921 triangles colorés et l’effet de la déduplication.

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

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

Remarque

Pour les formats de fichiers FBX, E57, PLY, LAS, LAZ et XYZ, ces paramètres sont définis sur 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 manière 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. En runtime, la hiérarchie de nœuds au 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 avec de nombreuses parties mobiles, telle que la value d’explosion, l’option dynamic génère un modèle qui est plus efficace à restituer, mais le mode static autorise toujours les transformations de parties individuelles. Si le reparentage dynamique n’est pas requis, l’option static est la plus appropriée pour les modèles disposant 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 le mode dynamic 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 composant peut être modifié par le biais de 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, de modifier occasionnellement des modifications sur des parties individuelles, mais aucun objet n’est à nouveau apparenté.

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 photogrammétrie 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 que l’utilisateur doit démonter et examiner en détail, convertissez-le d’abord en utilisant le mode dynamic. Toutefois, si vous souhaitez également placer la voiture dans un environnement de salle d’exposition, vous pouvez convertir ce modèle en utilisant sceneGraphMode défini sur static, ou même sur none.

Paramètres physiques

  • generateCollisionMesh : si vous avez besoin de prendre en charge les 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 documents à l’aide d’un modèle de matériau Phong. Le processus de conversion doit déduire la manière dont ces matériaux sont mappés 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 prioriser les valeurs spéculaires élevées, définir un matériau très réfléchissant, un matériau métallique où la couleur Albedo est dissoute, ou prioriser la couleur Albedo, en définissant quelque chose comme un plastique à couleur brillante. 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 sur false pour obtenir l’effet opposé.

Substitution 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 contient 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 fixe. Dans la pratique, certaines ressources contiennent des informations incorrectes dans leur en-tête ou ont été enregistrées avec 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"] va échanger l’axe Z et l’axe Y et maintenir l’orientation du système de coordonnées en inversant le sens de l’axe Y.

Métadonnées de nœud

  • metadataKeys : utilisez ce paramètre pour spécifier les clés des propriétés de métadonnées de nœud que vous souhaitez conserver dans le résultat de la conversion. Vous pouvez spécifier des clés exactes ou des clés génériques . Les clés génériques 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 extras sur les nœuds. Pour les fichiers FBX, ces données proviennent des données Properties70 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 faire des économies de mémoire en sacrifiant la précision. 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, en fonction de vos données, le mauvais format peut avoir un impact significatif sur 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, qui peuvent être aussi bien évidents que 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éduire la précision des flux de données pour réduire l’encombrement mémoire.

La section vertex suivante dans le 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. Consultez la propriété useVertexColor dans matériaux de couleur et matériaux PBR, et vertexMix dans matériaux de couleur.
color1 8_8_8_8_UNSIGNED_NORMALIZED, NONE (par défaut) Inutilisé. Laissez 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 comme albédo et 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 comme albédo et 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 partielle à deux composants 4
32_32_32_FLOAT Précision à virgule flottante complète à trois composants 12
16_16_16_16_FLOAT Précision à virgule flottante partielle à quatre composants 8
8_8_8_8_UNSIGNED_NORMALIZED Octet à quatre composants, normalisé à la plage [0; 1] 4
8_8_8_8_SIGNED_NORMALIZED Octet à quatre composants, normalisé à la plage [-1; 1] 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 présente des artefacts de quantification perceptibles, même pour les petits modèles.
  • normal, tangent et binormal : en général, 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, tangent et binormal sont nécessaires uniquement lorsqu’au moins un matériau du modèle doit être éclairé. 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 cartographique 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 plage de [0; 1] et que les textures adressées ont une taille maximale de 2 048 x 2 048 pixels. Si ces limites sont dépassées, la qualité du mappage de texture réduit.

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 pouvez utiliser des matériaux PBR sur un modèle à un moment donné, et il génère donc des données normal, tangent et binormal pour vous. L’utilisation de la mémoire par vertex est de position (12 octets) + texcoord0 (8 octets) + normal (4 octets) + tangent (4 octets) + binormal (4 octets) = 32 octets. Les modèles plus grands de ce type peuvent facilement avoir plusieurs millions de vertex, entraînant des modèles qui peuvent occuper plusieurs gigaoctets de mémoire. Ces grandes quantités de données affectent les performances et vous pourriez même manquer de mémoire.

Sachant que vous n’avez jamais besoin d’éclairage dynamique sur le modèle et que vous savez que toutes les coordonnées de texture se trouvent dans la plage [0; 1], vous pouvez définir normal, tangentet binormal sur NONE, et définir texcoord0 sur la demi-précision (16_16_FLOAT), ce qui ne fait que 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 nuage de points 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 : similaire aux maillages triangulaires, cet indicateur indique si les couleurs de point doivent être converties de l’espace gamma en espace linéaire. La valeur par défaut pour les formats cloud de point (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. Une charge utile trop importante de la mémoire risque de compromettre les performances de rendu ou d’empêcher le modèle de se charger entièrement. 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 donc les temps de chargement), mais les améliorations obtenues des performances de rendu ne sont pas significatives.

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 donc les critères déterminants d’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, vérifiez la valeur numMeshPartsInstanced. Si la valeur de numMeshPartsInstanced est supérieure à zéro, les maillages sont partagés entre les instances.

Example : configuration de l’instanciation dans 3ds Max

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

Capture d’écran montrant un exemple de clonage d’un objet à l’aide d’Autodesk 3ds Max.

  • Copy : dans ce mode, le maillage est cloné. De ce fait, aucune instanciation n’est utilisée (numMeshPartsInstanced = 0).
  • Instance : les deux objets partagent le même maillage. L’instanciation est donc utilisée (numMeshPartsInstanced = 1).
  • Reference : des modificateurs distincts peuvent être appliqués aux géométries, de sorte que l’exportateur choisit une approche conservatrice et n’utilise pas l’instanciation (numMeshPartsInstanced = 0).

Mode de composition basé sur la profondeur

Si la mémoire pose problème, configurez le convertisseur avec le mode de composition à base de profondeur. Dans ce mode, la charge utile GPU est distribuée sur plusieurs GPU.

Réduction de la taille de vertex

Comme nous l’avons vu dans Meilleures pratiques pour les modifications de format de composant, la modification 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 diminution des textures doit être effectuée dans une é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.

Cas d’usage 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 d’exécution.

Certaines classes spécifiques de cas d’usage se qualifient pour des optimisations spécifiques. Quelques 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 sceneGraphMode sur static , ou même sur none, et améliorer les performances du runtime. En mode static, 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 rendu unilatéral.

Cas d’usage : Modèles de photogrammétrie

Lorsque vous affichez des modèles de photogrammétrie, vous n’avez généralement pas besoin d’un graphe de scène. Dans ce scénario, vous pouvez choisir de définir sceneGraphMode sur none. É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 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 convertisseur est fortement optimisé pour gérer ce genre de cas. 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 pièces individuelles doivent être sélectionnables et mobiles, et l’indicateur sceneGraphMode doit donc être défini 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 du nom de fichier conversionSettings.json non spécifique au modèle est toujours prise en charge, mais elle est déconseillée. Utilisez plutôt le nom du fichier spécifique au modèle spécifique <modelName>.ConversionSettings.json.

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

Étapes suivantes