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

MemberBeschrijving
new Camera(projectionType)Maak een camera; gebruik ProjectionType.Perspective of Orthographic
camera.FieldOfViewYVerticale gezichtsveldhoek in graden (alleen perspectief)
camera.NearPlaneAfstand tot het nabijgelegen clipvlak
camera.FarPlaneAfstand tot het verre clipvlak
new Light(name)Maak een lichtbron
light.LightTypeDirectional, Point, or Spot
light.IntensityLichtintensiteit (positieve float)
light.ColorRGB-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

 Nederlands