תמיכת פורמטים תלת‑ממדיים
Aspose.3D FOSS עבור TypeScript קורא וכותב שבעה פורמטים עיקריים של קבצי 3D. זיהוי הפורמט הוא אוטומטי בעת הטעינה: הספרייה בודקת מספרי קסם בינריים כך שאין צורך לציין את פורמט המקור. מחלקות אפשרויות ספציפיות לפורמט מיובאות מתתי‑נתיבים של @aspose/3d חבילה.
פורמטים נתמכים
| פורמט | הרחבה | קריאה | כתיבה | מחלקת פורמט | הערות |
|---|---|---|---|---|---|
| Wavefront OBJ | .obj | כן | כן | ObjFormat | קורא .mtl חומרים; כותב .mtl במקביל .obj |
| glTF 2.0 | .gltf | כן | כן | GltfFormat | JSON טקסט + .bin sidecar |
| GLB | .glb | כן | כן | GltfFormat | Binary glTF; set binaryMode = true |
| STL | .stl | כן | כן | StlFormat | מצבי Binary ו‑ASCII |
| 3MF | .3mf | כן | כן | ThreeMfFormat | 3D Manufacturing Format |
| FBX | .fbx | לא* | לא* | FbxFormat | ייבוא/ייצוא קיים אך זיהוי פורמט אוטומטי אינו מחובר; אינו ניתן לשימוש דרך scene.open() |
| COLLADA | .dae | כן | כן | ColladaFormat | דורש xmldom (מותקן אוטומטית) |
OBJ (Wavefront)
OBJ תומך גם בייבוא וגם ביצוא ב @aspose/3d. כאשר שומרים כ‑OBJ, ספריית החומרים (.mtl) נכתב אוטומטית לצד .obj קובץ. השתמש ObjLoadOptions לשלוט בטעינת חומרים ובהתנהגות מערכת הקואורדינטות.
אפשרויות מפתח ל ObjLoadOptions:
| אפשרות | סוג | ברירת מחדל | אפקט |
|---|---|---|---|
enableMaterials | boolean | true | פענח את .mtl קובץ שמופנה על ידי mtllib |
flipCoordinateSystem | boolean | false | הפוך את צירי Y/Z כדי להתאים למערכות ימניות |
scale | number | 1.0 | קנה מידה אחיד המיושם על כל הקודקודים בטעינה |
normalizeNormal | boolean | true | נרמל נורמות קודקוד לאורך יחידה |
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
const opts = new ObjLoadOptions();
opts.enableMaterials = true;
opts.normalizeNormal = true;
scene.open('model.obj', opts);
console.log(`Loaded ${scene.rootNode.childNodes.length} top-level node(s)`);כדי להמיר OBJ לכל פורמט שניתן לכתיבה, טען אותו וקרא scene.save() עם מחלקת הפורמט היעד.
glTF ו‑GLB
glTF 2.0 הוא פורמט ההחלפה המומלץ לשימוש ברשת ובמנועי משחק. הספרייה משתמשת באותו GltfFormat מחלקה לשניהם .gltf (JSON + sidecar) ו .glb (בינארי, עצמאי) פלט. החלף ביניהם באמצעות GltfSaveOptions.binaryMode.
טען glTF או GLB:
import { Scene } from '@aspose/3d';
import { GltfLoadOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('model.gltf', new GltfLoadOptions());
// or
scene.open('model.glb'); // format detected from magic bytes
ייצא כ-JSON glTF (.gltf + .bin):
import { Scene } from '@aspose/3d';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('input.fbx');
const opts = new GltfSaveOptions();
opts.binaryMode = false; // produces output.gltf + output.bin
scene.save('output.gltf', GltfFormat.getInstance(), opts);ייצא כ-GLB בינארי (.glb):
import { Scene } from '@aspose/3d';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('input.obj');
const opts = new GltfSaveOptions();
opts.binaryMode = true; // single self-contained file
scene.save('output.glb', GltfFormat.getInstance(), opts);השתמש binaryMode = true למסירת נכסים בייצור. קובץ יחיד .glb נטען מהר יותר בדפדפנים ובמנועים מאשר הצמד של טקסט + בינארי המפוצל.
STL
STL הוא פורמט רשת משולשת המשמש ב‑CAD וב‑הדפסת תלת‑ממד. גם STL בינארי וגם STL ASCII נתמכים לקלט ולפלט. StlSaveOptions.binaryMode שולט האם הפלט הוא בינארי (קומפקטי) או ASCII (קריא לבני אדם).
import { Scene } from '@aspose/3d';
import { StlLoadOptions, StlSaveOptions } from '@aspose/3d/formats/stl';
const scene = new Scene();
scene.open('model.stl', new StlLoadOptions());
// Export as binary STL (default, compact)
const binaryOpts = new StlSaveOptions();
binaryOpts.binaryMode = true;
scene.save('output_binary.stl', binaryOpts);
// Export as ASCII STL (human-readable)
const asciiOpts = new StlSaveOptions();
asciiOpts.binaryMode = false;
scene.save('output_ascii.stl', asciiOpts);STL מאחסן רק גאומטריה משולשת ונורמות קודקוד. חומרים ונתוני UV אינם נשמרים ב‑STL.
3MF (3D Manufacturing Format)
3MF is an XML-based format designed for additive manufacturing. It supports color and material metadata alongside geometry. Use it when exchanging files with 3D printing slicers or manufacturing workflows.
import { Scene } from '@aspose/3d';
import { ThreeMfSaveOptions } from '@aspose/3d/formats/3mf';
const scene = new Scene();
scene.open('model.3mf');
// Re-export as 3MF
scene.save('output.3mf', new ThreeMfSaveOptions());3MF files are ZIP archives internally. The library handles archive creation and extraction automatically.
FBX
אזהרה: מחלקות מייבא ויצוא FBX (FbxImporter, FbxExporter) קיימות בספרייה, אך זיהוי אוטומטי של פורמט FBX הוא לא מחובר אל scene.open() או scene.save(). קריאה ל scene.open('file.fbx') לא תפעיל את מייבא ה‑FBX — הקובץ יעבור לפתרון הגיבוי של STL. קריאה ל scene.save('output.fbx', opts) לא יפעיל את ייצוא ה‑FBX. טבלת התמיכה בפורמטים למעלה מסמנת את ה‑FBX כ No* בגלל סיבה זו. השתמש ב‑GLB או COLLADA לייבוא וייצוא מלאים דרך scene.open() / scene.save().
COLLADA (DAE)
COLLADA הוא פורמט חילופי מבוסס XML הנתמך על ידי מגוון רחב של כלי DCC (Blender, Maya, Cinema 4D). הספרייה משתמשת ב xmldom תלות לניתוח XML; היא מותקנת אוטומטית עם npm install @aspose/3d.
import { Scene } from '@aspose/3d';
import { ColladaSaveOptions } from '@aspose/3d/formats/collada';
const scene = new Scene();
scene.open('model.dae');
// Re-export as COLLADA
const saveOpts = new ColladaSaveOptions();
scene.save('output.dae', saveOpts);קבצי COLLADA עשויים להכיל מטא-נתוני שינוי יחידות (<unit> אלמנט). הספרייה מבצעת המרת יחידות אוטומטית בעת הטעינה.
זיהוי אוטומטי של פורמט
כאשר טוענים ממסלול קובץ, הספרייה מנסה לזהות פורמט ממספרי קסם בינריים לפני שהיא חוזרת להרחבת הקובץ. משמעות הדבר היא שניתן לטעון קובץ GLB בשם .bin או קובץ STL בשם .model בלי לציין את הפורמט במפורש.
כאשר טוענים מ Buffer עם scene.openFromBuffer(), זיהוי מספר-קסם הוא המנגנון הראשי:
import { Scene } from '@aspose/3d';
import * as fs from 'fs';
const buffer = fs.readFileSync('model.glb');
const scene = new Scene();
scene.openFromBuffer(buffer); // format detected from magic bytes: 'glTF'
console.log(`Root has ${scene.rootNode.childNodes.length} child node(s)`);פורמטים עם מספרי קסם אמינים: GLB (glTF), STL בינארי (כותרת של 80 בתים + ספירת משולשים), 3MF (ZIP קסם PK). OBJ ו‑COLLADA הם מבוססי טקסט ומזוהים מהרחבת הקובץ או על ידי מחלקת האפשרויות שאתה מעביר.
טיפים
- OBJ תומך גם בייבוא וגם ביצוא: כאשר שומרים כ‑OBJ, ה
.mtlקובץ החומר נכתב אוטומטית לצד ה.objקובץ. - השתמש ב-GLB להעברה באינטרנט: הפורמט הבינארי העצמאי מונע בעיות CORS עם
.binsidecars ונטען מהר יותר במנועי רינדור WebGL. - העבר אפשרויות ספציפיות לפורמט: כללי
scene.open(path)עובד עבור רוב הפורמטים, אך העברת מחלקת אפשרויות הטעינה מאפשרת התנהגות ספציפית לפורמט כגון טעינת חומרים של OBJ או נרמול קואורדינטות של STL. xmldomנדרש עבור COLLADA: הוא מותקן אוטומטית. אל תוסיף אותו לpeerDependenciesאו לנסות להסירו; קורא ה‑COLLADA קורא לו ישירות.
בעיות נפוצות
| תסמין | סיבה אפשרית | תיקון |
|---|---|---|
| חומרי OBJ ריקים לאחר הטעינה | enableMaterials לא הוגדר | העבר ObjLoadOptions עם enableMaterials = true |
GLB מייצר a .bin sidecar | binaryMode מתקבל כברירת מחדל false | הגדר opts.binaryMode = true ב GltfSaveOptions |
scene.open() מזריק “unsupported format” | סיומת הקובץ אינה מזוהה | העבר את ההתאמה *LoadOptions class או השתמש openFromBuffer() |
| טעינת COLLADA נכשלה עם שגיאת XML | xmldom חסר או לא תואם | הפעל npm install @aspose/3d שוב; xmldom היא תלות ישירה |
| נורמליות STL אבדו בייצוא ASCII | ASCII STL משמיט נורמליות לכל משטח | השתמש binaryMode = true לפלט המשמר נורמליות |
ראה גם
- תכונות ופונקציונליות: גרף סצנה, רשת, חומרים, אנימציה, ו-API של מתמטיקה.
- גרף סצנה: בנייה וניווט בעץ הצמתים.
- איך לבנות 3D Mesh באופן תכנותי