Rendering di scene 3D

Rendering di scene 3D

Aspose.3D per .NET può rendere una scena in un’immagine raster. Il pipeline di rendering richiede un Camera (punto di vista), una o più fonti Light, e ImageRenderOptions (risoluzione e formato di output). La classe Renderer gestisce il passaggio di rendering.


Impostare una telecamera

Aggiungi un’entità Camera a un nodo della scena. Imposta la posizione della telecamera tramite il Transform del nodo e puntala verso un bersaglio usando 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);

Per il rendering ortografico, imposta ProjectionType.Orthographic e specifica OrthoHeight.


Aggiungere luci

Le scene senza luci vengono renderizzate completamente buie. Aggiungi almeno un Light per illuminare la 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);

Rendering su un file immagine

Usa Scene.Render con ImageRenderOptions per produrre un’immagine PNG, JPEG o 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");

Suggerimento: Per l’uso in produzione, assicurati che sia presente almeno una luce direzionale o ambientale. Una scena non illuminata viene resa come una silhouette o una superficie nera solida a seconda del materiale.


API Quick Reference

MemberDescrizione
new Camera(projectionType)Crea una camera; usa ProjectionType.Perspective o Orthographic
camera.FieldOfViewYCampo visivo verticale in gradi (solo prospettiva)
camera.NearPlaneDistanza del piano di ritaglio vicino
camera.FarPlaneDistanza del piano di ritaglio lontano
new Light(name)Crea una sorgente luminosa
light.LightTypeDirectional, Point, o Spot
light.IntensityIntensità della luce (float positivo)
light.ColorColore RGB come Vector3
new ImageRenderOptions()Configurazione dell’output di rendering (colore di sfondo, ombre)
scene.Render(camera, path, size, format)Renderizza la scena dal punto di vista della telecamera; size è Vector2, format è "png", "jpg", ecc.

Vedi anche

 Italiano