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ètrescaling
. 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 surSingleSided
. 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.
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’optiondynamic
génère un modèle qui est plus efficace à restituer, mais le modestatic
autorise toujours les transformations de parties individuelles. Si le reparentage dynamique n’est pas requis, l’optionstatic
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
unlitMaterials
: par défaut, la conversion crée des matériaux de rendu physiquement basés sur des données (PBR). Lorsque cette option est définie, le convertisseur traite à la place tous les matériaux comme des matériaux de couleur. Si vous disposez de données qui incorporent déjà de l’éclairage, comme des modèles créés par photogrammétrie, cette option vous permet d’appliquer rapidement la bonne conversion pour tous les matériau. Vous n’aurez pas besoin de remplacer chaque matériau individuellement.
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 surfalse
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 formatABC*
et correspondent à n’importe quelle clé commençant parABC
. Les types de valeurs de métadonnées pris en charge sontbool
,int
,float
etstring
.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
surModel 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
etbinormal
: 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 surNONE
:normal
,tangent
etbinormal
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
etbinormal
sont nécessaires uniquement lorsque l’un des matériaux éclairés utilise une texture cartographique normale.
texcoord0
ettexcoord1
: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
, tangent
et 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) esttrue
.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é.
- 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
surstatic
, ou même surnone
, et améliorer les performances du runtime. En modestatic
, 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
surtrue
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 surdynamic
. - 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.