Aspose.3D 文档对象模型 (DOM)

Aspose.3D 文档对象模型 (DOM) 是 3D 场景的强大内存表示形式。它为开发人员提供了以编程方式读取、操作和修改 3D 场景的内容和格式的能力。

在本节中,我们将探讨 Aspose.3D DOM的关键类及其关系。通过使用这些类,您可以对 3D 场景中的各种元素进行编程访问。

让我们深入研究 Aspose.3D DOM的主要类:

  • 场景: Scene类表示 3D 场景层次结构的根。它充当所有其他元素的容器,并提供操作整个场景的方法。
  • 节点: 节点是 3D 场景的构建块。它们表示场景中的单个对象或实体,例如网格、灯光、摄影机或组。可以对节点进行变换、动画处理和纹理处理。
  • 实体: 实体类包含构成 3D 场景的各种对象和元素。它包括诸如网格、灯光、摄影机、轮廓等实体。这些实体用作构建块,允许您通过以编程方式组合和操作它们来创建复杂的场景。实体类别提供对 3D 场景的这些基本元素的访问和控制。
  • 材料: 材质类围绕定义 3D 场景中对象的可视属性。它提供了以编程方式创建、修改和控制材质的工具,这些工具决定了灯光如何与曲面相互作用。通过调整颜色、纹理、透明度和反射等属性,您可以实现各种视觉效果并自定义 3D 模型的外观。
  • 动画: Animation类专注于创建和控制 3D 场景中的移动和转换。它允许您以编程方式定义和操作动画,使对象能够随时间移动,旋转,缩放或更改属性。使用此类别,您可以将动态和交互式元素带入 3D 场景。

通过使用上面提到的 Aspose.3D DOM类,您可以以编程方式与 3D 场景进行交互并操作其内容和结构。这在应用程序中使用 3D 模型时提供了灵活性和控制。

场景结构

当 Aspose.3D 将 3D 文件读入内存时,它会生成各种类型的对象来表示 3D 场景中的不同元素。

Aspose.3D 中的场景结构遵循复合设计模式,该模式提供了灵活性和组织性:

  • 节点作为可以容纳其他节点的容器,允许场景内不同对象的分组。
  • 每个节点都可以有自己的转换,这也适用于其子节点。
  • Aspose.3D 中的所有空间实体类型必须放置在节点实例下。这样可以确保在场景层次中组织网格、灯光、摄影机和其他元素等对象。
  • 节点可以包含多个材质,并且使用网格对象中的 VertexElementMaterial 概念来处理多边形和附加到节点的材质之间的关系。

场景层次结构

空间实体

Aspose.3D 内的所有空间实体都继承自 Entity 类,用作构建虚拟环境的基本构建块。Aspose.3D 将这些实体分为几个主要类别,每个类别都有自己的特定目的和功能。

实体

  • 原语Primitive 类用作 Aspose.3D 内所有过程 3D 几何对象的基类,例如 CylinderTorusSphere。可以使用最小参数集来定义这些几何形状,从而方便创建基本 3D 形状。
  • 几何: Aspose 中的几何图形。3D 通常由定义 3D 对象的形状和结构的顶点、边和多边形组成。此类别包含用于表示 3D 场景内的各种对象的各种复杂几何形状。
  • 配置文件: 轮廓,类似于图元,在x-y平面中定义2D闭合轮廓。它们提供了一种创建2D形状的方法,可以将这些形状挤出以生成相应的 3D 几何图形。配置文件通常用作创建更复杂的 3D 对象的起点。
  • 曲线: 与轮廓不同,曲线可以是开放的或不连接的。它们用于定义 3D 中的空间路径。曲线提供了一种创建灵活且可自定义的路径的方法,对象可以在 3D 环境中遵循这些路径。
  • 挤压: 挤出是一种使用轮廓和曲线构造 3D 几何图形的程序技术。通过将挤出应用于轮廓或曲线,可以通过沿指定方向延伸轮廓或曲线来生成 3D 形状。这种方法能够创建更复杂和动态的几何形状。
  • 平截头体: “视锥” 类别包括灯光和摄影机等对象。视锥定义 3D 场景中的查看体积和视角。摄影机使用视锥来确定场景中可见的部分,而灯光则使用视锥来定义它们照亮场景的区域。

Aspose.3D 中的这些主要实体类别包含在构建和表示虚拟环境中扮演重要角色的各种实体,为创建和操作 3D 场景提供了一个通用工具包。

几何图形类型

几何图形类型

Aspose.3D 包含许多几何图形类型:

  • Mesh 创作工具友好的多边形网格。
  • PointCloud 点云。
  • NurbsSurface 非均匀有理b样条曲面。
  • Patch 表面由一组控制点和混合函数定义。
  • TriMesh 渲染 API 友好的基于三角形的网格。

其中最重要的是 MeshTriMesh,差异如下表所示:

特征 Mesh TriMesh
非三角形多边形
易于修改
数据索引重用
CPU缓存友好
友好渲染 API
固定内存布局

Geometry 派生的类是为修改和内容创建而设计的,而 TriMesh 是为呈现而设计的。

Geometry 由控制点和 VertexElement 组成,VertexElement 定义了控制点/边/多边形顶点的额外数据,Geometry 可以包含零个或多个 VertexElement,具体的 Geometry 子类实现了用于建模和表示 3D 几何的不同方法。

几何图形类型

您可以手动创建顶点元素并为其指定数据。下面的代码示例演示如何执行此操作:

原始几何体类型

Aspose.3D 提供了一组预定义的基本几何体类型,它们遵循特定的规则和算法来生成 3D 模型。与使用更复杂的几何图形类型相比,这些基元类型简化了创建 3D 几何图形的过程。

Aspose.3D 中可用的预定义基元类型包括:

  • Box: box基元允许您创建由其宽度、高度和深度定义的矩形长方体形状。
  • 圆柱体: 使用圆柱体基本体,可以通过指定半径和高度来生成圆柱体形状。这对于创建管或柱等对象很有用。
  • Dish: 碟形基元可以创建碟形几何形状,通常用于表示碗或卫星碟形天线等对象。
  • Plane: 平面基元生成由其宽度和长度定义的平面。它经常在 3D 场景中用作基础或地平面。
  • Pyramid: 使用金字塔基元,您可以创建以其底部大小和高度为特征的金字塔形几何形状。这对于构建建筑物或金字塔等对象很有用。
  • Torus: torus基元允许您为主要和次要圆生成具有指定半径的圆环形状的几何形状。它适用于创建类似戒指或轮胎的对象。
  • RectangularTorus: 矩形圆环基元生成具有矩形横截面而不是圆形横截面的圆环状几何形状。它为创建独特的形状提供了额外的灵活性。
  • Sphere: 球体基本体根据指定的半径生成完美的圆形几何图形。这对于创建行星或球等对象很有用。

通过在 Aspose.3D 中使用这些预定义的基元类型,您可以轻松地创建各种基本的 3D 几何图形。这简化了建模过程,并允许您在 3D 场景中快速塑造和组装对象。

原始几何体类型

下面的代码示例演示如何创建具有指定半径的球体:

挤压类型

挤出可用于创建各种复杂的 3D 对象,它是 3D 建模中的一种基本方法,涉及沿曲线延伸2D轮廓以创建 3D 对象。

在 Aspose.3D 中,我们提供了3种挤出类型:

  • LinearExtrusion 线性拉伸将2D轮廓作为输入,并在第三个维度上扩展形状。
  • RevolvedAreaSolid 此类通过绕轴旋转轮廓提供的横截面来表示实体模型。
  • SweptAreaSolid 此类通过允许2D轮廓横截面扫掠空间的扫掠表示方案来表示实体模型。

挤压型材

下面的代码示例演示如何从文本配置文件创建线性挤出:

曲线类型

在 Aspose.3D 中,曲线表示一个或多个可以采用各种形式的空间路径,例如直线、NURBS曲线或由多个曲线段组成的复合曲线。曲线通常与挤出类型结合使用,以创建动态和复杂的 3D 形状。

曲线可用于定义对象在 3D 环境中遵循的复杂路径,从而实现平滑和精确的移动。通过利用不同的曲线类型并将它们组合在一起,您可以为 3D 模型实现多功能和可定制的空间路径。

此外,Aspose.3D 支持的某些文件格式还提供导入和导出曲线数据的功能。这允许您无缝集成在外部应用程序中创建的曲线,或与其他软件共享在 Aspose.3D 中生成的曲线。

曲线类型

配置文件类型

Aspose.3D 提供了一系列2D轮廓,可用于在 3D 环境中创建闭合形状或轮廓。这些轮廓使得能够创建复杂的2D结构,其可以被进一步挤压或操纵成 3D 几何形状。以下是 Aspose.3D 中的一些值得注意的配置文件实现:

  • ParameterizedProfile: Aspose。3D 提供了几种提供具有标准形状的配置文件的实现。这些预定义的轮廓允许快速创建常用的形状,如圆形、矩形和多边形。

  • MirroredProfile: 此轮廓类型允许您沿Y轴镜像现有轮廓,从而创建对称形状。它提供了一种方便的方式来生成平衡且视觉上吸引人的配置文件。

  • ArbitraryProfile: 使用任意轮廓实现,您可以映射任意曲线以创建闭合轮廓。通过定义曲线并将其转换为闭合轮廓以进行进一步操作,这为设计自定义形状提供了灵活性。

  • Text: Aspose。3D 包括使用指定字体从文本生成配置文件的功能。此功能允许您以字母,数字或任何其他文本内容的形式创建配置文件,为您的 3D 模型添加个性化或品牌元素。

2D轮廓类型

相机和灯光类型

相机和灯光

材料类型

Aspose.3D 支持各种类型的材质,包括Lambert材质、Phong材质、PBR镜面材质和着色器材质 (仅在 FBX 文件中可用)。

Aspose.3D 中的每种材质都可以具有不同的属性和特性,这些属性和特性定义了其在 3D 场景中的外观和行为。这些材质可以连接到纹理实例,增强其视觉特性。

Aspose.3D 中的纹理与特定材质属性相关联。纹理类型组合了图像源和纹理采样器的参数定义。通过利用纹理,您可以将详细的图案、颜色和其他视觉效果应用于 3D 模型的表面。

凭借对一系列材质类型的支持和连接纹理的能力,Aspose.3D 可以灵活地为您的 3D 场景创建具有视觉吸引力和真实感的材质。

材料类型

下面的代码示例演示如何将PBR材质应用于几何体:

动画对象关系

Aspose.3D 提供数据级动画支持,目前正在开发计算支持。

在 Aspose.3D 中,一个场景可以包含多个AnimationClip对象。每个动画片段可以由多个动画节点组成。动画节点遵循复合设计模式,允许创建具有子动画节点的分层结构。

动画节点可以与绑定点相关联,绑定点定义要设置动画的目标对象的属性。向量是许多实体属性中常用的数据类型。因此,绑定点可以具有不同的动画通道,以独立更新向量的特定通道。每个通道都包含一个关键帧序列,该序列定义如何随时间设置值的动画。

该系统提供了用于使场景内的对象动画化的灵活框架。通过定义动画片段、节点、绑定点和通道,可以创建影响 3D 场景中实体的各种属性的复杂动态动画。

虽然 Aspose.3D 当前支持数据级动画,但正在进行的开发侧重于扩展计算支持,这将增强在框架中创建和操作动画的功能。

动画

带有动画的场景可能具有这种结构:

动画示例