Як рендерити 3D сцени у зображення в .NET
Як рендерити 3D сцени в зображення у .NET
У цій статті пояснюється, як створити растрове зображення з 3D сцени за допомогою Aspose.3D для .NET. Мінімальне налаштування вимагає Camera, принаймні одного 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 | Ймовірна причина | Виправлення |
|---|---|---|
| Чорне вихідне зображення | У сцені немає світла | Додайте хоча б один Light вузол |
| Об’єкт не видно | Камера спрямована не в ту сторону | Перевірте координати цілі LookAt |
| Сцена рендериться порожньо | Геометрія не приєднана до вузла | Викличте CreateChildNode(name, entity) |
Пов’язані ресурси
- Рендеринг 3D-сцен — посібник розробника з повними деталями API
- Робота з матеріалами та затіненням — налаштування матеріалу впливає на вихід рендеру