چگونه صحنههای سهبعدی را به تصویر رندر کنیم در .NET
چگونه صحنههای سهبعدی را به تصویر در .NET رندر کنیم
این مقاله توضیح میدهد چگونه میتوان یک تصویر رستر از یک صحنه سهبعدی با استفاده از Aspose.3D برای .NET تولید کرد. حداقل تنظیمات به یک Camera، حداقل یک Light، و یک فراخوانی به Scene.Render نیاز دارد.
مرحله ۱ — نصب بسته
dotnet add package Aspose.3D.FOSSمرحله ۲ — بارگذاری یا ساخت یک صحنه
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));مرحله ۳ — افزودن دوربین
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مرحله ۴ — افزودن نورها
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);مرحله 5 — رندر به یک فایل تصویر
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");نکته: JPEG برای اسکرینشاتها فایلهای کوچکتری تولید میکند. از
"jpg"بهجای"png"وقتی کیفیت بدون افت لازم نیست.
Troubleshooting
| Symptom | دلیل محتمل | رفع |
|---|---|---|
| تصویر خروجی سیاه | بدون نور در صحنه | حداقل یک گره Light اضافه کنید |
| شیء قابل مشاهده نیست | دوربین به سمت اشتباه اشاره میکند | مختصات هدف LookAt را بررسی کنید |
| صحنه خالی رندر میشود | هندسه به گرهای متصل نیست | فراخوانی CreateChildNode(name, entity) |
منابع مرتبط
- رندر صحنههای سهبعدی — راهنمای توسعهدهنده با جزئیات کامل API
- کار با مواد و سایهزنی — تنظیمات ماده بر خروجی رندر تأثیر میگذارد