
简单的 3D 场景是几何数据的三维图形表示。在本文中,我们将学习如何使用 C# 从头开始创建 3D 场景,而无需安装任何 3D 建模或渲染软件。我们将以 FBX 文件格式保存 3D 场景,这是一种用于交换 3D 格式的流行 3D 文件格式。 FBX 可以作为二进制或 ASCII 数据文件保存在磁盘上。
本文将涵盖以下主题:
用于创建 3D 场景的 C# API - 免费下载
为了创建和读取 3D 场景,我们将使用 Aspose.3D for .NET API。它允许以 支持的格式 创建和保存 3D 场景。它还可以处理几何和场景层次结构、场景中的对象动画以及 3D 文件格式的转换。
API 提供了 Scene 类,它是一个包含节点、几何、材质、纹理、动画、姿势、子场景等的顶级对象。 CreateChildNode(Entity) 方法创建一个附加了给定实体的新子节点。 API 为 LambertMaterial、PhongMaterial 和 ShaderMaterial 提供着色模型。灯光照亮场景,API 的 Light 类可以为场景添加一些灯光。
PM> Install-Package Aspose.3D
在 C# 中创建一个简单的 3D 场景
我们可以按照以下步骤创建一个简单的 3D 场景:
- 创建 Scene 类的实例。
- 调用 CreateChildNode() 方法来添加一些几何图形,一个在屏幕上显示的形状,例如圆柱体。
- 设置子节点属性,例如材质。
- 初始化一个 Light 类对象。
- 调用 CreateChildNode() 方法添加 Light 实体。
- 最后,使用 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 场景:
- 创建 Scene 类的实例。
- 使用 Open() 方法加载现有的 3D 文档。
- 循环遍历 ChildNodes 属性
- 最后,显示属性值。
以下代码示例展示了如何使用 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 的信息。如有任何歧义,请随时在我们的 论坛 上与我们联系。