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 duscaling
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 surSingleSided
. 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.
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 true
sur :
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’optiondynamic
génère un modèle plus efficace pour le rendu, mais lestatic
mode autorise toujours les transformations de parties individuelles. Si la réparentation dynamique n’est pas nécessaire, l’optionstatic
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 static
utilisant 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
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 avez des données qui intègrent déjà l’éclairage, comme les modèles créés par photogrammetry, cette option vous permet d’appliquer rapidement la conversion correcte pour tous les matériaux. 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 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 pourfalse
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 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 supplémentaire sur les nœuds. Pour les fichiers FBX, ces données proviennent des
Properties70
données 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 é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
,tangent
etbinormal
: 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 surNONE
:normal
,tangent
etbinormal
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
etbinormal
sont nécessaires uniquement lorsque l’un des matériaux éclairés utilise une texture de carte normale.
texcoord0
ettexcoord1
: 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 , tangent
et binormal
les normal
donné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
, tangent
et binormal
texcoord0
définir NONE
sur 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) 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. 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é.
- Copie : dans ce mode, le maillage est cloné, donc aucune instanciation n’est utilisée ( =
numMeshPartsInstanced
0
). - Instance : les deux objets partagent le même maillage, de sorte que l’instanciation est utilisée ( =
numMeshPartsInstanced
1
). - 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 ( =
numMeshPartsInstanced
0
).
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
sceneGraphMode
static
sur , ou même surnone
, et améliorer les performances du runtime. Enstatic
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 sceneGraphMode
none
la 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
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 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 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 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.