使用 C# 创建 3D 场景

简单的 3D 场景是几何数据的三维图形表示。在本文中,我们将学习如何使用 C# 从头开始创建 3D 场景,而无需安装任何 3D 建模或渲染软件。我们将以 FBX 文件格式保存 3D 场景,这是一种用于交换 3D 格式的流行 3D 文件格式。 FBX 可以作为二进制或 ASCII 数据文件保存在磁盘上。

本文将涵盖以下主题:

  1. 用于创建 3D 场景的 C# API - 免费下载
  2. 用 C# 创建一个简单的 3D 场景
  3. 使用 C# 读取 3D 场景

用于创建 3D 场景的 C# API - 免费下载

为了创建和读取 3D 场景,我们将使用 Aspose.3D for .NET API。它允许以 支持的格式 创建和保存 3D 场景。它还可以处理几何和场景层次结构、场景中的对象动画以及 3D 文件格式的转换。

API 提供了 Scene 类,它是一个包含节点、几何、材质、纹理、动画、姿势、子场景等的顶级对象。 CreateChildNode(Entity) 方法创建一个附加了给定实体的新子节点。 API 为 LambertMaterialPhongMaterialShaderMaterial 提供着色模型。灯光照亮场景,API 的 Light 类可以为场景添加一些灯光。

下载 DLL API 或使用 NuGet 安装它。

PM> Install-Package Aspose.3D

在 C# 中创建一个简单的 3D 场景

我们可以按照以下步骤创建一个简单的 3D 场景:

  1. 创建 Scene 类的实例。
  2. 调用 CreateChildNode() 方法来添加一些几何图形,一个在屏幕上显示的形状,例如圆柱体。
  3. 设置子节点属性,例如材质。
  4. 初始化一个 Light 类对象。
  5. 调用 CreateChildNode() 方法添加 Light 实体。
  6. 最后,使用 Save() 方法将场景保存为 FBX。它将输出文件路径和 FileFormat.FBX7500ASCII 作为参数。

以下代码示例展示了如何使用 C# 创建简单的 3D 场景。

// 此代码示例演示如何在 FBX 文件中创建简单的 3D 场景。
// 初始化 3D 场景
var scene = new Scene();

// 初始化圆柱对象
var cylinder = new Cylinder();
cylinder.Name = "Cylinder";

// 创建子节点并添加 Cylinder 对象
var node = scene.RootNode.CreateChildNode(cylinder);

// 设置子节点属性
var material = new LambertMaterial() { DiffuseColor = new Vector3(Color.LightBlue) };
material.Name = "Lambert";
node.Material = material;

// 添加灯光实体
var light = new Light() { LightType = LightType.Point };
light.Name = "Light";
scene.RootNode.CreateChildNode(light).Transform.Translation = new Vector3(10, 0, 10);

// 输出文件路径
var output = @"C:\Files\3D\document.fbx";

// 保存 3D 场景文档
scene.Save(output, FileFormat.FBX7500ASCII);

使用 C# 读取 3D 场景

我们可以按照以下步骤从 FBX 文档中读取 3D 场景:

  1. 创建 Scene 类的实例。
  2. 使用 Open() 方法加载现有的 3D 文档。
  3. 循环遍历 ChildNodes 属性
  4. 最后,显示属性值。

以下代码示例展示了如何使用 C# 加载和读取 3D 场景。

// 此代码示例演示如何从 FBX 文件中读取 3D 场景
// 初始化一个场景类对象
Scene scene = new Scene();

// 加载现有的 3D 文档
scene.Open(@"C:\Files\3D\document.fbx");

foreach(var node in scene.RootNode.ChildNodes)
{
    var entity = node.Entity;
    Console.WriteLine("{0}", entity.Name); 

    if (node.Material != null)
    {
        Material material = node.Material;
        Console.WriteLine("{0}", material.Name);

        PropertyCollection props = material.Properties;
        //使用 foreach 列出所有属性
        foreach (var prop in props)
        {
            Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
        }
        //或使用序数 for 循环
        for (int i = 0; i < props.Count; i++)
        {
            var prop = props[i];
            Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
        }
    }
}

获得免费临时许可证

您可以获得免费的临时许可证 试用 Aspose.3D for .NET,没有评估限制。

结论

在本文中,我们学习了如何:

  • 以编程方式创建 3D 场景;
  • 将对象/实体添加到 3D 场景中,例如圆柱体、材质、灯光等;
  • 阅读 C# 中的 3D 场景子注释和属性。

此外,您可以使用 文档 了解更多关于 Aspose.3D for .NET API 的信息。如有任何歧义,请随时在我们的 论坛 上与我们联系。

也可以看看