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 مع إخراج منسق بشكل جميل، ويحفظ النتائج. يمكنك تعديل هذا النمط لأي تركيبة من صيغ المصدر والهدف.

مرجع التحويل بين الصيغ

الجدول التالي يوضح ما يمكن توقعه عند التحويل بين الصيغ.

منإلىالهندسةالموادالتسلسل الهرميملاحظات
OBJSTLمحفوظمفقودN/ASTL لا يدعم المواد
OBJglTF/GLBمحفوظتم التحويل إلى PBRمسطحتم ربط مواد MTL حيثما كان ذلك ممكنًا
STLOBJمحفوظلا شيءN/Aلا توجد مواد في المصدر
STLglTF/GLBمحفوظافتراضيمسطحتم تطبيق المادة الافتراضية
glTFOBJمحفوظمبسطمُسطَّحمن PBR إلى مادة أساسية
glTFSTLمحفوظمفقودمسطحالهندسة فقط
FBXOBJمحفوظمبسطمسطحتبسيط المادة
FBXSTLمحفوظمفقودمسطحالهندسة فقط
FBXglTF/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.