Rendering 3D Szenen

Rendering von 3D-Szenen

Aspose.3D für .NET kann eine Szene in ein Rasterbild rendern. Die Render-Pipeline erfordert ein Camera (Blickpunkt), eine oder mehrere Light-Quellen und ImageRenderOptions (Ausgabeauflösung und -format). Die Renderer-Klasse steuert den Render-Pass.


Einrichten einer Kamera

Füge einer Szenenknoten ein Camera-Entität hinzu. Setze die Position der Kamera über das Transform des Knotens und richte sie mit LookAt auf ein Ziel aus:

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

Für orthografisches Rendering setze ProjectionType.Orthographic und gib OrthoHeight an.


Lichter hinzufügen

Szenen ohne Lichter rendern völlig dunkel. Füge mindestens ein Light hinzu, um die Geometrie zu beleuchten:

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

Rendern in eine Bilddatei

Verwenden Sie Scene.Render mit ImageRenderOptions, um ein PNG-, JPEG- oder BMP-Bild zu erzeugen:

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

Tipp: Stellen Sie für den Produktionseinsatz sicher, dass mindestens ein gerichtetes oder Umgebungslicht vorhanden ist. Eine nicht beleuchtete Szene wird je nach Material als Silhouette oder als durchgehend schwarze Oberfläche gerendert.


API Quick Reference

MemberBeschreibung
new Camera(projectionType)Erstellen Sie eine Kamera; verwenden Sie ProjectionType.Perspective oder Orthographic
camera.FieldOfViewYVertikales Sichtfeld in Grad (nur perspektivisch)
camera.NearPlaneEntfernung der nahen Clipping-Ebene
camera.FarPlaneEntfernung der fernen Clipping-Ebene
new Light(name)Lichtquelle erstellen
light.LightTypeDirectional, Point oder Spot
light.IntensityLichtintensität (positiver Float)
light.ColorRGB-Farbe als Vector3
new ImageRenderOptions()Render-Ausgabekonfiguration (Hintergrundfarbe, Schatten)
scene.Render(camera, path, size, format)Render-Szene aus Kameraperspektive; size ist Vector2, format ist "png", "jpg", usw.

Siehe auch

 Deutsch