אנו שמחים להודיע על זמינות של 3D FOSS עבור Java - ספרייה חינם, קוד פתוח לעבודה עם פורמטים של קבצים 3D ביישומים Java. בנוי כמו פתרון טהור Java ללא תלויות מקומיות, הספרייה עובדת על Java 21 ומאוחר יותר, מה שהופך אותו נגיש למגוון רחב של פרויקטים וסביבות.

הפוסט הזה עובר דרך מה הספרייה מציעה, איך להתחיל, ואיפה ללכת מכאן.

מהו 3D FOSS עבור Java?

Aspose.3D FOSS for Java הוא ספריית עיבוד קבצים 3D קל שפורסמה תחת הכתבה. רישיון MIT.הוא מספק API של תרשים סצנה המאפשר לך להעלות, לבדוק, לשנות ולשמור מודלים 3D על פני מספר פורמטים בשימוש נרחב.הספרייה כתובה לחלוטין ב- Java ואין צורך בהגדרות מקומיות או ספציפיות לפלטפורמה חיצוניות.

קוד המקור זמין ב-GitHub: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java

מפתח להדגמה

  • Java טהורה אין JNI, אין ספרייה מקומית, לא הגבלות פלטפורמה.
  • יפו 21+ תואם .
  • רישיון MIT • להשתמש בו בפרויקטים אישיים, מסחריים או בבעלות ללא הגבלות.
  • ארכיטקטורה של סצנה-גרף - עץ מוכר של כפתורים, חוטים, מצלמות וחומרים.
  • תמיכה רב פורמט - לקרוא ולכתוב את קבצי OBJ, STL, glTF 2.0 ו- GLB; לקרוא את הקבצים FBX.

מהיר התחלה

Maven ההתקנה

הוסף את ההסתמכות הבאה ל- Your pom.xml:

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

השינוי הראשון שלך

המקרה הפשוט ביותר הוא להעלות קובץ 3D בפורמט אחד ולשמור אותו בשני.הנה שינוי שני שורות מ- OBJ ל- STL:

import com.aspose.threed.*;

public class QuickConvert {
    public static void main(String[] args) throws Exception {
        Scene scene = Scene.fromFile("cube.obj");
        scene.save("output.stl");
    }
}

The Scene שיעור הוא נקודת הכניסה המרכזית. Scene.fromFile() עם מסלול קובץ כדי להעלות מודל, ואז להתקשר save() הספרייה מפרטת את הפורמט מתוך הרחבת הקובץ.

יצירת סצנה מ- Scratch

ניתן גם לבנות סצנות בתכנית:

import com.aspose.threed.*;

public class BuildScene {
    public static void main(String[] args) throws Exception {
        Scene scene = new Scene();
        Node node = scene.getRootNode().createChildNode("Box");

        Transform t = node.getTransform();
        t.setTranslation(1, 2, 3);

        scene.save("scene.gltf");
    }
}

זה יוצר סצנה חדשה, מוסיף נוט ילדים בשם “קופסה” מתחת לשורש, ממוקם אותו בקונדיקטים (1, 2, 3), ומייצא את התוצאה כקובץ glTF.

תוספת עם אפשרויות ספציפיות פורמט

כאשר אתה צריך שליטה טובה יותר על תהליך ההעלאה, כל פורמט מספק כיתה אפשרויות מיוחדות.לדוגמה, להעלות קובץ STL עם אפשרות ברורה:

import com.aspose.threed.*;

public class LoadWithOptions {
    public static void main(String[] args) throws Exception {
        StlLoadOptions opts = new StlLoadOptions();
        Scene scene = Scene.fromFile("part.stl", opts);

        // Inspect the loaded scene
        System.out.println("Root children: "
            + scene.getRootNode().getChildNodes().size());

        // Re-export as OBJ
        scene.save("part.obj");
    }
}

The Scene.fromFile() שיטה סטטית מקבלת כל אחד מהסוגים של אפשרויות העומס: ObjLoadOptions, StlLoadOptions, GltfLoadOptions,או FbxLoadOptions.

מעבר למסך הסצנה

ברגע שהסצנה מחוברת, אתה יכול ללכת על עץ הכפתור כדי לבדוק או לשנות את התוכן שלה:

import com.aspose.threed.*;

public class TraverseScene {
    public static void main(String[] args) throws Exception {
        Scene scene = Scene.fromFile("model.gltf");

        for (Node child : scene.getRootNode().getChildNodes()) {
            System.out.println("Node: " + child.getName());

            Transform t = child.getTransform();
            System.out.println("  Translation: " + t.getTranslation());

            Entity entity = child.getEntity();
            if (entity instanceof Mesh) {
                Mesh mesh = (Mesh) entity;
                System.out.println("  Vertices: "
                    + mesh.getControlPoints().size());
            }
        }
    }
}

דפוס זה מועיל לדיבוג, ליצור דיווחים על תוכן מודל, או לבחירה של חלקים של סצנה לפני ייצוא מחדש.

יישום טרנספורמציה

מיקום העמודים בחלל 3D נעשה באמצעות Transform כל אובייקט על כל Node:

import com.aspose.threed.*;

public class TransformExample {
    public static void main(String[] args) throws Exception {
        Scene scene = new Scene();

        Node parent = scene.getRootNode().createChildNode("Parent");
        parent.getTransform().setTranslation(10, 0, 0);

        Node child = parent.createChildNode("Child");
        child.getTransform().setTranslation(5, 0, 0);
        child.getTransform().setScale(2, 2, 2);

        // Child's world position is (15, 0, 0) due to
        // parent-child transform inheritance

        scene.save("transformed.gltf");
    }
}

טרנספורמציה עוקבת אחר מודל הירושה הסטנדרטי של ההורים-ילד: עמדת החלל העולמי של הילד היא שילוב של השינוי המקומי שלה וכל אבותיהם מתהפכים עד השורש.

מה כולל

הספרייה מכילה ספינות עם קבוצה ממוקדת של יכולות שנועדו סביב מודל 3D של צילומי המגרש.

סצנה גרפית

גרפיקה של המופע הוא הגב של ה- API. כל קובץ 3D מוצג כבניין עץ:

שיעורתפקיד
Sceneרמה גבוהה יותר של מחסן; שורש של תרשים המופע
Nodeעמדה נקראת על העץ; מחזיקה טרנספורמציות ונעולים ילדים
Entityבסיס אבסטרטי עבור אובייקטים חזותיים מחוברים לקוטנים
Meshגיאומטריה פוליגונלית - מעמקים, פרצופים, נורמליים
Cameraהגדרה של מצלמה וירטואלית
Transformתרגום מקומי, סיבוב וסיווג עבור נוט
GlobalTransformמחשב חלל עולם שינוי

חומרים

הספרייה מספקת מודל חומר PBR (פסיכולוגי מבוסס רנדרינג):

  • PbrMaterial - מבוסס פיזית רנדרינג חומר עם אלבדו, מתכת, צבע שורש ופרטיות.זהו הכיתה היחידה של חומרים ספציפיים זמינים בגרסה Java.

מתמטיקה Utilities

The com.aspose.threed החבילה כוללת פרימיטיביות מתמטיות חיוניות:

  • Vector3 - 3 מרכיבים וקטור עבור מיקומים, כיוונים וצבעים.
  • מתיקה4 4x4 טרנספורמציה מתיק.
  • קוטרניון • תצוגת סיבוב.
  • BoundingBox - תיבת הגבולות המורכבת למסלול חלל.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)

להעלות ולשמור אפשרויות

לכל פורמט יש כיתות אפשרויות מיוחדות המאפשרות לך לשלוט בהתנהגות ייבוא ויצוא:

פורמטאפשרויות טעינההצלת אפשרויות
OBJObjLoadOptionsObjSaveOptions
STLStlLoadOptionsStlSaveOptions
GLTF / GLBGltfLoadOptionsGltfSaveOptions
FBXFbxLoadOptions(הוא רק מגיע)

לדוגמה, לייצא glTF עם JSON הדפסה היטב ומערכת קואורדינטות מעופפות:

GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);

scene.save("output.gltf", opts);

פורמט תומך

הטבלה הבאה מסכמת את התבניות ש Aspose.3D FOSS עבור Java יכול לקרוא ולכתוב.

פורמטהרחבהייבואייצואהערות
OBJ.objכןכןעם חומרים MTL
STL.stlכןכןבינארי + ASCII
גולף 2.0.gltfכןכןפורמט JSON
GLB.glbכןכןבינארי glTF דרך GltfSaveOptions
FBX.fbxכןלארק ייבוא

OBJ, STL, glTF ו- GLB תומכים בהטעינה ובחיסכון. FBX תופסת רק עבור ייבוא.

מדריך בחירה פורמט

בחירת הפורמט הנכון תלוי במקרה השימוש שלך:

  • OBJ הוא אידיאלי כאשר אתה צריך תאימות מקסימלית בין כלים 3D. כמעט כל יישום מודל יכול לקרוא ולכתוב OBJ. זה עובד היטב עבור חילופי נתונים של מייס אבל נושאת רק מידע חומרי בסיסי באמצעות קבצי MTL שותפים.
  • STL הוא פורמט הבחירה עבור זרימת עבודה הדפסה 3D. זה מאוחסן גיאומטריה משולש ללא חומרים או הירוקרגיה של סצנה, אשר בדיוק מה תוכנת הזית מצפה. אם צינור שלך מסתיים על מדפסת 3d, STL היא הבחור הפשוט.
  • GLTF הוא הסטנדרט המודרני עבור האינטרנט ו 3D בזמן אמת. זה תומך חומרים PBR, שורות מלאות של סצנה, והוא תוכנן לשידור יעיל. להשתמש glTF בעת בניית צופים מבוססים באינטרנט, לעבוד עם three.js או Babylon.JS, או להקדיש כל צינור מציאותי בזמן.
  • FBX הוא משולב עמוק בתהליכי העבודה של פיתוח משחקים ופיתוח תוכן דיגיטלי. הוא תומך בנתונים עשירים של סצנה כולל היתרונות והחומרים. Aspose.3D FOSS for Java תמיכה FBX רק ייבוא - השתמש בו כדי להעלות את נכסי FBX ולהמיר אותם לתבניות אחרות.

הגבלות ידועות

חשוב לציין כי Scene.render() הוא לא נתמך ב-FOSS Edition.קרא את השיטה הזו יזרוק UnsupportedOperationException.הספרייה מיועדת לעיבוד 3D מבוסס קבצים - להעלות, לנהל, לשנות ולשמור מודלים - במקום להפוך את המסך בזמן אמת.

קוד פתוח ורישיון

Aspose.3D FOSS for Java שוחרר תחת רישיון MIT.כלומר, אתה חופשי:

  • השתמש בספריה באפליקציות מסחריות ובבעלות.
  • לשנות את קוד המקור כדי להתאים לצרכים שלך.
  • הפצה את הספרייה כחלק מתוכנתך.

אין דמי מלכות, אין גבולות לשימוש ואין דרישות גיוס מעבר למה שנקבע על ידי רישיון MIT.

קוד המקור המלא מאורגן ב- GitHub, והתרומות מוזמנות: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java

דרישות מערכת

דרישותפרטים
גרסה Java21 or later
תלויותלא (למשל, אין לי Java)
פלטפורמותכל פלטפורמה שמפעילה JVM
בניית כלימרי (מומלץ על ידי)

להתחיל

הנה כמה דרכים לעזור לך להתרומם ולנכנס:

  • מסמכים - מדריכים מקיפים ומסלולים API זמינים על ידי אתר מסמכים Aspose.3D.
  • בסיס ידע - כיצד לפרסם מאמרים וטיפים לפתרון בעיות ב- אסטרואיד 3D KB.
  • API רמז • שיעור ושיטה מפורטים ב- דוגמאות ל-Aspose.3D API.
  • קוד מקור • לחצו ולתרום GitHub.
  • מרכזי מאן החבילה פורסמה כ org.aspose:aspose-3d-foss:26.5.0 על מרכז מאן.

מקרים של שימוש נפוץ

הנה כמה סנריונים מעשיים שבהם Aspose.3D FOSS עבור Java מתאים היטב:

צורה של צינורות טרנספורמציה

צוותים רבים מקבלים נכסים 3D בפורמט אחד אך זקוקים להם בפורט אחר.צוות עיצוב עשוי לעבוד ב- FBX בעוד הצוות האינטרנט זמין ב glTF.הספרייה מאפשרת לך לבנות צינורות ההמרה אוטומטיים:

// Convert all incoming FBX assets to GLB for the web team
Scene scene = Scene.fromFile("asset.fbx");

GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);

scene.save("asset.glb", opts);

3D Model Inspection and Validation

לפני שילוב נכס 3D באפליקציה שלך, ייתכן שתרצה להוכיח את התוכן שלו - לבדוק את מספר החוטים, לבחון גיאומטריה או לאשר כי היצורים הצפויים קיימים:

Scene scene = Scene.fromFile("model.obj");

int nodeCount = scene.getRootNode().getChildNodes().size();
System.out.println("Top-level nodes: " + nodeCount);

for (Node child : scene.getRootNode().getChildNodes()) {
    if (child.getEntity() instanceof Mesh) {
        Mesh mesh = (Mesh) child.getEntity();
        System.out.println(child.getName() + ": "
            + mesh.getControlPoints().size() + " vertices");
    }
}

אסיפה סצנה

ניתן להעלות מספר מודלים ולשלב אותם לתוך סצנה אחת:

Scene scene = new Scene();

Scene part1 = Scene.fromFile("chassis.obj");
Scene part2 = Scene.fromFile("wheels.obj");

// Add nodes from each part into the combined scene
for (Node child : part1.getRootNode().getChildNodes()) {
    scene.getRootNode().getChildNodes().add(child);
}
for (Node child : part2.getRootNode().getChildNodes()) {
    scene.getRootNode().getChildNodes().add(child);
}

scene.save("assembled.gltf");

מהי הבא

בפוסטים הקרובים נכלול:

  • דליפה עמוקה לתכונות המפתח של API, חומרים ותוכניות מתמטיקה.
  • מדריך מעשי לעבוד עם כל פורמט 3D תומך - OBJ, STL, glTF ו- FBX - כולל אפשרויות טעינה / חיסכון ומדפסים להפוך של סוללות.

הישארו צבעוניים, ורגשו חופשיים לחקור את הספרייה ולשתף את התגובות שלך ב- GitHub.