Renderen van 3D-scènes
Renderen van 3D-scènes
Aspose.3D voor .NET kan een scène renderen tot een rasterafbeelding. De renderpijplijn vereist een Camera (kijkpunt), één of meer Light bronnen, en ImageRenderOptions (uitvoerresolutie en -formaat). De Renderer class stuurt de renderpass aan.
Een camera instellen
Voeg een Camera entiteit toe aan een sceneknoop. Stel de positie van de camera in via de Transform van de knoop, en richt deze op een doelwit met behulp van 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);Voor orthografisch renderen, stel ProjectionType.Orthographic in en specificeer OrthoHeight.
Lichten toevoegen
Scènes zonder verlichting renderen volledig donker. Voeg minstens één Light toe om de geometrie te verlichten:
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);Renderen naar een afbeeldingsbestand
Gebruik Scene.Render met ImageRenderOptions om een PNG-, JPEG- of BMP-afbeelding te maken:
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");Tip: Zorg er voor productiegebruik voor dat er minstens één directioneel of omgevingslicht aanwezig is. Een niet-verlichte scène wordt gerenderd als een silhouet of een volledig zwart oppervlak, afhankelijk van het materiaal.
API Quick Reference
| Member | Beschrijving |
|---|---|
new Camera(projectionType) | Maak een camera; gebruik ProjectionType.Perspective of Orthographic |
camera.FieldOfViewY | Verticale gezichtsveldhoek in graden (alleen perspectief) |
camera.NearPlane | Afstand tot het nabijgelegen clipvlak |
camera.FarPlane | Afstand tot het verre clipvlak |
new Light(name) | Maak een lichtbron |
light.LightType | Directional, Point, or Spot |
light.Intensity | Lichtintensiteit (positieve float) |
light.Color | RGB-kleur als Vector3 |
new ImageRenderOptions() | Render-uitvoerkonfiguratie (achtergrondkleur, schaduwen) |
scene.Render(camera, path, size, format) | Render scène vanuit camerahoek; size is Vector2, format is "png", "jpg", enz. |
Zie ook
- Aspose.3D for .NET — Enterprise Documentation
- Werken met materialen en shading — PBR- en Phong-materialen beïnvloeden de renderoutput