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

MemberDescriere:
new Camera(projectionType)Creați o cameră; folosiți ProjectionType.Perspective sau Orthographic
camera.FieldOfViewYCâmp de vedere vertical în grade (doar perspectivă)
camera.NearPlaneDistanța planului de decupare apropiat
camera.FarPlaneDistanța planului de decupare îndepărtat
new Light(name)Creează o sursă de lumină
light.LightTypeDirectional, Point, sau Spot
light.IntensityIntensitatea luminii (float pozitiv)
light.ColorCuloare 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:

 Română