Рендеринг 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.LightTypeDirectional, Point или Spot
light.IntensityИнтенсивность света (положительное число с плавающей точкой)
light.ColorRGB-цвет как Vector3
new ImageRenderOptions()Конфигурация вывода рендеринга (цвет фона, тени)
scene.Render(camera, path, size, format)Рендер сцены с позиции камеры; size — Vector2, format — "png", "jpg" и т.д.

См. также:

 Русский