الميزات والوظائف
الميزات والوظائف
هذه الصفحة تغطي كل مجال ميزة رئيسي لـ 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 | السجل والكاشف للصيغ |