シンプルな 3D シーンは、ジオメトリ データの 3 次元グラフィック表現です。この記事では、3D モデリングまたはレンダリング ソフトウェアをインストールする必要なく、C# を使用してゼロから 3D シーンを作成する方法を学習します。 3D シーンを FBX ファイル形式で保存します。これは、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 クラスを使用すると、シーンにライトを追加できます。
APIのDLLをダウンロードするか、NuGetを使ってインストールしてください。
PM> Install-Package Aspose.3D
C# で簡単な 3D シーンを作成する
以下の手順に従って、簡単な 3D シーンを作成できます。
- Scene クラスのインスタンスを作成します。
- CreateChildNode() メソッドを呼び出して、円柱などの画面に表示する形状であるジオメトリを追加します。
- Material などの子ノードのプロパティを設定します。
- Light クラス オブジェクトを初期化します。
- CreateChildNode() メソッドを呼び出して Light エンティティを追加します。
- 最後に、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 シーンを読み取ることができます。
- Scene クラスのインスタンスを作成します。
- Open() メソッドを使用して、既存の 3D ドキュメントを読み込みます。
- ChildNodes プロパティをループする
- 最後に、プロパティ値を表示します。
次のコード サンプルは、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 の詳細を学ぶことができます。ご不明な点がございましたら、フォーラムまでお気軽にお問い合わせください。