Рендеринг 3D сцен
Рендеринг 3D сцен
Aspose.3D для .NET может отрисовать сцену в растровое изображение. Конвейер рендеринга требует Camera (точка зрения), один или несколько Light источников и ImageRenderOptions (разрешение и формат вывода). Класс Renderer управляет проходом рендеринга.
Настройка камеры
Добавьте объект Camera в узел сцены. Установите позицию камеры через Transform узла и направьте её на цель, используя LookAt:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
using Aspose.ThreeD.Utilities;
var scene = new Scene();
// Create the camera entity
var camera = new Camera(ProjectionType.Perspective);
camera.NearPlane = 0.1;
camera.FarPlane = 1000.0;
camera.FieldOfViewY = 45.0;
// Attach to a node and position it
Node cameraNode = scene.RootNode.CreateChildNode("main_camera", camera);
cameraNode.Transform.Translation = new Vector3(0, 5, 10);
// Aim the camera toward the scene origin by rotating around the X axis
cameraNode.Transform.EulerAngles = new Vector3(-30, 0, 0);Для ортографического рендеринга установите ProjectionType.Orthographic и укажите OrthoHeight.
Добавление светильников
Сцены без света отрисовываются полностью тёмными. Добавьте хотя бы один Light, чтобы осветить геометрию:
using Aspose.ThreeD.Entities;
// Directional (sun-like) light
var sunLight = new Light("sun");
sunLight.LightType = LightType.Directional;
sunLight.Color = new Vector3(1.0, 1.0, 0.95); // slightly warm white
Node sunNode = scene.RootNode.CreateChildNode("sun", sunLight);
sunNode.Transform.EulerAngles = new Vector3(45, -30, 0); // direction in degrees
// Point light
var pointLight = new Light("fill");
pointLight.LightType = LightType.Point;
pointLight.Intensity = 150.0;
Node pointNode = scene.RootNode.CreateChildNode("fill_light", pointLight);
pointNode.Transform.Translation = new Vector3(-3, 4, 3);Рендеринг в файл изображения
Используйте Scene.Render вместе с ImageRenderOptions для создания изображения в формате PNG, JPEG или BMP:
using Aspose.ThreeD;
using Aspose.ThreeD.Utilities;
// Render to a PNG file at 1280x720 — size is Vector2, format is a string
scene.Render(camera, "output.png", new Vector2(1280, 720), "png");Подсказка: Для использования в продакшене убедитесь, что присутствует хотя бы один направленный или окружающий свет. Сцена без освещения отображается как силуэт или сплошная чёрная поверхность в зависимости от материала.
API Quick Reference
| Member | Описание: |
|---|---|
new Camera(projectionType) | Создайте камеру; используйте ProjectionType.Perspective или Orthographic |
camera.FieldOfViewY | Вертикальное поле зрения в градусах (только перспектива) |
camera.NearPlane | Расстояние до ближней плоскости отсечения |
camera.FarPlane | Расстояние до дальней плоскости отсечения |
new Light(name) | Создать источник света |
light.LightType | Directional, Point или Spot |
light.Intensity | Интенсивность света (положительное число с плавающей точкой) |
light.Color | RGB-цвет как Vector3 |
new ImageRenderOptions() | Конфигурация вывода рендеринга (цвет фона, тени) |
scene.Render(camera, path, size, format) | Рендер сцены с позиции камеры; size — Vector2, format — "png", "jpg" и т.д. |
См. также:
- Aspose.3D for .NET — Enterprise Documentation
- Работа с материалами и затенением — PBR и Phong материалы влияют на вывод рендеринга