Redarea scenelor 3D
Redarea scenelor 3D
Aspose.3D pentru .NET poate reda o scenă într-o imagine raster. Pipeline-ul de redare necesită un Camera (punct de vedere), una sau mai multe surse Light, și ImageRenderOptions (rezoluție și format de ieșire). Clasa Renderer conduce pasul de redare.
Configurarea unei camere
Adăugați o entitate Camera la un nod al scenei. Setați poziția camerei prin Transform nodului și îndreptați-o spre o țintă utilizând 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);Pentru redare ortografică, setați ProjectionType.Orthographic și specificați OrthoHeight.
Adăugarea luminilor
Scenele fără lumini se redau complet întunecate. Adăugați cel puțin un Light pentru a ilumina geometria:
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);Redare în fișier imagine
Utilizați Scene.Render cu ImageRenderOptions pentru a produce o imagine PNG, JPEG sau 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");Sfat: Pentru utilizare în producție, asigurați-vă că există cel puțin o lumină direcțională sau ambientală. O scenă neiluminată este redată ca o siluetă sau o suprafață complet neagră, în funcție de material.
API Quick Reference
| Member | Descriere: |
|---|---|
new Camera(projectionType) | Creați o cameră; folosiți ProjectionType.Perspective sau Orthographic |
camera.FieldOfViewY | Câmp de vedere vertical în grade (doar perspectivă) |
camera.NearPlane | Distanța planului de decupare apropiat |
camera.FarPlane | Distanța planului de decupare îndepărtat |
new Light(name) | Creează o sursă de lumină |
light.LightType | Directional, Point, sau Spot |
light.Intensity | Intensitatea luminii (float pozitiv) |
light.Color | Culoare RGB ca Vector3 |
new ImageRenderOptions() | Configurarea ieșirii de randare (culoare de fundal, umbre) |
scene.Render(camera, path, size, format) | Randare scenă din perspectiva camerei; size este Vector2, format este "png", "jpg", etc. |
Vezi și:
- Aspose.3D for .NET — Enterprise Documentation
- Lucrul cu Materiale și Umbrire — Materialele PBR și Phong afectează rezultatul randării