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

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

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

هذه الصفحة تغطي كل مجال ميزة رئيسي لـ aspose-3d-foss 26.1.0 مع أمثلة Java عاملة.


تحميل وحفظ المشاهد

scene.open() يقوم بتحميل ملف؛; scene.save() يصدرها:

import com.aspose.threed.Scene;

Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");

بديل المصنع الثابت:

Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");

خيارات خاصة بالصيغة

تمرير LoadOptions أو SaveOptions الفئات الفرعية للتحكم الدقيق:

import com.aspose.threed.*;

Scene scene = new Scene();
ObjLoadOptions opts = new ObjLoadOptions();
opts.setFlipCoordinateSystem(true);
scene.open("model.obj", opts);

GltfSaveOptions saveOpts = new GltfSaveOptions();
saveOpts.setFlipCoordinateSystem(true);
scene.save("model.glb", saveOpts);

ملاحظة: يتم دعم FBX للاستيراد فقط؛ تصدير FBX غير مُنفّذ في نسخة FOSS. فقط FBX ثنائي الملفات مدعومة للاستيراد — ASCII FBX يسبب فشل ImportException.


بناء مخطط المشهد

إنشاء العقد وإرفاق الكيانات:

Scene scene = new Scene();
Node root = scene.getRootNode();

Mesh mesh = new Mesh("myMesh");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.createPolygon(0, 1, 2);

Node meshNode = root.createChildNode("triangle", mesh);

عمليات Mesh

إنشاء Mesh برمجياً باستخدام نقاط التحكم والمضلعات:

Mesh mesh = new Mesh("custom");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.getControlPoints().add(new Vector4(0, 10, 0));
mesh.createPolygon(0, 1, 2, 3);

التحويلات

كل Node يحمل Transform:

Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);

قراءة الفضاء العالمي عبر node.getGlobalTransform().getMatrix().


المواد

تعيين المواد إلى العقد:

PbrMaterial mat = new PbrMaterial("shiny");
mat.setAlbedo(new Vector4(0.8, 0.2, 0.2, 1.0));
mat.setMetallicFactor(0.5);
mat.setRoughnessFactor(0.3);

scene.getRootNode().createChildNode("red_mesh", mesh, mat);

أنواع المواد: Material (أساسي)،, PbrMaterial (PBR معدني-خشونة).


نصائح وأفضل الممارسات

  • استخدم Scene.fromFile() للتحميلات ذات سطر واحد عندما لا تكون الخيارات المخصصة مطلوبة
  • ابنِ الشبكات برمجيًا باستخدام createPolygon() للجيومتري المخصص
  • استخدم .glb الامتداد لإخراج glTF الثنائي المدمج
  • تحقق من node.getEntity() != null قبل التحويل
  • تصدير STL يقوم بـ ليس تثليث وجوه المضلعات تلقائيًا. تصدير STL الثنائي يكتب فقط أول 3 رؤوس لكل وجه من المضلعات — يتم قص الوجوه الرباعية أو متعددة الأضلاع بصمت. تصدير STL النصي (ASCII) يكتب جميع مؤشرات الرؤوس، مما ينتج كتل وجه غير صحيحة للوجوه غير المثلثية. يجب دائمًا تمرير الشبكات المثلاثة مسبقًا (وجوه مثلثية بالكامل) إلى تصدير STL لتجنب فقدان البيانات أو إخراج غير صالح.

المشكلات الشائعة

المشكلةالسببالإصلاح
استثناء عند التحميلملف غير مدعوم أو تالفتحقق من أن الملف يفتح في عارض ثلاثي الأبعاد
مواد مفقودة بعد تحميل OBJ.mtl الملف غير موجودالمكان .mtl بجوار .obj; تأكد من تمكين المواد
عدم تطابق المقياس بعد الاستيرادأنظمة وحدات مختلفةتطبيق Transform المقياس بعد التحميل

FAQ

كيف يمكنني اكتشاف تنسيق الملف؟?

FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());

هل يمكنني التحميل من تدفق بيانات؟?

نعم. scene.open() يقبل InputStream.

ما هي الصيغ التي تدعم الاستيراد والتصدير معًا؟?

تدعم صيغ OBJ و STL و glTF/GLB كلا الاتجاهين. صيغ FBX تدعم الاستيراد فقط؛ التصدير غير مُنفذ في النسخة المفتوحة المصدر.


ملخص مرجع API

فئة / طريقةالوصف
Sceneحاوية المشهد ثلاثي الأبعاد المستوى الأعلى
scene.open()تحميل ملف ثلاثي الأبعاد عبر المسار أو التدفق
scene.save()تصدير المشهد إلى ملف أو تدفق
Scene.fromFile()مصنع ثابت لتحميل وإرجاع Scene
Nodeعقدة تسلسل هرمي للمشهد
node.createChildNode()إنشاء وإرفاق عقدة فرعية
Meshشبكة مضلّعات بنقاط تحكم وقوائم الوجوه
mesh.createPolygon()تعريف وجه مضلع
Mesh.toMesh()تحويل أو استنساخ هندسة الشبكة
Transformالإزاحة المحلية، الدوران، والقياس
FileFormatالسجل والكاشف للصيغ
 العربية