渲染 3D 场景
渲染 3D 场景
Aspose.3D 用于 .NET 可以将场景渲染为光栅图像。渲染管线需要一个 Camera(视点),一个或多个 Light 源,以及 ImageRenderOptions(输出分辨率和格式)。Renderer 类驱动渲染通道。
设置相机
向场景节点添加一个 Camera 实体。通过节点的 Transform 设置相机的位置,并使用 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);对于正交渲染,设置 ProjectionType.Orthographic 并指定 OrthoHeight。
添加灯光
没有灯光的场景渲染会完全黑暗。至少添加一个 Light 来照亮几何体:
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);渲染为图像文件
使用 Scene.Render 与 ImageRenderOptions 生成 PNG、JPEG 或 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");提示: 在生产环境中使用时,请确保场景中至少存在一个方向光或环境光。未点亮的场景会根据材质渲染为剪影或纯黑表面。
API Quick Reference
| Member | 描述 |
|---|---|
new Camera(projectionType) | 创建相机;使用 ProjectionType.Perspective 或 Orthographic |
camera.FieldOfViewY | 垂直视野角度(单位:度,仅限透视) |
camera.NearPlane | 近裁剪平面距离 |
camera.FarPlane | 远裁剪平面距离 |
new Light(name) | 创建光源 |
light.LightType | Directional, Point, 或 Spot |
light.Intensity | 光强度(正浮点数) |
light.Color | RGB颜色为 Vector3 |
new ImageRenderOptions() | 渲染输出配置(背景颜色,阴影) |
scene.Render(camera, path, size, format) | 从相机视角渲染场景;size 是 Vector2,format 是 "png","jpg",等等。 |
另请参阅
- Aspose.3D for .NET — Enterprise Documentation
- 材质与着色的使用 — PBR 和 Phong 材质会影响渲染输出