Візуалізація 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" тощо.

Дивіться також

 Українська