رندر صحنههای سهبعدی
رندر صحنههای سهبعدی
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 بر خروجی رندر تأثیر میگذارند