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
| Member | Descrizione |
|---|---|
new Camera(projectionType) | Crea una camera; usa ProjectionType.Perspective o Orthographic |
camera.FieldOfViewY | Campo visivo verticale in gradi (solo prospettiva) |
camera.NearPlane | Distanza del piano di ritaglio vicino |
camera.FarPlane | Distanza del piano di ritaglio lontano |
new Light(name) | Crea una sorgente luminosa |
light.LightType | Directional, Point, o Spot |
light.Intensity | Intensità della luce (float positivo) |
light.Color | Colore 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
- Aspose.3D for .NET — Enterprise Documentation
- Lavorare con Materiali e Shading — I materiali PBR e Phong influenzano l’output del rendering