Aspose.3D FOSS for Java يدعم خمسة تنسيقات ملف 3D: OBJ, STL, GLTF, GLB,و ، و FBX هذا المنشور هو دليل عملي، تنسيق حسب النموذج يظهر كيفية تحميل وتخزين كل واحد منهم، ما هي الخيارات المتاحة، وكيفية تحويل بينهما.

كل الأمثلة تستخدم com.aspose.threed.* حزمة :

import com.aspose.threed.*;

إدمان الماين :

<dependency>
  <groupId>org.aspose</groupId>
  <artifactId>aspose-3d-foss</artifactId>
  <version>26.5.0</version>
</dependency>

شكل المناظر الطبيعية

قبل الغوص ، إليك نظرة عامة سريعة على الإصدارات الأربعة المدعومة وحالات الاستخدام النموذجية.

شكلالتمديداستيرادتصديرالمواد الدعممسرحية الهرم
OBJ.objنعمنعمملفات MTL (Files of MTl)مسطحة
STL.stlنعمنعملا أحدمسطحة
GST 2.0.gltfنعمنعمPBRكاملة
GLB.glbنعمنعمPBRكاملة
FBX.fbxنعملاثروةكاملة

يدعم OBJ و STL و glTF و GLB كل من الواردات والتصدير. استيراد فقط.GLB (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 أو على المسار الذي يحدده التوجيه.

التخزين كأوبج

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

أوبا تستخدم الحالات

  • تبادل بيانات الماس بين أدوات 3D المختلفة.
  • استيراد النماذج من مكتبات الأصول التي توزع في تنسيق OBJ.
  • فحص سريع للجيومترية دون سلسلة من المشاهد المعقدة.

STL: ستيريوليثوغرافيا

STL هو النموذج القياسي للطباعة 3D. فإنه يمثل الجغرافيا المثلث الخام دون مواد أو ألوان أو سلسلة المشهد. STl ملفات تأتي في اثنين من الاختلافات: ASCII (القراءة البشرية) و الثنائية (المدمجة).

تحميل ملفات STL

// Simple load
Scene scene = Scene.fromFile("part.stl");

// With explicit options
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);

الادخار كالقمر

Scene scene = Scene.fromFile("model.obj");
scene.save("output.stl");

للتحكم في الإنتاج، واستخدام StlSaveOptions:

StlSaveOptions opts = new StlSaveOptions();
scene.save("output.stl", opts);

تقييمات STL

  • STL تخزين فقط الهندسة المثلثية.المواد والنسيج والهياركيا المسرحية لا تدعم وتسقط على التصدير.
  • تداول الخيارات الثنائية استثمارات لا تريغولايت تلقائيًا. STL الثنائية يكتب فقط أول 3 أطراف كل وجه من البوليجون ؛ يتم إخفاء وجوه الربع والنيغون بهدوء. ASCII ST L يكتشف جميع المؤشرات الخلفية لكل وجه ، مما ينتج نتائج مضللة للأوجه غير الثلاثية. دائمًّا ما تستخدم الماسات المسبقة (الجوانب الثلاثي) عند تصديرها إلى STl.
  • STL الثنائي هو أصغر بكثير من ASCII STl بالنسبة للنماذج الكبيرة.
  • STL هو تنسيق الاختيار عندما يكون الهدف هو طابعة 3D أو برامج التخزين.

GLTF: تنسيق النقل GL

glTF هو تنسيق حديث مصمم لنقل و تحميل فعال للمحتوى 3D، وخاصة على شبكة الإنترنت وفي التطبيقات في الوقت الحقيقي.

تحميل ملفات 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 حجم الملفات الصغيرة في الإنتاج.

GST تستخدم الحالات

  • المشاهدين 3D على شبكة الإنترنت (three.js، Babylon.JS).
  • تطبيقات في الوقت الحقيقي ومحركات الألعاب.
  • الحفاظ على تعريفات PBR المواد عبر الأدوات.

FBX: Filmbox (إيرادات فقط)

FBX هو تنسيق خاص من قبل Autodesk الذي يستخدم على نطاق واسع في تطوير الألعاب وإنشاء المحتوى الرقمي. Aspose.3D FOSS for Java يدعم FBx for استيراد فقط - لا توجد استثمارات إلى FBX.

ثنائي FBX فقط. المستورد FBX يقرأ الملفات الثنائية فقط.مخالفة ملف ASCII FB X يرمي ImportException("ASCII FBX format not yet supported - only binary FBX is supported"). لا يتم التحقق من الهرم والميزانية المادية من FBX بالكامل ؛ قد لا تكون مشاهد FB X المعقدة مشحونة تمامًا.

تحميل ملفات FBX

Scene scene = Scene.fromFile("character.fbx");

// With options
FbxLoadOptions opts = new FbxLoadOptions();
Scene scene = Scene.fromFile("character.fbx", opts);

تحويل FBX إلى تنسيقات أخرى

وبما أن تصدير FBX غير مدعوم، فإن تحويل المشاهد المستوردة من FB X إلى 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) وتحويلها إلى تنسيقات أخرى.
  • تحميل الهندسة الثنائية FBX وإعادة تصديرها إلى glTF/GLB، OBJ، أو STL.

Batch تحويلات

تدفق عمل شائع هو تحويل دليل كامل من الملفات من تنسيق إلى آخر.هنا نموذج لتحويل مجموعة:

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/Aلا يوجد دعم مادي لـ STL
OBJGLTF / GLBالمحافظةتحويل إلى PBRمسطحةمادة MTL خريطة حيثما كان ذلك ممكنا
STLOBJالمحافظةلا أحدN/Aلا مادة في المصدر
STLGLTF / GLBالمحافظةالافتراضيةمسطحةالمواد الافتراضية المستخدمة
GLTFOBJالمحافظةالبساطةملموسةPBR إلى المواد الأساسية
GLTFSTLالمحافظةفقدانملموسةالجيومتر فقط
FBXOBJالمحافظةالبساطةملموسةالمواد البسيطة
FBXSTLالمحافظةفقدانملموسةالجيومتر فقط
FBXGLTF / GLBالمحافظةتحويل إلى PBRالمحافظةالخير الولاء

إرشادات التحويل العام

  • الجيومترية يتم الحفاظ عليها بشكل عام عبر أزواج النموذج، مع استثناء مهم واحد: عند تصديرها إلى STL، يجب أن تتكون الماسا بالكامل من الوجوه الثلاثية. STD الثنائية صامتة يغطي الجوانب الربع و n-gon إلى أول 3 أعماق؛ ASCII ST L ينتج خروجه مزعجة للوجوس غير الثلاثي.
  • المواد البقاء على قيد الحياة أفضل بين glTF و FBX المستوردة المشاهد التي تشمل البيانات المادية. تحويل إلى STL دائما يقطع المواد. التحويل الى OBJ يبسط المادة إلى نموذج MTL الأساسي.
  • مسرحية الهرم يتم الحفاظ عليها بين ملفات تنسيق glTF. OBJ و STL تنتج الهياكل المسطحة. FBX الهرم واستخراج المواد لا تثبت تماما في هذا الإصدار.

وضعها كلها معاً

وهنا مثال كامل يحمل ملف 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 يعطيك API متسق عبر تنسيقات متعددة.:

  • OBJ - تبادل البلاط بسيطة مع المواد الأساسية.
  • STL - تنسيق الهندسة الجيومترية فقط لقطاب الطباعة 3D.
  • GLTF / GLB - تنسيق PBR الحديث للاستخدام الويب وفي الوقت الحقيقي. GltfSaveOptions مع setContentType(FileContentType.BINARY) من حيث الإنتاج GLB.
  • FBX - استيراد فقط؛ تنسيق غني للشحن الأصول من محركات اللعبة وأدوات DCC.

(استخدم محرك الأقراص المحدد للفرم وتخزين فئات الخيارات)ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptions( ) عندما تحتاج إلى السيطرة على عملية الاستيراد أو التصدير.

لمزيد من التفاصيل، زيارة أندرويد 3D الوثائقية أو انظر إلى المصدر على GitHub.