كيفية تحويل المشاهد ثلاثية الأبعاد إلى صور في .NET

كيفية تحويل المشاهد ثلاثية الأبعاد إلى صور في .NET

كيفية تحويل المشاهد ثلاثية الأبعاد إلى صور في .NET

تشرح هذه المقالة كيفية إنتاج صورة نقطية من مشهد ثلاثي الأبعاد باستخدام Aspose.3D لـ .NET. يتطلب الحد الأدنى من الإعداد Camera، وعلى الأقل Light واحد، واستدعاء إلى Scene.Render.


الخطوة 1 — تثبيت الحزمة

dotnet add package Aspose.3D.FOSS

الخطوة 2 — تحميل أو بناء مشهد

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));

الخطوة 3 — إضافة كاميرا

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

الخطوة 4 — إضافة أضواء

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)

الموارد ذات الصلة

انظر أيضاً

 العربية