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 הוא אחד ממבני הרשת התלת‑ממדיים הנתמכים ביותר. הוא מאחסן גאומטריה כטקסט פשוט, עם אפשרות .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: סטריליתוגרפיה

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 מכילים רק גאומטריה משולשת. חומרים, מרקמים והיררכיית הסצנה אובדים במהלך הייצוא.
  • STL בינארי קטן משמעותית מ‑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

  • צופים תלת‑ממדיים מבוססי אינטרנט (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 עם פלט pretty-printed, ושומר את התוצאות. ניתן להתאים תבנית זו לכל שילוב של פורמט מקור ופורמט יעד.

הפניה להמרת פורמטים חוצי

הטבלה שלהלן מציגה מה לצפות בעת המרה בין פורמטים.

מאלגאומטריהחומריםהיררכיההערות
OBJSTLמשומראבודN/Aל‑STL אין תמיכת חומרים
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 נותן לך API עקבי במגוון פורמטים. הנקודות המרכזיות:

  • OBJ – החלפת רשת פשוטה עם חומרים בסיסיים.
  • STL – פורמט רק-גאומטריה לצינורות הדפסת תלת‑ממד.
  • glTF / GLB – פורמט מודרני תומך PBR לשימוש ברשת ובזמן אמת. השתמש GltfSaveOptions עם setContentType(FileContentType.BINARY) ליצוא GLB.
  • FBX – ייבוא בלבד; פורמט עשיר לטעינת נכסים ממנועי משחק וכלי DCC.

השתמש במחלקות אפשרויות טעינה ושמירה ספציפיות לפורמט (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptions) כאשר אתה צריך שליטה מדויקת על תהליך הייבוא או הייצוא.

לפרטים נוספים, בקר ב- Aspose.3D תיעוד או עיין במקור ב- GitHub.