dividere la mesh di unione

Puoi dividere tutte le mesh di una scena 3D in diverse sottomesh. Allo stesso modo, puoi unire più mesh in un’unica mesh a livello di codice usando C#. Questo articolo illustra la divisione e l’unione di mesh 3D in diversi scenari:

Splitter o fusione di mesh di scene 3D – Installazione dell’API C#

L’API Aspose.3D for .NET può essere utilizzata per dividere o unire mesh 3D a livello di codice utilizzando C#. Puoi configurare l’API installandola dalla sezione Download o con il comando di installazione NuGet seguente:

PM> Install-Package Aspose.3D

Dividi mesh di una scena per materiale a livello di codice usando C#

Un file 3D come il formato FBX può contenere diverse mesh di una scena. È possibile suddividere tutte le mesh in più sub mesh per materiale se alla mesh non è stato assegnato un singolo materiale. Segui i passaggi seguenti per dividere le mesh di una scena per materiale:

  1. Carica il file 3D di input.
  2. Dividi tutte le mesh con il metodo SplitMesh.
  3. Salva il file di output con le mesh divise.

Il codice seguente mostra come dividere le mesh di una scena per materiale a livello di codice usando C#:

// Carica il file FBX 3D di input
Scene scene = new Scene("test.fbx");

// Dividi tutte le maglie
PolygonModifier.SplitMesh(scene, SplitMeshPolicy.CloneData);

// Salva il file di output con mesh divise
scene.Save("test-splitted.fbx", FileFormat.FBX7500ASCII);

Dividi una mesh per un materiale specifico a livello di codice usando C#

È possibile dividere una mesh specificando manualmente il materiale. In questo modo è possibile creare più oggetti contenenti un solo materiale. A scopo dimostrativo, il codice seguente crea una mesh di una scatola con 6 piani. Quindi dividerai una mesh primitiva specificando manualmente il materiale utilizzando i seguenti passaggi:

  1. Crea una mesh di una scatola con sei piani.
  2. In secondo luogo, crea un elemento materiale e specifica gli indici per ciascun piano.
  3. Dividi la mesh usando l’enumerazione SplitMeshPolicy.

Il codice seguente spiega come dividere una mesh per materiale specifico a livello di codice usando C#:

// Crea una maglia di scatola (una scatola è composta da 6 piani)
Mesh box = (new Box()).ToMesh();

// Crea un elemento materiale su questa mesh
VertexElementMaterial mat = (VertexElementMaterial)box.CreateElement(VertexElementType.Material, MappingMode.Polygon, ReferenceMode.Index);

// E specificare un indice di materiale diverso per ciascun piano
mat.Indices.AddRange(new int[] { 0, 1, 2, 3, 4, 5 });

// Ora dividilo in 6 sotto mesh, abbiamo specificato 6 materiali diversi su ciascun piano, ogni piano diventerà una sotto mesh.
// Abbiamo utilizzato la politica CloneData, ogni piano avrà le stesse informazioni sul punto di controllo o le informazioni sull'elemento del vertice basate sul punto di controllo.
Mesh[] planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CloneData);

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

// Ora dividilo in 2 sotto mesh, la prima mesh conterrà 0/1/2 piani e la seconda mesh conterrà i 3/4/5 piani.
// Abbiamo utilizzato la politica CompactData, ogni piano avrà le proprie informazioni sul punto di controllo o le informazioni sull'elemento del vertice basato sul punto di controllo.
planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CompactData);

Unisci le mesh in un file 3D in una singola mesh a livello di codice in C#

Puoi unire diverse mesh in un’unica mesh valida con i passaggi seguenti:

  1. Carica il file di scena 3D di input.
  2. Unisci tutte le mesh.
  3. Infine, codifica la mesh unita.

Il codice seguente elabora come unire le mesh in una singola mesh a livello di codice usando C#:

// Carica la scena 3D di input
Scene scene = new Scene("LAD-TOP.rvm");

// Unisci tutte le mesh
Mesh mesh = PolygonModifier.MergeMesh(scene);

// Codifica questa mesh nel formato PLY
FileFormat.PLY.Encode(mesh, "LAD-TOP.ply");

Ottieni una licenza temporanea gratuita

Puoi ottenere una Licenza di valutazione gratuita per testare l’API senza alcuna limitazione.

Conclusione

In conclusione, hai imparato come unire o dividere una mesh di una scena 3D. L’API espone diversi metodi per dividere o unire una o più mesh, che puoi utilizzare secondo le tue esigenze. Inoltre, non esitare a visitare la Documentazione dove vengono spiegate anche molte altre funzionalità. Ti preghiamo di contattarci al Forum di supporto gratuito in caso di domande.

Guarda anche