في منشور المقدمة,، غطينا ما هو Aspose.3D FOSS لـ .NET وكيفية البدء. يتعمق هذا المنشور أكثر في الميزات الرئيسية التي تشكل المكتبة، مع أمثلة شفرة لكل مجال.
جميع الأمثلة تفترض توجيه using التالي:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
using Aspose.ThreeD.Shading;
وحزمة NuGet:
dotnet add package Aspose.3D --version 26.1.0
مخطط المشهد
مخطط المشهد هو بنية البيانات الأساسية. A Scene يحتوي على RootNode,، وكل Node يمكن أن يحتوي على عقد فرعية ومرفق Entity (مثل Mesh أو Camera).
إنشاء العقد والتنقل بينها
var scene = new Scene();
// Create a hierarchy
var parent = scene.RootNode.CreateChildNode("Parent");
var child1 = parent.CreateChildNode("Child1");
var child2 = parent.CreateChildNode("Child2");
// Navigate the tree
Console.WriteLine("Root children: " + scene.RootNode.ChildNodes.Count);
Console.WriteLine("Parent children: " + parent.ChildNodes.Count);
إرفاق الكيانات بالعقد
الكيانات هي المحتوى البصري للمشهد – الشبكات، الكاميرات، والأضواء. قم بإرفاقها باستخدام CreateChildNode:
var scene = new Scene();
// Create a box primitive and attach it to the scene
var box = new Box(2, 2, 2);
var boxNode = scene.RootNode.CreateChildNode("BoxNode", box);
// Create a sphere primitive
var sphere = new Sphere(1);
var sphereNode = scene.RootNode.CreateChildNode("SphereNode", sphere);
scene.Save("primitives.gltf");
الأشكال الأولية المدمجة
إصدار .NET يتضمن فئات أشكال بارامترية تُنشئ الهندسة دون بناء يدوي للرؤوس:
| شكل أساسي | الوصف |
|---|---|
Box | صندوق محاذى للمحاور مع عرض وارتفاع وعمق قابلين للتكوين |
Sphere | كرة بارامترية مع نصف قطر قابل للتكوين |
Cylinder | أسطوانة بارامترية مع أنصاف أقطار القمة/القاع والارتفاع قابل للتكوين |
يمكن إرفاق هذه الأشكال الأساسية مباشرةً بالعقد أو تحويلها إلى Mesh عبر ToMesh():
var cylinder = new Cylinder(1, 1, 2);
var mesh = cylinder.ToMesh();
Console.WriteLine("Vertices: " + mesh.ControlPoints.Count);
Console.WriteLine("Polygons: " + mesh.PolygonCount);
إنشاء Mesh
إذا كنت بحاجة إلى تحكم كامل، قم بإنشاء Mesh من الصفر باستخدام نقاط التحكم وتعريفات المضلعات:
var mesh = new Mesh();
// Add vertex positions
mesh.ControlPoints.Add(new Vector4(0, 0, 0, 1.0f));
mesh.ControlPoints.Add(new Vector4(1, 0, 0, 1.0f));
mesh.ControlPoints.Add(new Vector4(0.5f, 1, 0, 1.0f));
// Define a triangle face
mesh.CreatePolygon(0, 1, 2);
// Attach to a scene
var scene = new Scene();
scene.RootNode.CreateChildNode("triangle", mesh);
scene.Save("triangle.stl");
نقاط التحكم تُستخدم Vector4 مع الـ w مجموعة المكوّن مُعيّنة إلى 1.0f للمواقع الديكارتية القياسية. يتم تعريف المضلعات بتمرير مؤشرات نقاط التحكم إلى CreatePolygon().
التحويلات
كل Node لديه Transform خاصية تتحكم في موقعه المحلي، الدوران، والقياس:
var scene = new Scene();
var node = scene.RootNode.CreateChildNode("Moved");
node.Transform.Translation = new FVector3(5, 0, 0);
node.Transform.Scale = new FVector3(2, 2, 2);
وراثة التحويل
تُركّب التحويلات عبر تسلسل المشهد. موضع الطفل في الفضاء العالمي هو ناتج جميع تحويلات الأسلاف:
var scene = new Scene();
var parent = scene.RootNode.CreateChildNode("Parent");
parent.Transform.Translation = new FVector3(10, 0, 0);
var child = parent.CreateChildNode("Child");
child.Transform.Translation = new FVector3(5, 0, 0);
// Child's world position is (15, 0, 0)
// Access via child.GlobalTransform
GlobalTransform
الخاصية للقراءة فقط GlobalTransform خاصية على كل Node توفر مصفوفة التحويل في الفضاء العالمي المحسوبة بعد تجميع جميع التحويلات السلفية. يمكن الوصول إلى النتيجة عبر node.GlobalTransform.Matrix.
المواد
تتضمن المكتبة ثلاثة أنواع من المواد بزيادة في التعقيد:
LambertMaterial
مادة كلاسيكية تعتمد على الانتشار فقط:
var material = new LambertMaterial("WoodMaterial");
material.Diffuse = new Vector4(0.6f, 0.4f, 0.2f, 1.0f);
material.Ambient = new Vector4(0.1f, 0.1f, 0.1f, 1.0f);
material.Transparency = 0.0f;
PhongMaterial
يمتد من Lambert مع إبرازات انعكاسية:
var material = new PhongMaterial("ShinyMetal");
material.Specular = new Vector4(0.8f, 0.8f, 0.8f, 1.0f);
material.Shininess = 50.0f;
material.SpecularPower = 32.0f;
PbrMaterial
مادة تصيير معتمدة على الفيزياء تُستخدم في glTF 2.0:
var material = new PbrMaterial("GoldPBR");
material.BaseColor = new Vector4(1.0f, 0.8f, 0.2f, 1.0f);
material.Metallic = 0.9f;
material.Roughness = 0.1f;
material.Occlusion = 1.0f;
تدعم مواد PBR فتحات القوام للـ base color، والـ metallic/roughness، والـ normal، والـ emissive، وخرائط الـ occlusion عبر خصائص مسار القوام كسلسلة نصية.
أدوات الرياضيات
توفر المكتبة مجموعة من البدائيات الرياضية لعمليات الفضاء ثلاثي الأبعاد:
أنواع المتجهات
| النوع | المكونات | الدقة | الاستخدام الشائع |
|---|---|---|---|
Vector2 | X, Y | float | إحداثيات القوام UV |
Vector3 | X, Y, Z | float | متجه عام مكوّن من 3 مكونات |
Vector4 | X, Y, Z, W | float | نقاط التحكم، المتجهات العمودية |
FVector3 | X, Y, Z | float | خصائص التحويل (الإزاحة، التحجيم) |
FVector4 | X, Y, Z, W | float | بيانات عنصر القمة |
Quaternion
Quaternions تمثل الدورانات دون قفل الجيمبال:
var rotation = new Quaternion(0, 0, 0, 1); // Identity
node.Transform.Rotation = rotation;
Matrix4
4x4 transformation matrices for composing transforms:
// Matrix operations are used internally by Transform
// and GlobalTransform for world-space computation
BoundingBox
صناديق حدودية محاذاة للمحور لاستعلامات الفضاء:
// BoundingBox stores Minimum and Maximum FVector3 corners
// Used for frustum culling and spatial partitioning
عناصر الرؤوس
يمكن للشبكات (Meshes) حمل طبقات بيانات إضافية لكل رأس تتجاوز المواقع:
- VertexElementNormal – المتجهات العمودية السطحية لحسابات الإضاءة.
- VertexElementUV – إحداثيات النسيج لتطبيق الصور على الهندسة.
- VertexElementVertexColor – بيانات اللون RGBA لكل رأس.
كل عنصر رأس لديه MappingMode (لكل نقطة تحكم، لكل رأس مضلع، أو لكل مضلع) و ReferenceMode (قيم مباشرة أو قيم مفهرسة).
مقاطع الرسوم المتحركة
الـ Scene الفئة تدعم مقاطع الرسوم المتحركة المسماة عبر CreateAnimationClip() و GetAnimationClip(). في نسخة FOSS الحالية، إنشاء مقاطع الرسوم المتحركة والبحث عنها تعمل، لكن بيانات الإطارات المفتاحية والتشغيل لم يتم تنفيذها بعد.
var scene = new Scene();
var clip = scene.CreateAnimationClip("Walk");
// Retrieve by name
var found = scene.GetAnimationClip("Walk");
Console.WriteLine("Clip found: " + (found != null));
ما التالي
المقالة التالية تغطي العمل مع صيغ ملفات 3D في .NET – دليل عملي، صيغة‑بصيغة إلى OBJ و STL و glTF و FBX و 3MF مع خيارات التحميل/الحفظ وأنماط التحويل الجماعي.