في منشور المقدمة,، غطينا ما هو 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 عبر خصائص مسار القوام كسلسلة نصية.

أدوات الرياضيات

توفر المكتبة مجموعة من البدائيات الرياضية لعمليات الفضاء ثلاثي الأبعاد:

أنواع المتجهات

النوعالمكوناتالدقةالاستخدام الشائع
Vector2X, Yfloatإحداثيات القوام UV
Vector3X, Y, Zfloatمتجه عام مكوّن من 3 مكونات
Vector4X, Y, Z, Wfloatنقاط التحكم، المتجهات العمودية
FVector3X, Y, Zfloatخصائص التحويل (الإزاحة، التحجيم)
FVector4X, Y, Z, Wfloatبيانات عنصر القمة

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 مع خيارات التحميل/الحفظ وأنماط التحويل الجماعي.