Aspose.3D FOSS لـ Java يدعم خمسة صيغ ملفات ثلاثية الأبعاد: OBJ, STL, glTF, GLB,، و FBX (استيراد فقط).
جميع الأمثلة تستخدم com.aspose.threed.* الحزمة:
import com.aspose.threed.*;
اعتماد Maven:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>
منظور الصيغ
قبل الغوص في التفاصيل، إليك نظرة سريعة على الصيغ الأربع المدعومة وحالات الاستخدام النموذجية لها.
| الصيغة | الامتداد | استيراد | تصدير | دعم المواد | تسلسل المشهد |
|---|---|---|---|---|---|
| OBJ | .obj | نعم | نعم | أساسي (ملفات MTL) | مسطح |
| STL | .stl | نعم | نعم | لا شيء | مسطح |
| glTF 2.0 | .gltf | نعم | نعم | PBR | كامل |
| GLB | .glb | نعم | نعم | PBR | كامل |
| FBX | .fbx | نعم | لا | غني | كامل |
OBJ, STL, glTF, و GLB تدعم كلًا من الاستيراد والتصدير. يتم دعم FBX لـ استيراد فقط. يتم إنتاج GLB (binary glTF) عبر GltfSaveOptions مع setContentType(FileContentType.BINARY).
OBJ: Wavefront Object
OBJ هو أحد أكثر صيغ شبكات 3D المدعومة على نطاق واسع. يخزن الهندسة كنص عادي، مع خيار اختياري .mtl ملف مرفق للمواد.
تحميل ملفات OBJ
أبسط طريقة هي تمرير مسار الملف مباشرةً:
Scene scene = Scene.fromFile("model.obj");
لتحكم أكبر، استخدم ObjLoadOptions:
ObjLoadOptions opts = new ObjLoadOptions();
Scene scene = Scene.fromFile("model.obj", opts);
عند إشارة ملف OBJ إلى ملف MTL (عبر mtllib التوجيه)، ستحاول المكتبة تحميل تعريفات المواد منه تلقائيًا. يجب أن يكون ملف MTL في نفس الدليل الذي يوجد فيه ملف OBJ أو في المسار المحدد في التوجيه.
حفظ كـ OBJ
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.obj");
حالات استخدام OBJ
- تبادل بيانات الشبكة بين أدوات ثلاثية الأبعاد مختلفة.
- استيراد النماذج من مكتبات الأصول التي توزع بصيغة OBJ.
- فحص سريع للهندسة دون هياكل مشهد معقدة.
STL: Stereolithography
STL هو الصيغة القياسية للطباعة ثلاثية الأبعاد. يمثل هندسة مثلثية خام دون مواد أو ألوان أو هيكل مشهد. ملفات STL تأتي بنسختين: ASCII (قابلة للقراءة البشرية) و binary (مضغوطة).
تحميل ملفات STL
// Simple load
Scene scene = Scene.fromFile("part.stl");
// With explicit options
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);
حفظ كـ STL
Scene scene = Scene.fromFile("model.obj");
scene.save("output.stl");
للتحكم في الإخراج، استخدم StlSaveOptions:
StlSaveOptions opts = new StlSaveOptions();
scene.save("output.stl", opts);
اعتبارات STL
- تحتوي ملفات STL على هندسة مُثلثة فقط. تُفقد المواد والملمس وتسلسل المشهد أثناء التصدير.
- الـ Binary STL أصغر بكثير من ASCII STL للنماذج الكبيرة.
- STL هو الصيغة المفضلة عندما يكون الهدف طابعة ثلاثية الأبعاد أو برنامج تقطيع.
glTF: تنسيق نقل GL
glTF هو تنسيق حديث صُمم لنقل وتحميل محتوى ثلاثي الأبعاد بكفاءة، خاصةً على الويب وفي التطبيقات الفورية. يدعم مواد PBR، وتسلسلات المشهد، والرسوم المتحركة.
تحميل ملفات glTF
Scene scene = Scene.fromFile("scene.gltf");
// With options
GltfLoadOptions opts = new GltfLoadOptions();
Scene scene = Scene.fromFile("scene.gltf", opts);
حفظ كـ glTF
الحفظ الأساسي يستخدم امتداد الملف لتحديد الصيغة:
scene.save("output.gltf");
للتحكم التفصيلي، استخدم GltfSaveOptions:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
تفاصيل GltfSaveOptions
| الطريقة | الغرض |
|---|---|
setFlipCoordinateSystem(boolean) | عكس محور نظام الإحداثيات أثناء التصدير. مفيد عند التحويل من Y-up إلى Z-up أو العكس. |
setPrettyPrint(boolean) | قم بتنسيق JSON الناتج مع مسافات بادئة لسهولة القراءة. اضبط إلى false لحجم ملف أصغر في الإنتاج. |
حالات استخدام glTF
- عارضات 3D على الويب (three.js، Babylon.js).
- التطبيقات الفورية ومحركات الألعاب.
- الحفاظ على تعريفات المواد PBR عبر الأدوات.
FBX: Filmbox (استيراد فقط)
FBX هو تنسيق مملوك من Autodesk يُستخدم على نطاق واسع في تطوير الألعاب وإنشاء المحتوى الرقمي. يدعم هياكل المشاهد الغنية والمواد والرسوم المتحركة. Aspose.3D FOSS لـ Java يدعم FBX لـ استيراد فقط – تصدير إلى FBX غير متاح.
تحميل ملفات FBX
Scene scene = Scene.fromFile("character.fbx");
// With options
FbxLoadOptions opts = new FbxLoadOptions();
Scene scene = Scene.fromFile("character.fbx", opts);
تحويل FBX إلى صيغ أخرى
نظرًا لعدم دعم تصدير FBX، قم بتحويل المشاهد المستوردة بصيغة FBX إلى glTF أو GLB أو OBJ أو STL:
Scene scene = Scene.fromFile("character.fbx");
// Save as GLB
GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("character.glb", opts);
حالات استخدام FBX
- استيراد الأصول من أدوات Autodesk (Maya، 3ds Max) وتحويلها إلى صيغ أخرى.
- تحميل الشخصيات المجهزة والمشاهد المتحركة لإعادة التصدير إلى glTF/GLB.
تحويل دفعي
سير عمل شائع هو تحويل دليل كامل من الملفات من تنسيق إلى آخر. إليك نمطًا للتحويل الدفعي:
import com.aspose.threed.*;
import java.io.File;
public class BatchConvert {
public static void main(String[] args) throws Exception {
File inputDir = new File("models/obj");
File outputDir = new File("models/gltf");
outputDir.mkdirs();
GltfSaveOptions saveOpts = new GltfSaveOptions();
saveOpts.setPrettyPrint(true);
File[] objFiles = inputDir.listFiles(
(dir, name) -> name.toLowerCase().endsWith(".obj")
);
if (objFiles == null) return;
for (File objFile : objFiles) {
String baseName = objFile.getName()
.replaceFirst("\\.obj$", "");
Scene scene = Scene.fromFile(objFile.getAbsolutePath());
String outPath = new File(outputDir, baseName + ".gltf")
.getAbsolutePath();
scene.save(outPath, saveOpts);
System.out.println("Converted: " + objFile.getName()
+ " -> " + baseName + ".gltf");
}
}
}
هذا يحمل كل .obj ملف في دليل، يحول كل منها إلى glTF مع إخراج منسق بشكل جميل، ويحفظ النتائج. يمكنك تعديل هذا النمط لأي تركيبة من صيغ المصدر والهدف.
مرجع التحويل بين الصيغ
الجدول التالي يوضح ما يمكن توقعه عند التحويل بين الصيغ.
| من | إلى | الهندسة | المواد | التسلسل الهرمي | ملاحظات |
|---|---|---|---|---|---|
| OBJ | STL | محفوظ | مفقود | N/A | STL لا يدعم المواد |
| OBJ | glTF/GLB | محفوظ | تم التحويل إلى PBR | مسطح | تم ربط مواد MTL حيثما كان ذلك ممكنًا |
| STL | OBJ | محفوظ | لا شيء | N/A | لا توجد مواد في المصدر |
| STL | glTF/GLB | محفوظ | افتراضي | مسطح | تم تطبيق المادة الافتراضية |
| glTF | OBJ | محفوظ | مبسط | مُسطَّح | من PBR إلى مادة أساسية |
| glTF | STL | محفوظ | مفقود | مسطح | الهندسة فقط |
| FBX | OBJ | محفوظ | مبسط | مسطح | تبسيط المادة |
| FBX | STL | محفوظ | مفقود | مسطح | الهندسة فقط |
| FBX | glTF/GLB | محفوظ | تم التحويل إلى PBR | محفوظ | دقة جيدة |
إرشادات التحويل العامة
- الهندسة دائمًا ما يتم الحفاظ عليها عبر جميع أزواج الصيغ.
- المواد تُحافظ على أفضل حال بين glTF و FBX، حيث يدعم كلاهما نماذج مواد غنية. التحويل إلى STL دائمًا ما يُزيل المواد. التحويل إلى OBJ يبسط المواد إلى نموذج MTL الأساسي.
- هيكل المشهد يتم الحفاظ عليه بين glTF و FBX. ينتج OBJ و STL هياكل مسطحة.
تجميع كل شيء معًا
إليك مثال كامل يقوم بتحميل ملف OBJ، ويفحص عقده، ويصدّر إلى كل من glTF و GLB:
import com.aspose.threed.*;
public class FormatWorkflow {
public static void main(String[] args) throws Exception {
// Load
Scene scene = Scene.fromFile("input.obj");
// Inspect
System.out.println("Nodes in scene:");
for (Node child : scene.getRootNode().getChildNodes()) {
System.out.println(" " + child.getName());
Transform t = child.getTransform();
System.out.println(" Translation: "
+ t.getTranslation());
}
// Export to glTF with options
GltfSaveOptions gltfOpts = new GltfSaveOptions();
gltfOpts.setPrettyPrint(true);
scene.save("output.gltf", gltfOpts);
// Export to GLB (binary glTF)
GltfSaveOptions glbOpts = new GltfSaveOptions();
glbOpts.setContentType(FileContentType.BINARY);
scene.save("output.glb", glbOpts);
System.out.println("Export complete.");
}
}
ملخص
Aspose.3D FOSS for Java يعطيك واجهة برمجة تطبيقات متسقة عبر صيغ متعددة. النقاط الرئيسية:
- OBJ – تبادل شبكة بسيط مع مواد أساسية.
- STL – تنسيق يقتصر على الهندسة لسلاسل طباعة ثلاثية الأبعاد.
- glTF / GLB – تنسيق حديث يدعم PBR للاستخدام على الويب وفي الوقت الفعلي. استخدم
GltfSaveOptionsمعsetContentType(FileContentType.BINARY)لإخراج GLB. - FBX – استيراد فقط؛ تنسيق غني لتحميل الأصول من محركات الألعاب وأدوات DCC.
استخدم فئات خيارات التحميل والحفظ الخاصة بالتنسيق (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptions).
لمزيد من التفاصيل، قم بزيارة وثائق Aspose.3D أو تصفح المصدر على GitHub.