الميزات والوظائف
الميزات والوظائف
تغطي هذه الصفحة كل مجال ميزات رئيسية لـ Aspose.3D 26.1.0 مع أمثلة C# تعمل.
تحميل وحفظ المشاهد
Scene.Open() يقوم بتحميل ملف؛; Scene.Save() يصدره. يتم اكتشاف الصيغة من امتداد الملف:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("input.obj");
scene.Save("output.glb");استخدم المصنع الثابت Scene.FromFile() كبديل:
var scene = Scene.FromFile("input.fbx");
scene.Save("output.stl");خيارات خاصة بالصيغة
مرّر LoadOptions أو SaveOptions الفئات الفرعية للتحكم الدقيق:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
var scene = new Scene();
scene.Open("model.obj", new ObjLoadOptions { FlipCoordinateSystem = true });
scene.Save("model.fbx");فئات الخيارات المتاحة:
| فئة | الاتجاه | الخصائص الرئيسية |
|---|---|---|
ObjLoadOptions | استيراد | FlipCoordinateSystem, EnableMaterials, Scale |
ObjSaveOptions | تصدير | FlipCoordinateSystem, EnableMaterials, PointCloud |
FbxLoadOptions | استيراد | (الإعدادات الافتراضية) |
GltfLoadOptions | استيراد | (الإعدادات الافتراضية) |
GltfSaveOptions | تصدير | (الإعدادات الافتراضية) |
StlLoadOptions | استيراد | (الإعدادات الافتراضية) |
StlSaveOptions | تصدير | (الإعدادات الافتراضية) |
ColladaLoadOptions | استيراد | FlipCoordinateSystem |
ColladaSaveOptions | تصدير | Indented, TransformStyle |
PlyLoadOptions | استيراد | (الإعدادات الافتراضية) |
بناء مخطط المشهد
أنشئ عقدًا وأرفق الكيانات لبناء هيكلية:
var scene = new Scene();
var root = scene.RootNode;
var boxNode = root.CreateChildNode("box", new Box(5, 5, 5));
var sphereNode = root.CreateChildNode("sphere", new Sphere(3));الوصول إلى العناصر الفرعية عبر node.ChildNodes و الكيان المرفق عبر node.Entity.
Mesh والبدائيات
إنشاء Mesh برمجيًا باستخدام نقاط التحكم والمضلعات:
// Mesh.ControlPoints uses Aspose.ThreeD.Utilities.Vector4
// (double-precision, lowercase fields: x, y, z, w)
using Aspose.ThreeD.Utilities;
var mesh = new Mesh("custom");
mesh.ControlPoints.Add(new Vector4(0.0, 0.0, 0.0)); // w defaults to 1.0
mesh.ControlPoints.Add(new Vector4(10.0, 0.0, 0.0));
mesh.ControlPoints.Add(new Vector4(10.0, 10.0, 0.0));
mesh.ControlPoints.Add(new Vector4(0.0, 10.0, 0.0));
mesh.CreatePolygon(0, 1, 2, 3);البنى الأساسية المدمجة (Box, Sphere, Cylinder) يمكن تحويلها إلى Mesh:
var box = new Box(10, 10, 10);
Mesh boxMesh = box.ToMesh();عناصر الرأس
أرفق المتجهات العمودية (normals)، إحداثيات UV، وألوان القمم إلى الهندسة:
var normals = new VertexElementNormal(MappingMode.ControlPoint, ReferenceMode.Direct);
mesh.AddElement(normals);أنواع عناصر القمم المتاحة: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.
التحويلات
كل Node يحمل Transform مع Translation, Rotation,، و Scale:
var node = scene.RootNode.CreateChildNode("moved", new Box());
node.Transform.Translation = new FVector3(10, 0, 5);
node.Transform.Scale = new FVector3(2, 2, 2);قراءة موضع الفضاء العالمي عبر node.GlobalTransform.Matrix أو node.EvaluateGlobalTransform().
المواد
عيّن المواد للعقد لتوفير بيانات الإضاءة:
var mat = new PhongMaterial("shiny");
mat.Diffuse = new Vector4(0.8, 0.2, 0.2, 1.0);
mat.Specular = new Vector4(1, 1, 1, 1);
mat.Shininess = 32;
scene.RootNode.CreateChildNode("red_box", new Box(), mat);أنواع المواد: LambertMaterial, PhongMaterial, PbrMaterial.
نصائح وأفضل الممارسات
- استخدم
Scene.FromFile()لتحميل سطر واحد عندما لا تحتاج إلى تخصيصLoadOptions - تحويل البدائيات إلى
MeshباستخدامToMesh()قبل إضافة عناصر الرؤوس - استخدم
GltfSaveOptionsمع.glbامتداد للإخراج الثنائي المدمج - تحقق
node.Entityلـnullقبل التحويل — ليس كل عقدة تحمل هندسة - استخدم
PolygonModifier.Triangulate()لتحويل شبكات رباعية قبل التصدير إلى صيغ تقتصر على المثلثات مثل STL
المشكلات الشائعة
| مشكلة | سبب | إصلاح |
|---|---|---|
ImportException عند التحميل | ملف غير مدعوم أو تالف | تحقق من أن الملف يفتح في عارض ثلاثي الأبعاد؛ وتأكد من أن الصيغة موجودة في القائمة المدعومة |
| المواد مفقودة بعد تحميل OBJ | .mtl الملف غير موجود | ضع الـ .mtl الملف بجوار الـ .obj أو اضبط ObjLoadOptions.EnableMaterials = true |
| عدم تطابق المقياس بعد استيراد FBX | أنظمة وحدات مختلفة | استخدم ObjLoadOptions.Scale أو تطبيق Transform بعد التحميل |
FAQ
كيف يمكنني اكتشاف صيغة ملف غير معروف؟?
استخدم FileFormat.Detect():
var format = FileFormat.Detect("unknown_file.bin");
Console.WriteLine(format.Extension);هل يمكنني التحميل من تدفق بدلاً من مسار ملف؟?
نعم. Scene.Open() يقبل Stream:
using var stream = File.OpenRead("model.glb");
scene.Open(stream);ما هي الصيغ التي تدعم الاستيراد والتصدير معًا؟?
تدعم صيغ OBJ و STL و glTF/GLB و FBX و COLLADA و 3MF الاتجاهين. يدعم PLY الاستيراد فقط (مُصدِّر PLY غير مفعَّل).
ملخص مرجع API
| فئة / طريقة | الوصف |
|---|---|
Scene | حاوية المشهد ثلاثي الأبعاد المستوى الأعلى |
Scene.Open() | تحميل ملف ثلاثي الأبعاد عبر المسار أو التدفق |
Scene.Save() | تصدير المشهد إلى ملف أو تدفق |
Scene.FromFile() | مصنع ثابت للتحميل وإرجاع Scene |
Node | عقدة تسلسل المشهد التي تحتفظ بالكيانات والتحولات |
Node.CreateChildNode() | إنشاء وإرفاق عقدة فرعية |
Mesh | شبكة مضلع بنقاط تحكم وقوائم الوجوه |
Mesh.CreatePolygon() | تعريف وجه مضلع بواسطة مؤشرات الرؤوس |
Box / Sphere / Cylinder | الأشكال الأولية البارامترية المدمجة |
Transform | الإزاحة المحلية، الدوران، والقياس |
FileFormat | السجل والكاشف للأنساق المدعومة |
LambertMaterial / PhongMaterial / PbrMaterial | أنواع المواد للإضاءة |