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
| Member | Beschreibung |
|---|---|
new Camera(projectionType) | Erstellen Sie eine Kamera; verwenden Sie ProjectionType.Perspective oder Orthographic |
camera.FieldOfViewY | Vertikales Sichtfeld in Grad (nur perspektivisch) |
camera.NearPlane | Entfernung der nahen Clipping-Ebene |
camera.FarPlane | Entfernung der fernen Clipping-Ebene |
new Light(name) | Lichtquelle erstellen |
light.LightType | Directional, Point oder Spot |
light.Intensity | Lichtintensität (positiver Float) |
light.Color | RGB-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
- Aspose.3D for .NET — Enterprise Documentation
- Arbeiten mit Materialien und Schattierung — PBR- und Phong-Materialien beeinflussen die Renderausgabe