介绍

Aspose.3D FOSS 是一个免费、开源的 .NET 库,用于处理 3D 文件格式。它提供了一套完整的实用类,超越了简单的文件转换,使开发者能够以编程方式操作网格、构建变换矩阵以及生成基础几何体。该库采用 MIT 许可证发布,适用于个人和商业项目,且没有限制。

本文重点介绍库中的实用功能:当你需要对网格进行三角化、逐步构建变换矩阵或创建参数化几何体时会使用的类和方法。这些构建块补充了在入门文章中介绍的核心场景加载和场景保存工作流。

无论你是在构建流水线中处理 3D 资源、为游戏引擎准备几何体,还是在不同格式之间进行转换,这些实用工具都能处理真实 3D 工作流中常见的任务。


包含内容

网格操作

Mesh 类表示基于多边形的几何体。你可以通过顶点索引创建多边形、查询多边形大小、对面进行三角化以及优化顶点数据。ControlPoints 属性直接访问顶点位置,而 Polygons 则公开面索引数组。

using Aspose.ThreeD;
using Aspose.ThreeD.Entities;

var scene = new Scene();
var mesh = new Mesh("CustomMesh");

// Add control points (vertices)
mesh.ControlPoints.Add(new Vector4(0, 0, 0));
mesh.ControlPoints.Add(new Vector4(10, 0, 0));
mesh.ControlPoints.Add(new Vector4(10, 10, 0));
mesh.ControlPoints.Add(new Vector4(0, 10, 0));

// Create a quad polygon from four vertices
mesh.CreatePolygon(0, 1, 2, 3);

// Triangulate all polygons in the mesh
mesh.Triangulate();

变换构建器

TransformBuilder 类提供了一个流式接口,用于通过一系列平移、旋转和缩放操作构建变换矩阵。您可以控制组合顺序(追加或前置),并且可以重置构建器以开始新的链。

using Aspose.ThreeD;
using Aspose.ThreeD.Utilities;

var builder = new TransformBuilder(ComposeOrder.Append);

// Build a combined transform: translate, then rotate, then scale
builder.Translate(5, 0, 3);
builder.RotateDegree(45, new Vector3(0, 1, 0));
builder.Scale(2, 2, 2);

// Retrieve the composed 4x4 matrix
Matrix4 result = builder.Matrix;

多边形修改器

PolygonModifier 类提供用于网格处理的静态工具方法,包括一个旨在将 n 边多边形网格转换为仅三角形几何的 Triangulate 方法。在此 FOSS 版中,Triangulate 尚未实现——所有重载在运行时都会抛出 NotImplementedException。如需可用的三角化,请改用 Mesh.Triangulate(),如上面的网格操作章节所示。

using Aspose.ThreeD;
using Aspose.ThreeD.Entities;

var scene = new Scene();
var box = new Box(2, 2, 2);
Mesh boxMesh = box.ToMesh();

原始几何体生成

库中包含诸如 BoxSphereCylinder 等参数化几何类。每个原始体都可以设置尺寸和细分数,然后通过 ToMesh() 方法转换为 Mesh,以便进一步处理或导出。

using Aspose.ThreeD.Entities;

// Create a parameterized sphere
var sphere = new Sphere(5.0, 32, 16);
Mesh sphereMesh = sphere.ToMesh();

// Create a cylinder (cone when one radius is zero)
var cone = new Cylinder(0, 3.0, 6.0);
Mesh coneMesh = cone.ToMesh();

包围盒计算

每个 Entity 子类都公开一个 GetBoundingBox() 方法,返回几何体的轴对齐包围盒。BoundingBox 结构体提供 MinimumMaximum 角向量,可用于空间查询和相机构图。

using Aspose.ThreeD.Entities;
using Aspose.ThreeD.Utilities;

var box = new Box(4, 2, 6);
BoundingBox bounds = box.GetBoundingBox();

Vector3 min = bounds.Minimum;
Vector3 max = bounds.Maximum;

快速入门

从 NuGet 安装软件包:

dotnet add package Aspose.3D.FOSS

加载文件,对每个网格进行三角化,并保存结果:

using Aspose.ThreeD;
using Aspose.ThreeD.Entities;

// Load a scene from an OBJ file
var scene = new Scene();
scene.Open("input.obj");

// Walk child nodes and triangulate each mesh entity
foreach (var node in scene.RootNode.ChildNodes)
{
    foreach (var entity in node.Entities)
    {
        if (entity is Mesh mesh)
        {
            mesh.Triangulate();
        }
    }
}

// Save the triangulated scene as glTF
scene.Save("output.glb");

支持的格式

格式扩展名读取写入
Collada.dae
FBX.fbx
glTF / GLB.gltf / .glb
3MF.3mf
Wavefront OBJ.obj
PLY.ply
STL.stl

开源与许可

Aspose.3D FOSS 在 MIT 许可证下发布。您可以在开源和专有项目中使用、修改和重新分发该库。完整源代码可在 GitHub 的 aspose-3d-foss/Aspose.3D-FOSS-for-.NET 上获取。


入门

  • 开发者指南 – 完整文档,涵盖场景管理、格式选项和高级功能。
  • 知识库 – 操作指南文章和常见问题。
  • API Reference – 逐类参考,包含方法签名和属性细节。

相关资源