.NET で 3D シーンを画像にレンダリングする方法
.NET で 3D シーンを画像にレンダリングする方法
この記事では、.NET 用に Aspose.3D を使用して 3D シーンからラスタ画像を生成する方法を解説します。最小構成としては、Camera と、少なくとも 1 つの Light、そして Scene.Render の呼び出しが必要です。
ステップ 1 — パッケージをインストールする
dotnet add package Aspose.3D.FOSSステップ 2 — シーンをロードまたは構築する
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
// Load an existing model
var scene = Scene.FromFile("model.fbx");
// Or build a scene in code
var scene = new Scene();
scene.RootNode.CreateChildNode("box", new Box(1, 1, 1));ステップ 3 — カメラを追加する
using Aspose.ThreeD.Entities;
using Aspose.ThreeD.Utilities;
var camera = new Camera(ProjectionType.Perspective);
camera.FieldOfViewY = 45.0;
camera.NearPlane = 0.1;
camera.FarPlane = 500.0;
Node camNode = scene.RootNode.CreateChildNode("camera", camera);
camNode.Transform.Translation = new Vector3(0, 5, 10);
camNode.Transform.EulerAngles = new Vector3(-30, 0, 0); // tilt down toward originステップ 4 — ライトを追加する
var sun = new Light("sun") { LightType = LightType.Directional };
Node sunNode = scene.RootNode.CreateChildNode("sun", sun);
sunNode.Transform.EulerAngles = new Vector3(45, -30, 0);
var fill = new Light("fill") { LightType = LightType.Point, Intensity = 100 };
Node fillNode = scene.RootNode.CreateChildNode("fill", fill);
fillNode.Transform.Translation = new Vector3(-4, 6, 4);ステップ5 — 画像ファイルにレンダリング
using Aspose.ThreeD.Utilities;
// size is Vector2; format is a string ("png", "jpg", "bmp")
scene.Render(camera, "output.png", new Vector2(1280, 720), "png");
Console.WriteLine("Rendered: output.png");ヒント: JPEG はスクリーンショットのファイルサイズを小さくします。使用
"jpg"代わりに"png"ロスレス品質が不要な場合。
Troubleshooting
| Symptom | 考えられる原因 | 修正 |
|---|---|---|
| 黒い出力画像 | シーンに光がありません | 少なくとも1つのLightノードを追加してください |
| オブジェクトが表示されません | カメラの向きが間違っています | LookAtのターゲット座標を確認してください |
| シーンが空のままレンダリングされます | ジオメトリがノードにアタッチされていません | CreateChildNode(name, entity)を呼び出す |
関連リソース
- 3Dシーンのレンダリング — 開発者向けガイド(API の完全な詳細)
- マテリアルとシェーディングの取り扱い — マテリアル設定がレンダー出力に影響します