الميزات والوظائف

الميزات والوظائف

الميزات والوظائف

تغطي هذه الصفحة كل مجال ميزات رئيسية لـ 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أنواع المواد للإضاءة
 العربية