Renderowanie scen 3D

Renderowanie scen 3D

Aspose.3D dla .NET może renderować scenę do obrazu rastrowego. Potok renderowania wymaga Camera (punkt widzenia), jednego lub więcej źródeł Light oraz ImageRenderOptions (rozdzielczość wyjściowa i format). Klasa Renderer steruje przebiegiem renderowania.


Ustawianie kamery

Dodaj encję Camera do węzła sceny. Ustaw pozycję kamery za pomocą Transform węzła i skieruj ją na cel przy użyciu 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);

W renderowaniu ortograficznym ustaw ProjectionType.Orthographic i określ OrthoHeight.


Dodawanie świateł

Sceny bez świateł renderują się całkowicie ciemne. Dodaj co najmniej jedno Light, aby oświetlić geometrię:

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);

Renderowanie do pliku obrazu

Użyj Scene.Render z ImageRenderOptions, aby wygenerować obraz PNG, JPEG lub 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");

Wskazówka: W przypadku użycia w produkcji upewnij się, że jest co najmniej jedno światło kierunkowe lub ambient. Scena bez oświetlenia jest renderowana jako sylwetka lub jednolicie czarna powierzchnia, w zależności od materiału.


API Quick Reference

MemberOpis
new Camera(projectionType)Utwórz kamerę; użyj ProjectionType.Perspective lub Orthographic
camera.FieldOfViewYPionowy kąt widzenia w stopniach (tylko perspektywa)
camera.NearPlaneOdległość płaszczyzny przycięcia bliskiego
camera.FarPlaneOdległość płaszczyzny przycięcia dalekiego
new Light(name)Utwórz źródło światła
light.LightTypeDirectional, Point lub Spot
light.IntensityIntensywność światła (dodatnia liczba zmiennoprzecinkowa)
light.ColorKolor RGB jako Vector3
new ImageRenderOptions()Konfiguracja wyjścia renderowania (kolor tła, cienie)
scene.Render(camera, path, size, format)Renderuj scenę z punktu widzenia kamery; size to Vector2, format to "png", "jpg", itd.

Zobacz także

 Polski