maillage de fusion fractionné

Vous pouvez diviser tous les maillages d’une scène 3D en plusieurs sous-maillages. De même, vous pouvez fusionner plusieurs maillages en un seul maillage par programmation à l’aide de C#. Cet article couvre le fractionnement et la fusion de maillages 3D dans différents scénarios :

Séparateur ou fusion de maillages de scènes 3D - Installation de l’API C#

L’API Aspose.3D for .NET peut être utilisée pour diviser ou fusionner des maillages 3D par programmation à l’aide de C#. Vous pouvez configurer l’API en l’installant à partir de la section Téléchargements ou avec la commande d’installation NuGet ci-dessous :

PM> Install-Package Aspose.3D

Fractionner les maillages d’une scène par matériau par programmation à l’aide de C#

Un fichier 3D comme le format FBX peut contenir plusieurs meshes d’une scène. Vous pouvez diviser tous les maillages en plusieurs sous-maillages par matériau si le maillage n’a pas été affecté à un seul matériau. Veuillez suivre les étapes ci-dessous pour diviser les maillages d’une scène par matériau :

  1. Charger le fichier 3D d’entrée.
  2. Divisez tous les maillages avec la méthode SplitMesh.
  3. Enregistrez le fichier de sortie avec les maillages fractionnés.

Le code suivant montre comment diviser les maillages d’une scène par matériau par programmation à l’aide de C# :

// Charger le fichier d'entrée FBX 3D
Scene scene = new Scene("test.fbx");

// Diviser tous les maillages
PolygonModifier.SplitMesh(scene, SplitMeshPolicy.CloneData);

// Enregistrer le fichier de sortie avec des maillages fractionnés
scene.Save("test-splitted.fbx", FileFormat.FBX7500ASCII);

Fractionner un maillage par un matériau spécifique par programmation à l’aide de C#

Vous pouvez diviser un maillage en spécifiant manuellement le matériau. De cette manière, vous pouvez créer plusieurs objets contenant un seul matériau. À des fins de démonstration, le code ci-dessous crée un maillage d’une boîte à 6 plans. Ensuite, vous diviserez un maillage primitif en spécifiant manuellement le matériau en suivant les étapes suivantes :

  1. Créez un maillage d’une boîte avec six plans.
  2. Deuxièmement, créez un élément matériel et spécifiez des index pour chaque plan.
  3. Fractionnez le maillage à l’aide de l’énumération SplitMeshPolicy.

Le code ci-dessous explique comment diviser un maillage par matériau spécifique par programmation à l’aide de C# :

// Créer un maillage de boîte (Une boîte est composée de 6 plans)
Mesh box = (new Box()).ToMesh();

// Créer un élément matériel sur ce maillage
VertexElementMaterial mat = (VertexElementMaterial)box.CreateElement(VertexElementType.Material, MappingMode.Polygon, ReferenceMode.Index);

// Et spécifiez un indice de matériau différent pour chaque plan
mat.Indices.AddRange(new int[] { 0, 1, 2, 3, 4, 5 });

// Maintenant, divisez-le en 6 sous-maillages, nous avons spécifié 6 matériaux différents sur chaque plan, chaque plan deviendra un sous-maillage.
// Nous avons utilisé la politique CloneData, chaque plan aura les mêmes informations de point de contrôle ou les mêmes informations d'élément de sommet basées sur les points de contrôle.
Mesh[] planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CloneData);

mat.Indices.Clear();
mat.Indices.AddRange(new int[] { 0, 0, 0, 1, 1, 1 });

// Divisez-le maintenant en 2 sous-maillages, le premier maillage contiendra 0/1/2 plans et le second maillage contiendra les 3/4/5èmes plans.
// Nous avons utilisé la politique CompactData, chaque plan aura ses propres informations de point de contrôle ou des informations d'élément de sommet basées sur des points de contrôle.
planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CompactData);

Fusionner les maillages dans un fichier 3D en un seul maillage par programme en C#

Vous pouvez fusionner différents maillages en un seul maillage valide en suivant les étapes ci-dessous :

  1. Charger le fichier de scène 3D d’entrée.
  2. Fusionner tous les maillages.
  3. Enfin, encodez le maillage fusionné.

Le code suivant explique comment fusionner des maillages en un seul maillage par programmation à l’aide de C# :

// Charger la scène 3D d'entrée
Scene scene = new Scene("LAD-TOP.rvm");

// Fusionner tous les maillages
Mesh mesh = PolygonModifier.MergeMesh(scene);

// Encoder ce maillage au format PLY
FileFormat.PLY.Encode(mesh, "LAD-TOP.ply");

Obtenez une licence temporaire gratuite

Vous pouvez obtenir une licence d’évaluation gratuite pour tester l’API sans aucune limitation.

Conclusion

En conclusion, vous avez appris à fusionner ou diviser un maillage d’une scène 3D. L’API expose différentes méthodes pour diviser ou fusionner un ou plusieurs maillages, que vous pouvez utiliser selon vos besoins. De plus, n’hésitez pas à visiter la Documentation où plusieurs autres fonctionnalités sont également expliquées. Veuillez nous contacter sur le Forum d’assistance gratuit en cas de questions.

Voir également