Cách Render Các Cảnh 3D Thành Hình Ảnh trong .NET

Cách Render Các Cảnh 3D Thành Hình Ảnh trong .NET

Cách Render Cảnh 3D thành Hình ảnh trong .NET

Bài viết này giải thích cách tạo một hình ảnh raster từ một cảnh 3D bằng cách sử dụng Aspose.3D cho .NET. Cấu hình tối thiểu yêu cầu một Camera, ít nhất một Light, và một lời gọi tới Scene.Render.


Bước 1 — Cài đặt Gói

dotnet add package Aspose.3D.FOSS

Bước 2 — Tải hoặc Xây dựng một Cảnh

using Aspose.ThreeD;
using Aspose.ThreeD.Entities;

// Load an existing model
var scene = Scene.FromFile("model.fbx");

// Or build a scene in code
var scene = new Scene();
scene.RootNode.CreateChildNode("box", new Box(1, 1, 1));

Bước 3 — Thêm Camera

using Aspose.ThreeD.Entities;
using Aspose.ThreeD.Utilities;

var camera = new Camera(ProjectionType.Perspective);
camera.FieldOfViewY = 45.0;
camera.NearPlane = 0.1;
camera.FarPlane = 500.0;

Node camNode = scene.RootNode.CreateChildNode("camera", camera);
camNode.Transform.Translation = new Vector3(0, 5, 10);
camNode.Transform.EulerAngles = new Vector3(-30, 0, 0); // tilt down toward origin

Bước 4 — Thêm Đèn

var sun = new Light("sun") { LightType = LightType.Directional };
Node sunNode = scene.RootNode.CreateChildNode("sun", sun);
sunNode.Transform.EulerAngles = new Vector3(45, -30, 0);

var fill = new Light("fill") { LightType = LightType.Point, Intensity = 100 };
Node fillNode = scene.RootNode.CreateChildNode("fill", fill);
fillNode.Transform.Translation = new Vector3(-4, 6, 4);

Bước 5 — Kết xuất thành Tệp Hình Ảnh

using Aspose.ThreeD.Utilities;

// size is Vector2; format is a string ("png", "jpg", "bmp")
scene.Render(camera, "output.png", new Vector2(1280, 720), "png");

Console.WriteLine("Rendered: output.png");

Mẹo: JPEG tạo ra các tệp nhỏ hơn cho ảnh chụp màn hình. Sử dụng "jpg" thay vì "png" khi không yêu cầu chất lượng không mất dữ liệu.


Troubleshooting

SymptomNguyên nhân có thểKhắc phục
Hình ảnh đầu ra màu đenKhông có ánh sáng trong cảnhThêm ít nhất một nút Light
Đối tượng không hiển thịCamera hướng saiKiểm tra tọa độ mục tiêu của LookAt
Cảnh render trốngHình học chưa được gắn vào nútGọi CreateChildNode(name, entity)

Tài nguyên liên quan

Xem thêm

 Tiếng Việt