תכונות ופונקציונליות
תכונות ופונקציונליות
דף זה מכסה כל תחום תכונה מרכזי של aspose-3d-foss 26.1.0 עם דוגמאות Java עובדות.
טעינה ושמירת סצנות
scene.open() טוען קובץ; scene.save() מייצא אותו:
import com.aspose.threed.Scene;
Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");חלופה של מפעל סטטי:
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");אפשרויות ספציפיות לפורמט
Pass LoadOptions או SaveOptions מחלקות משנה לשליטה מדויקת:
import com.aspose.threed.*;
Scene scene = new Scene();
ObjLoadOptions opts = new ObjLoadOptions();
opts.setFlipCoordinateSystem(true);
scene.open("model.obj", opts);
GltfSaveOptions saveOpts = new GltfSaveOptions();
saveOpts.setFlipCoordinateSystem(true);
scene.save("model.glb", saveOpts);הערה: FBX נתמך רק לייבוא; ייצוא FBX אינו מיושם בגרסת ה‑FOSS. רק בינארי FBX קבצים נתמכים לייבוא — ASCII FBX גורם לשגיאה ImportException.
בניית גרף סצנה
צור צמתים והצמד ישויות:
Scene scene = new Scene();
Node root = scene.getRootNode();
Mesh mesh = new Mesh("myMesh");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.createPolygon(0, 1, 2);
Node meshNode = root.createChildNode("triangle", mesh);פעולות Mesh
צור Mesh תכנותית עם נקודות בקרה ופוליגונים:
Mesh mesh = new Mesh("custom");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.getControlPoints().add(new Vector4(0, 10, 0));
mesh.createPolygon(0, 1, 2, 3);טרנספורמים
כל Node נושא Transform:
Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);קרא מרחב-עולם דרך node.getGlobalTransform().getMatrix().
חומרים
הקצה חומרים לצמתים:
PbrMaterial mat = new PbrMaterial("shiny");
mat.setAlbedo(new Vector4(0.8, 0.2, 0.2, 1.0));
mat.setMetallicFactor(0.5);
mat.setRoughnessFactor(0.3);
scene.getRootNode().createChildNode("red_mesh", mesh, mat);סוגי חומר: Material (בסיס), PbrMaterial (PBR metallic-roughness).
טיפים ושיטות עבודה מומלצות
- השתמש
Scene.fromFile()לטעינה בשורת קוד אחת כאשר אין צורך באפשרויות מותאמות - בנה רשתות תכנותית עם
createPolygon()לגיאומטריה מותאמת - השתמש
.glbהרחבה לפלט בינארי קומפקטי של glTF - בדוק
node.getEntity() != nullלפני המרה - ייצוא STL לא triangulate משטחי פוליגון אוטומטית. ייצוא Binary STL כותב רק את שלושת הקודקודים הראשונים של כל משטח פוליגון — משטחים מרובעים או n‑גוניים נחתכים בשקט. ייצוא ASCII STL כותב את כל אינדקסי הקודקודים, מה שמייצר בלוקים פגומים של פסים עבור משטחים שאינם משולשים. תמיד העבר רשתות שכבר תּוּקנו מראש (כל המשטחים משולשים) לייצוא STL כדי למנוע אובדן נתונים או פלט לא תקין.
בעיות נפוצות
| בעיה | סיבה | תיקון |
|---|---|---|
| חריגה בטעינה | קובץ לא נתמך או פגום | אמת שהקובץ נפתח במציג תלת‑ממדי |
| חומרים חסרים לאחר טעינת OBJ | .mtl הקובץ לא נמצא | מקום .mtl לצד .obj; ודא שהחומרים מופעלים |
| חוסר התאמה בקנה מידה לאחר ייבוא | מערכות יחידות שונות | החל Transform קנה מידה לאחר הטעינה |
FAQ
איך אני מזהה את פורמט הקובץ?
FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());האם ניתן לטעון מזרם?
כן. scene.open() מקבל InputStream.
אילו פורמטים תומכים גם בייבוא וגם ביצוא?
OBJ, STL ו‑glTF/GLB תומכים בשני הכיוונים. FBX הוא ייבוא בלבד; ייצוא אינו מיושם בגרסת הקוד הפתוח.
סיכום תיעוד API
| מחלקה / שיטה | תיאור |
|---|---|
Scene | מכולת סצנת 3D ברמה העליונה |
scene.open() | טען קובץ 3D לפי נתיב או זרם |
scene.save() | ייצא סצנה לקובץ או לזרם |
Scene.fromFile() | מפעל סטטי לטעינה והחזרת Scene |
Node | צומת היררכיית סצנה |
node.createChildNode() | צור והצמד צומת ילד |
Mesh | Polygon mesh עם נקודות בקרה ורשימות פנים |
mesh.createPolygon() | הגדר polygon face |
Mesh.toMesh() | המיר או שכפל mesh geometry |
Transform | תרגום, סיבוב וקנה מידה מקומיים |
FileFormat | רישום וגלאי לפורמטים |