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

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

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

让我们深入了解 Aspose.3D DOM 的主要类:

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

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

场景结构

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

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

  • Node 充当可以容纳其他节点的容器,允许在场景中对不同的对象进行分组。
  • 每个节点可以具有自己的变换,该变换也应用于其子节点。
  • Aspose.3D 中的所有空间实体类型都必须放置在 Node 实例下。这确保了网格、灯光、相机和其他元素在场景层次结构中得到组织。
  • 节点可以包含多个材料,多边形和附加到节点的材料之间的关系使用 Mesh 对象中的 VertexElementMaterial 概念来解决。

场景层次结构

空间实体

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

实体

  • Primitive: Primitive 类是 Aspose.3D 中所有过程 3D 几何体的基类,例如 CylinderTorusSphere。这些几何体可以使用最少的参数进行定义,从而便于创建基本的 3D 形状。
  • Geometry: Aspose.3D 中的几何体通常由定义 3D 对象形状和结构的顶点、边和多边形组成。此类别涵盖了用于表示 3D 场景中各种对象的各种复杂几何体。
  • Profile: 剖面类似于原样体,定义 x-y 平面中的 2D 封闭轮廓。它们提供了一种创建 2D 形状的方法,这些形状可以通过挤压生成相应的 3D 几何体。剖面通常用于创建更复杂的 3D 对象的起点。
  • Curve: 与剖面不同,曲线可以是开或不连接的。它们用于定义 3D 中的空间路径。曲线提供了一种创建灵活且可定制的路径,以便对象可以在 3D 环境中遵循这些路径。
  • Extrusion: 挤压是一种用于构造 3D 几何体的过程技术,使用剖面和曲线。通过将剖面或曲线应用于挤压,可以生成 3D 形状,通过沿指定方向延伸剖面或曲线来实现。这种方法可以创建更复杂和动态的几何体。
  • Frustum: frustum 类别包括诸如灯光和相机之类 of 对象。Frustums 定义了 3D 场景中的视锥体和透视。相机使用 frustums 来确定将可见的场景部分,而灯光使用 frustums 来定义光线照亮场景的区域。

Aspose.3D 中这些主要实体类别涵盖了在构建和表示虚拟环境时起着至关重要作用的各种实体。

材料类型

材料类型

Aspose.3D 提供对各种类型材料的支持,包括 Lambert 材料、Phong 材料、PBR 材料、PBR 镜面材料和 shader 材料(仅在 FBX 文件中可用)。

Aspose.3D 中的每个材料都可以具有定义其外观和行为的各种属性和特性。这些材料可以连接到纹理实例,从而增强其视觉特征。

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

借助对各种材料类型和纹理连接的支持,Aspose.3D 提供了在 3D 场景中创建视觉上吸引人和逼真的材料的灵活性。

动画

动画对象关系

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

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

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

此系统提供了一种灵活的框架来动画场景中的对象。通过定义动画剪辑、节点、绑定点和通道,您可以创建复杂且动态的动画,这些动画会影响 3D 场景中实体的各种属性。

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

2D 剖面类型

剖面类型

Aspose.3D 提供各种 2D 剖面,可用于在 3D 环境中创建封闭形状或轮廓。这些剖面允许创建可以进一步挤压或操作为 3D 几何体的复杂 2D 结构。以下是 Aspose.3D 中一些值得注意的剖面实现:

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

  • MirroredProfile: 此剖面类型允许沿 Y 轴镜像现有剖面,从而创建对称形状。它提供了一种创建平衡且具有视觉吸引力的剖面的便捷方法。

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

  • Text: Aspose.3D 包含使用指定字体生成文本剖面的功能。此功能允许创建字母、数字或任何其他文本内容的形状剖面,从而为 3D 模型添加个性化或品牌元素。

相机和灯类型

相机和灯类型

曲线类型

曲线类型

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

曲线可用于定义对象可以在 3D 环境中遵循的复杂路径,从而实现平滑且精确的运动。通过使用不同的曲线类型并将它们组合在一起,您可以创建灵活且可定制的空间路径,用于您的 3D 模型。

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

场景结构

场景结构

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

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

  • Node 充当可以容纳其他节点的容器,允许在场景中对不同的对象进行分组。
  • 每个节点可以具有自己的变换,该变换也应用于其子节点。
  • Aspose.3D 中的所有空间实体类型都必须放置在 Node 实例下。这确保了网格、灯光、相机和其他元素在场景层次结构中得到组织。
  • 节点可以包含多个材料,多边形和附加到节点的材料之间的关系使用 Mesh 对象中的 VertexElementMaterial 概念来解决。

剖面类型

剖面类型

Aspose.3D 提供各种 2D 剖面,可用于在 3D 环境中创建封闭形状或轮廓。这些剖面允许创建可以进一步挤压或操作为 3D 几何体的复杂 2D 结构。以下是 Aspose.3D 中一些值得注意的剖面实现:

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

  • MirroredProfile: 此剖面类型允许沿 Y 轴镜像现有剖面,从而创建对称形状。它提供了一种创建平衡且具有视觉吸引力的剖面的便捷方法。

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

  • Text: Aspose.3D 包含使用指定字体生成文本剖面的功能。此功能允许创建字母、数字或任何其他文本内容的形状剖面,从而为 3D 模型添加个性化或品牌元素。