rozdělená slučovací síť

Všechny sítě 3D scény můžete rozdělit do několika dílčích sítí. Podobně můžete sloučit více sítí do jedné sítě programově pomocí C#. Tento článek popisuje rozdělení a sloučení 3D sítí v různých scénářích:

Rozdělovač nebo spojování 3D scén – instalace C# API

Aspose.3D for .NET API lze použít k rozdělení nebo sloučení 3D sítí programově pomocí C#. Rozhraní API můžete nakonfigurovat jeho instalací ze sekce Stahování nebo pomocí níže uvedeného instalačního příkazu NuGet:

PM> Install-Package Aspose.3D

Rozdělit sítě scény podle materiálu programově pomocí C#

3D soubor, jako je formát FBX, může obsahovat několik sítí scény. Pokud síti nebyl přiřazen jediný materiál, můžete všechny sítě rozdělit na několik dílčích sítí pro každý materiál. Při rozdělování sítí scény podle materiálu postupujte podle následujících kroků:

  1. Načíst vstupní 3D soubor.
  2. Rozdělte všechny sítě pomocí metody SplitMesh.
  3. Uložte výstupní soubor s rozdělenými sítěmi.

Následující kód ukazuje, jak programově rozdělit sítě scény na materiál pomocí C#:

// Načtěte vstupní soubor FBX 3D
Scene scene = new Scene("test.fbx");

// Rozdělte všechny sítě
PolygonModifier.SplitMesh(scene, SplitMeshPolicy.CloneData);

// Uložit výstupní soubor s rozdělenými sítěmi
scene.Save("test-splitted.fbx", FileFormat.FBX7500ASCII);

Rozdělit síť podle konkrétního materiálu programově pomocí C#

Síť můžete rozdělit ručním zadáním materiálu. Tímto způsobem můžete vytvořit několik objektů obsahujících pouze jeden materiál. Pro demonstrační účely níže uvedený kód vytváří síť krabice se 6 rovinami. Potom rozdělíte primitivní síť ručním zadáním materiálu pomocí následujících kroků:

  1. Vytvořte síť z krabice se šesti rovinami.
  2. Za druhé vytvořte prvek materiálu a zadejte indexy pro každou rovinu.
  3. Rozdělte síť pomocí výčtu SplitMeshPolicy.

Níže uvedený kód vysvětluje, jak rozdělit síť podle konkrétního materiálu programově pomocí C#:

// Vytvořte síť krabice (krabice se skládá ze 6 rovin)
Mesh box = (new Box()).ToMesh();

// Vytvořte materiálový prvek na této síti
VertexElementMaterial mat = (VertexElementMaterial)box.CreateElement(VertexElementType.Material, MappingMode.Polygon, ReferenceMode.Index);

// A pro každou rovinu zadejte jiný index materiálu
mat.Indices.AddRange(new int[] { 0, 1, 2, 3, 4, 5 });

// Nyní to rozdělte na 6 dílčích sítí, v každé rovině jsme určili 6 různých materiálů, každá rovina se stane dílčí sítí.
// Použili jsme zásadu CloneData, každá rovina bude mít stejné informace o řídicím bodu nebo informace o prvku vertexu založené na řídicím bodu.
Mesh[] planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CloneData);

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

// Nyní ji rozdělte na 2 dílčí sítě, první síť bude obsahovat 0/1/2 rovin a druhá síť bude obsahovat 3/4/5 roviny.
// Použili jsme politiku CompactData, každá rovina bude mít své vlastní informace o řídicím bodu nebo informace o prvku vrcholu založené na řídicím bodu.
planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CompactData);

Sloučit sítě ve 3D souboru do jediné sítě programově v C#

Pomocí následujících kroků můžete sloučit různé sítě do jediné platné sítě:

  1. Načíst soubor vstupní 3D scény.
  2. Sloučit všechny sítě.
  3. Nakonec zakódujte sloučenou síť.

Následující kód vysvětluje, jak sloučit sítě do jedné sítě programově pomocí C#:

// Načtěte vstupní 3D scénu
Scene scene = new Scene("LAD-TOP.rvm");

// Sloučit všechny sítě
Mesh mesh = PolygonModifier.MergeMesh(scene);

// Zakódujte tuto síť do formátu PLY
FileFormat.PLY.Encode(mesh, "LAD-TOP.ply");

Získejte bezplatnou dočasnou licenci

Můžete získat Free Evaluation License pro testování API bez jakýchkoli omezení.

Závěr

Na závěr jste se naučili, jak sloučit nebo rozdělit síť 3D scény. API odhaluje různé metody pro rozdělení nebo sloučení jedné nebo více sítí, které můžete použít podle svých požadavků. Kromě toho neváhejte navštívit Dokumentaci, kde je také vysvětleno několik dalších funkcí. V případě jakýchkoliv dotazů nás prosím kontaktujte na Free Support Forum.

Viz také