Split-Merge-Mesh

Sie können alle Meshes einer 3D-Szene in mehrere Sub-Meshes aufteilen. Ebenso können Sie mehrere Netze programmgesteuert mit C# zu einem einzigen Netz zusammenführen. Dieser Artikel behandelt das Teilen und Zusammenführen von 3D-Netzen in verschiedenen Szenarien:

Splitter oder Merger von 3D-Szenengittern – Installation der C# API

Aspose.3D for .NET API kann verwendet werden, um 3D-Netze programmgesteuert mit C# aufzuteilen oder zusammenzuführen. Sie können die API konfigurieren, indem Sie sie aus dem Abschnitt Downloads oder mit dem folgenden NuGet Installationsbefehl installieren:

PM> Install-Package Aspose.3D

Meshes einer Szene pro Material programmgesteuert mit C# aufteilen

Eine 3D Datei wie das FBX Format kann mehrere Meshes einer Szene enthalten. Sie können alle Netze pro Material in mehrere Teilnetze aufteilen, wenn dem Netz kein einzelnes Material zugewiesen wurde. Bitte befolgen Sie die nachstehenden Schritte, um Meshes einer Szene pro Material aufzuteilen:

  1. Eingabe-3D Datei laden.
  2. Teilen Sie alle Netze mit der methode SplitMesh.
  3. Speichern Sie die Ausgabedatei mit den geteilten Netzen.

Der folgende Code zeigt, wie Meshes einer Szene pro Material programmgesteuert mit C# geteilt werden:

// Eingabe-FBX-3D Datei laden
Scene scene = new Scene("test.fbx");

// Teilen Sie alle Maschen
PolygonModifier.SplitMesh(scene, SplitMeshPolicy.CloneData);

// Ausgabedatei mit geteilten Netzen speichern
scene.Save("test-splitted.fbx", FileFormat.FBX7500ASCII);

Teilen Sie ein Netz programmgesteuert mit C# nach einem bestimmten Material

Sie können ein Netz teilen, indem Sie das Material manuell angeben. Auf diese Weise können Sie mehrere Objekte erstellen, die nur ein Material enthalten. Zu Demonstrationszwecken erstellt der folgende Code ein Gitter aus einer Box mit 6 Ebenen. Dann teilen Sie ein primitives Netz, indem Sie das Material manuell mit den folgenden Schritten angeben:

  1. Erstellen Sie ein Gitter aus einer Box mit sechs Ebenen.
  2. Erstellen Sie zweitens ein Materialelement und geben Sie Indizes für jede Ebene an.
  3. Teilen Sie das Mesh mithilfe der Aufzählung SplitMeshPolicy.

Der folgende Code erklärt, wie Sie ein Netz programmgesteuert mit C# nach bestimmtem Material aufteilen:

// Erstellen Sie ein Netz aus Box (Eine Box besteht aus 6 Ebenen)
Mesh box = (new Box()).ToMesh();

// Erstellen Sie ein Materialelement auf diesem Netz
VertexElementMaterial mat = (VertexElementMaterial)box.CreateElement(VertexElementType.Material, MappingMode.Polygon, ReferenceMode.Index);

// Und geben Sie für jede Ebene einen anderen Materialindex an
mat.Indices.AddRange(new int[] { 0, 1, 2, 3, 4, 5 });

// Teilen Sie es nun in 6 Unternetze auf, wir haben 6 verschiedene Materialien auf jeder Ebene angegeben, jede Ebene wird zu einem Unternetz.
// Wir haben die CloneData-Richtlinie verwendet, jede Ebene hat die gleichen Kontrollpunktinformationen oder Kontrollpunkt-basierten Eckpunktelementinformationen.
Mesh[] planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CloneData);

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

// Teilen Sie es nun in 2 Unternetze auf, das erste Netz enthält 0/1/2 Ebenen und das zweite Netz enthält die 3/4/5-Ebenen.
// Wir haben die CompactData-Richtlinie verwendet, jede Ebene hat ihre eigenen Kontrollpunktinformationen oder Kontrollpunkt-basierten Eckpunktelementinformationen.
planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CompactData);

Meshes in einer 3D Datei programmgesteuert in C# zu einem einzigen Mesh zusammenführen

Mit den folgenden Schritten können Sie verschiedene Netze zu einem einzigen gültigen Netz zusammenführen:

  1. Laden Sie die eingegebene 3D-Szenendatei.
  2. Alle Maschen zusammenführen.
  3. Codieren Sie schließlich das zusammengeführte Mesh.

Der folgende Code erläutert, wie Meshes programmgesteuert mit C# zu einem einzigen Mesh zusammengeführt werden:

// Laden Sie die eingegebene 3D-Szene
Scene scene = new Scene("LAD-TOP.rvm");

// Alle Maschen zusammenführen
Mesh mesh = PolygonModifier.MergeMesh(scene);

// Codieren Sie dieses Netz in das PLY-Format
FileFormat.PLY.Encode(mesh, "LAD-TOP.ply");

Holen Sie sich eine kostenlose temporäre Lizenz

Sie können eine kostenlose Evaluierungslizenz zum uneingeschränkten Testen der API erhalten.

Fazit

Abschließend haben Sie gelernt, wie Sie ein Mesh einer 3D-Szene zusammenführen oder aufteilen. Die API bietet verschiedene Methoden zum Teilen oder Zusammenführen eines oder mehrerer Netze, die Sie gemäß Ihren Anforderungen verwenden können. Darüber hinaus können Sie gerne die Dokumentation besuchen, in der auch einige andere Funktionen erklärt werden. Bitte kontaktieren Sie uns im Free Support Forum bei Fragen.

Siehe auch