Как рендерить 3D-сцены в изображения в .NET

Как рендерить 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)

Сопутствующие ресурсы

См. также:

 Русский