הכניסה
עבודה עם תוכן 3D ב- Java בדרך כלל דורשת בחירה בין משקל כבד מנועי משחקים וספריות מתמטיקה בר-בונס. aspose-3d-foss חבילת המוצרים מציעה A קרקע בינונית: API של גרפיקה במגרש ממוקד שמטפל בקובץ I/O, בהיראקיות העמודים, בנייה של משטח, ושיתוף שינויים ללא נחיתה ב רנדרינג תחנת צינור או שרשרת תלות מקומית.
הספרייה קוראת FBX, glTF/GLB, Wavefront OBJ ו- STL, ומכתבת gltF / GLB , OBD ו -STL (יצוא FBX אינו מיושם), מה שהופך אותו מעשי לעיבוד 3D בצד השרת, אינטגרציות כלי בניין, וצינורות טרנספורמציה נתונים המפעלים על Java 21 או מאוחר יותר.
הפוסט הזה עובר דרך היכולות של ניהול הבמה בספריה: איך לבנות סצנה מתוך קשת, להציב אותה עם גיאומטריה ושינויים, ולייצא את התוצאה לדיסק.
מה כולל
תגית: Graph Basics
The Scene כיתה היא המכולת השורש לכל מסמך 3D. Node, נתונים מטא-נתונים, קליפים אנימציה, ותת-סצנות.אתה יכול ליצור ריק מצלמה ולאחר מכן להציב אותו, או להעלות קובץ קיימת עם Scene.fromFile.
import com.aspose.threed.Scene;
import com.aspose.threed.Node;
Scene scene = new Scene();
Node root = scene.getRootNode();
// Add named child nodes to build a hierarchy
Node chassis = root.createChildNode("Chassis");
Node wheel = chassis.createChildNode("FrontLeftWheel");
כל אחד Node אפשר להחזיק א Entity (כמו ש- A Mesh או Camera) א Transform, רשימה של חומרים, ועוד נוזלים ילדים. הוא מראה את דפוס הסצנה-גרף המשמש על ידי רוב כלי הכתיבה 3D.
מבנה Mesh
The Mesh שיעור מאפשר לך להגדיר גיאומטריה מנקודות בקרה ומרכזים. תוספת: אתה מוסיף רצועות עם addControlPoint,ואז לחבר אותם אל פניהם. עם createPolygon.
import com.aspose.threed.Mesh;
Mesh box = new Mesh("Box");
// Define eight corners of a cube
box.addControlPoint(0, 0, 0);
box.addControlPoint(1, 0, 0);
box.addControlPoint(1, 1, 0);
box.addControlPoint(0, 1, 0);
box.addControlPoint(0, 0, 1);
box.addControlPoint(1, 0, 1);
box.addControlPoint(1, 1, 1);
box.addControlPoint(0, 1, 1);
// Create quad faces
box.createPolygon(0, 1, 2, 3); // back
box.createPolygon(4, 5, 6, 7); // front
box.createPolygon(0, 4, 7, 3); // left
box.createPolygon(1, 5, 6, 2); // right
box.createPolygon(3, 2, 6, 7); // top
box.createPolygon(0, 1, 5, 4); // bottom
scene.getRootNode().createChildNode("Box", box);
האש של המזון כוללת triangulate(), optimize(removeVertices),ו בולן פעילות (union, difference, intersectאבל שיטות אלה הן קשורות ל שחרור הנוכחי - הם מחזירים קליון של מזרן הכניסה ללא ביצוע את המבצע הנקרא.
שינויים ותפקידים
כל אחד Node נוהג A Transform זה משפיע על התרגום המקומי, ההפוך., הם מורכבים דרך הירוקרגיה, כך שהעצמה של ההורים תנוע את העצם. הוא מזיז את כל ילדיו.
import com.aspose.threed.Transform;
import com.aspose.threed.Node;
Node node = scene.getRootNode().createChildNode("Shifted");
Transform t = node.getTransform();
t.setTranslation(5.0, 0.0, -3.0);
t.setScale(2.0, 2.0, 2.0);
t.setEulerAngles(0, 45.0, 0);
עבור שאלות מיקום מוחלט, להתקשר node.getGlobalTransform() כדי להחזיר המורכב GlobalTransform,או node.evaluateGlobalTransform(true) כדי לקבל A Matrix4 זה כולל את הגדרות גיאומטריות.
חומרים PBR
The PbrMaterial המעמד מספק תכונות רנדרינג מבוססות פיזית: צבע אלבידו, גורם מתכת, חום, צבעים מפוזרים ופרטיות. להקצות חומר לקצה בעת יצירת הילד.
import com.aspose.threed.PbrMaterial;
import com.aspose.threed.Vector4;
import com.aspose.threed.Vector3;
PbrMaterial mat = new PbrMaterial("RedMetal");
mat.setAlbedo(new Vector4(0.9, 0.1, 0.1, 1.0));
mat.setMetallicFactor(0.8);
mat.setRoughnessFactor(0.3);
mat.setEmissiveColor(new Vector3(0, 0, 0));
scene.getRootNode().createChildNode("Part", box, mat);
פורמט זיהוי
The FileFormat מועדון מספק את המומחיות החיפוש והזיהוי הסטטי.אתה יכול לפתור פורמט על ידי הרחבת קובץ או לחקור זרם כדי לזהות קבצים לא ידועים.
import com.aspose.threed.FileFormat;
FileFormat fmt = FileFormat.getFormatByExtension("model.glb");
boolean canRead = fmt.getCanImport();
boolean canWrite = fmt.getCanExport();
מערכת שיפוץ מערכות
AxisSystem תן לך להגדיר את המזרקה העליונה, המזרח הקדמי ואת היעילות של מערכת הקואורדינטה, ולאחר מכן מחשב את Matrix4 כדי לשנות את הגיאומטריה בין קונבנציונלים (לדוגמה, ממערכת יד ימין Z-up למערכת Y-Up) יד שמאל אחת).
import com.aspose.threed.AxisSystem;
import com.aspose.threed.Axis;
import com.aspose.threed.CoordinateSystem;
import com.aspose.threed.Matrix4;
AxisSystem source = new AxisSystem(
CoordinateSystem.RIGHT_HANDED, Axis.Z_AXIS, Axis.Y_AXIS);
AxisSystem target = new AxisSystem(
CoordinateSystem.LEFT_HANDED, Axis.Y_AXIS, Axis.Z_AXIS);
Matrix4 conversion = source.transformTo(target);
מהיר התחלה
להוסיף את ההסתמכות של Maven:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>בואו לבנות סצנה פשוטה ולייצא אותה:
import com.aspose.threed.Scene;
import com.aspose.threed.Mesh;
import com.aspose.threed.Node;
import com.aspose.threed.StlSaveOptions;
import com.aspose.threed.FileContentType;
Scene scene = new Scene();
Mesh mesh = new Mesh("Triangle");
mesh.addControlPoint(0, 0, 0);
mesh.addControlPoint(1, 0, 0);
mesh.addControlPoint(0, 1, 0);
mesh.createPolygon(0, 1, 2);
scene.getRootNode().createChildNode("Shape", mesh);
StlSaveOptions opts = new StlSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("output.stl", opts);
פורמט תומך
| פורמט | הרחבה | קראו | כתוב |
|---|---|---|---|
| FBX (ASCII ו Binary, 6.x-7.x) | .fbx | כן | לא |
| גולף 1.0 / 2.0 | .gltf | כן | כן |
| GTTF בינארי | .glb | כן | כן |
| Wavefront OBJ | .obj | כן | כן |
| STL (ASCII ו-Binary) | .stl | כן | כן |
כל פורמט הוא מוקדש LoadOptions ו SaveOptions תת-מעמד ( עבור לדוגמה , FbxLoadOptions, GltfSaveOptions, StlSaveOptionsזה מראה הגדרות ספציפיות לתבנית כגון קואורדינט-מערכת וטופס תוכן בחירה →.
קוד פתוח & רישיון
Aspose.3D FOSS for Java שוחרר תחת רישיון MIT. זמין ב-GitHub Aspose.3D-FOSS-לגביה. ניתן להשתמש, לשנות ולהפיץ מחדש את הספרייה בשירותים מסחריים ו פרויקטים שאינם מסחריים ללא הגבלה.
להתחיל
- מדריך מפתחים • חורף של אש ו שימוש במדפסים
- בסיס ידע - איך לכתוב מאמרים ו- FAQs
- API רמז • מדרגה מלאה ו תיעוד שיטה