Как рендерить 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
- Работа с материалами и шейдингом — настройка материала влияет на результат рендеринга