拆分合併網格

您可以將 3D 場景的所有網格拆分為多個子網格。同樣,您可以使用 C# 以編程方式將多個網格合併為一個網格。本文介紹了不同場景下3D網格的拆分與合併:

3D Scene Meshes Splitter or Merger – C# API 安裝

Aspose.3D for .NET API 可用於使用 C# 以編程方式拆分或合併 3D 網格。您可以通過從 下載 部分安裝 API 或使用以下 NuGet 安裝命令來配置 API:

PM> Install-Package Aspose.3D

使用 C# 以編程方式拆分每個材質的場景網格

像 FBX 格式這樣的 3D 文件可以包含一個場景的多個網格。如果尚未為網格分配單一材質,則可以將所有網格按材質拆分為多個子網格。請按照以下步驟按材質拆分場景的網格:

  1. 加載輸入 3D 文件。
  2. 使用 SplitMesh 方法拆分所有網格。
  3. 使用拆分的網格保存輸出文件。

以下代碼顯示瞭如何使用 C# 以編程方式按材質拆分場景的網格:

// 加載輸入 FBX 3D 文件
Scene scene = new Scene("test.fbx");

// 分割所有網格
PolygonModifier.SplitMesh(scene, SplitMeshPolicy.CloneData);

// 保存帶有分割網格的輸出文件
scene.Save("test-splitted.fbx", FileFormat.FBX7500ASCII);

使用 C# 以編程方式按特定材料拆分網格

您可以通過手動指定材料來分割網格。這樣,您可以創建多個僅包含一種材料的對象。出於演示目的,以下代碼創建了一個包含 6 個平面的盒子網格。然後,您將使用以下步驟通過手動指定材料來分割原始網格:

  1. 創建一個包含六個平面的長方體網格。
  2. 其次,創建一個材質元素並為每個平面指定索引。
  3. 使用 SplitMeshPolicy 枚舉拆分網格。

下面的代碼解釋瞭如何使用 C# 以編程方式按特定材料拆分網格:

// 創建一個盒子的網格(一個盒子由6個平面組成)
Mesh box = (new Box()).ToMesh();

// 在這個網格上創建一個材質元素
VertexElementMaterial mat = (VertexElementMaterial)box.CreateElement(VertexElementType.Material, MappingMode.Polygon, ReferenceMode.Index);

// 並為每個平面指定不同的材質索引
mat.Indices.AddRange(new int[] { 0, 1, 2, 3, 4, 5 });

// 現在將它拆分成6個子網格,我們在每個平面上指定了6種不同的材質,每個平面都會成為一個子網格。
// 我們使用了 CloneData 策略,每個平面將具有相同的控制點信息或基於控制點的頂點元素信息。
Mesh[] planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CloneData);

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

// 現在將其拆分為 2 個子網格,第一個網格將包含 0/1/2 個平面,第二個網格將包含第 3/4/5 個平面。
// 我們使用了CompactData策略,每個平面都會有自己的控制點信息或基於控制點的頂點元素信息。
planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CompactData);

在 C# 中以編程方式將 3D 文件中的網格合併為單個網格

您可以通過以下步驟將不同的網格合併為一個有效的網格:

  1. 加載輸入 3D 場景文件。
  2. 合併所有網格。
  3. 最後,對合併後的網格進行編碼。

以下代碼詳細說明瞭如何使用 C# 以編程方式將網格合併為單個網格:

// 加載輸入的 3D 場景
Scene scene = new Scene("LAD-TOP.rvm");

// 合併所有網格
Mesh mesh = PolygonModifier.MergeMesh(scene);

// 將此網格編碼為 PLY 格式
FileFormat.PLY.Encode(mesh, "LAD-TOP.ply");

獲得免費的臨時許可證

您可以獲得 免費評估許可證 來不受任何限制地測試 API。

結論

總之,您已經了解瞭如何合併或拆分 3D 場景的網格。 API 公開了用於拆分或合併一個或多個網格的不同方法,您可以根據需要使用這些方法。此外,請隨時訪問 文檔,其中還解釋了其他幾個功能。如有任何疑問,請通過 免費支持論壇 與我們聯繫。

也可以看看