C# を使用して 3D シーンを作成する

シンプルな 3D シーンは、ジオメトリ データの 3 次元グラフィック表現です。この記事では、3D モデリングまたはレンダリング ソフトウェアをインストールする必要なく、C# を使用してゼロから 3D シーンを作成する方法を学習します。 3D シーンを FBX ファイル形式で保存します。これは、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 は、LambertMaterialPhongMaterial、および ShaderMaterial のシェーディング モデルを提供します。ライトはシーンを照らします。API の Light クラスを使用すると、シーンにライトを追加できます。

APIのDLLをダウンロードするか、NuGetを使ってインストールしてください。

PM> Install-Package Aspose.3D

C# で簡単な 3D シーンを作成する

以下の手順に従って、簡単な 3D シーンを作成できます。

  1. Scene クラスのインスタンスを作成します。
  2. CreateChildNode() メソッドを呼び出して、円柱などの画面に表示する形状であるジオメトリを追加します。
  3. Material などの子ノードのプロパティを設定します。
  4. Light クラス オブジェクトを初期化します。
  5. CreateChildNode() メソッドを呼び出して Light エンティティを追加します。
  6. 最後に、Save() メソッドを使用してシーンを FBX として保存します。出力ファイル パスと FileFormat.FBX7500ASCII を引数として取ります。

次のコード サンプルは、C# を使用して単純な 3D シーンを作成する方法を示しています。

// このコード例は、FBX ファイルで単純な 3D シーンを作成する方法を示しています。
// 3D シーンの初期化
var scene = new Scene();

// Cylinder オブジェクトの初期化
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 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 の詳細を学ぶことができます。ご不明な点がございましたら、フォーラムまでお気軽にお問い合わせください。

関連項目