使用 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 類可以為場景添加一些燈光。

下載 API 的 DLL 或使用 NuGet 安裝它。

PM> Install-Package Aspose.3D

在 C# 中創建一個簡單的 3D 場景

我們可以按照以下步驟創建一個簡單的 3D 場景:

  1. 創建場景類的實例。
  2. 調用 CreateChildNode() 方法來添加一些幾何圖形,即顯示在屏幕上的形狀,例如圓柱體。
  3. 設置子節點屬性,例如 Material。
  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. 創建場景類的實例。
  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 的信息。如有任何疑問,請隨時在我們的 論壇 上與我們聯繫。

也可以看看