Візуалізація 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 матеріали впливають на результат рендерингу