malla de fusión dividida

Puede dividir todas las mallas de una escena 3D en varias submallas. Del mismo modo, puede fusionar múltiples mallas en una sola malla mediante programación usando C#. Este artículo cubre la división y fusión de mallas 3D en diferentes escenarios:

División o fusión de mallas de escenas 3D: instalación de la API de C#

Aspose.3D for .NET La API se puede usar para dividir o fusionar mallas 3D mediante programación usando C#. Puede configurar la API instalándola desde la sección Descargas, o con el siguiente comando de instalación NuGet:

PM> Install-Package Aspose.3D

Dividir mallas de una escena por material programáticamente usando C#

Un archivo 3D como el formato FBX puede contener varias mallas de una escena. Puede dividir todas las mallas en varias submallas por material si a la malla no se le ha asignado un solo material. Siga los pasos a continuación para dividir las mallas de una escena por material:

  1. Cargue el archivo 3D de entrada.
  2. Divida todas las mallas con el método SplitMesh.
  3. Guarde el archivo de salida con las mallas divididas.

El siguiente código muestra cómo dividir mallas de una escena por material mediante programación usando C#:

// Cargar archivo FBX 3D de entrada
Scene scene = new Scene("test.fbx");

// Dividir todas las mallas
PolygonModifier.SplitMesh(scene, SplitMeshPolicy.CloneData);

// Guardar archivo de salida con mallas divididas
scene.Save("test-splitted.fbx", FileFormat.FBX7500ASCII);

Divida una malla por un material específico mediante programación usando C#

Puede dividir una malla especificando manualmente el material. De esta manera, puede crear varios objetos que contengan un solo material. Para fines de demostración, el siguiente código crea una malla de una caja con 6 planos. Luego dividirá una malla primitiva especificando manualmente el material siguiendo los siguientes pasos:

  1. Crea una malla de una caja con seis planos.
  2. En segundo lugar, cree un elemento de material y especifique índices para cada plano.
  3. Divida la malla usando la enumeración SplitMeshPolicy.

El siguiente código explica cómo dividir una malla por material específico mediante programación usando C#:

// Crear una malla de caja (Una caja está compuesta por 6 planos)
Mesh box = (new Box()).ToMesh();

// Crear un elemento de material en esta malla.
VertexElementMaterial mat = (VertexElementMaterial)box.CreateElement(VertexElementType.Material, MappingMode.Polygon, ReferenceMode.Index);

// Y especifique un índice de material diferente para cada plano
mat.Indices.AddRange(new int[] { 0, 1, 2, 3, 4, 5 });

// Ahora divídalo en 6 mallas secundarias, especificamos 6 materiales diferentes en cada plano, cada plano se convertirá en una malla secundaria.
// Usamos la política CloneData, cada plano tendrá la misma información de punto de control o información de elemento de vértice basado en punto de control.
Mesh[] planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CloneData);

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

// Ahora divídalo en 2 submallas, la primera malla contendrá 0/1/2 planos, y la segunda malla contendrá los 3/4/5 planos.
// Usamos la política CompactData, cada plano tendrá su propia información de punto de control o información de elemento de vértice basada en punto de control.
planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CompactData);

Combinar mallas en un archivo 3D en una sola malla programáticamente en C#

Puede fusionar diferentes mallas en una sola malla válida con los siguientes pasos:

  1. Cargue el archivo de escena 3D de entrada.
  2. Combinar todas las mallas.
  3. Finalmente, codifique la malla fusionada.

El siguiente código explica cómo fusionar mallas en una sola malla mediante programación usando C#:

// Cargue la escena 3D de entrada
Scene scene = new Scene("LAD-TOP.rvm");

// Combinar todas las mallas
Mesh mesh = PolygonModifier.MergeMesh(scene);

// Codifique esta malla en el formato PLY
FileFormat.PLY.Encode(mesh, "LAD-TOP.ply");

Obtenga una Licencia Temporal Gratis

Puede obtener una Licencia de evaluación gratuita para probar la API sin ninguna limitación.

Conclusión

En conclusión, ha aprendido a fusionar o dividir una malla de una escena 3D. La API expone diferentes métodos para dividir o fusionar una o varias mallas, que puede utilizar según sus requisitos. Además, no dude en visitar la Documentación donde también se explican otras funciones. Póngase en contacto con nosotros en el Foro de soporte gratuito en caso de cualquier consulta.

Ver también