Renderowanie scen 3D
Renderowanie scen 3D
Aspose.3D dla .NET może renderować scenę do obrazu rastrowego. Potok renderowania wymaga Camera (punkt widzenia), jednego lub więcej źródeł Light oraz ImageRenderOptions (rozdzielczość wyjściowa i format). Klasa Renderer steruje przebiegiem renderowania.
Ustawianie kamery
Dodaj encję Camera do węzła sceny. Ustaw pozycję kamery za pomocą Transform węzła i skieruj ją na cel przy użyciu 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);W renderowaniu ortograficznym ustaw ProjectionType.Orthographic i określ OrthoHeight.
Dodawanie świateł
Sceny bez świateł renderują się całkowicie ciemne. Dodaj co najmniej jedno Light, aby oświetlić geometrię:
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);Renderowanie do pliku obrazu
Użyj Scene.Render z ImageRenderOptions, aby wygenerować obraz PNG, JPEG lub 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");Wskazówka: W przypadku użycia w produkcji upewnij się, że jest co najmniej jedno światło kierunkowe lub ambient. Scena bez oświetlenia jest renderowana jako sylwetka lub jednolicie czarna powierzchnia, w zależności od materiału.
API Quick Reference
| Member | Opis |
|---|---|
new Camera(projectionType) | Utwórz kamerę; użyj ProjectionType.Perspective lub Orthographic |
camera.FieldOfViewY | Pionowy kąt widzenia w stopniach (tylko perspektywa) |
camera.NearPlane | Odległość płaszczyzny przycięcia bliskiego |
camera.FarPlane | Odległość płaszczyzny przycięcia dalekiego |
new Light(name) | Utwórz źródło światła |
light.LightType | Directional, Point lub Spot |
light.Intensity | Intensywność światła (dodatnia liczba zmiennoprzecinkowa) |
light.Color | Kolor RGB jako Vector3 |
new ImageRenderOptions() | Konfiguracja wyjścia renderowania (kolor tła, cienie) |
scene.Render(camera, path, size, format) | Renderuj scenę z punktu widzenia kamery; size to Vector2, format to "png", "jpg", itd. |
Zobacz także
- Aspose.3D for .NET — Enterprise Documentation
- Praca z materiałami i cieniowaniem — Materiały PBR i Phong wpływają na wynik renderowania