תמיכת פורמטים תלת‑ממדיים

Aspose.3D FOSS עבור TypeScript קורא וכותב שבעה פורמטים עיקריים של קבצי 3D. זיהוי הפורמט הוא אוטומטי בעת הטעינה: הספרייה בודקת מספרי קסם בינריים כך שאין צורך לציין את פורמט המקור. מחלקות אפשרויות ספציפיות לפורמט מיובאות מתתי‑נתיבים של @aspose/3d חבילה.

פורמטים נתמכים

פורמטהרחבהקריאהכתיבהמחלקת פורמטהערות
Wavefront OBJ.objכןכןObjFormatקורא .mtl חומרים; כותב .mtl במקביל .obj
glTF 2.0.gltfכןכןGltfFormatJSON טקסט + .bin sidecar
GLB.glbכןכןGltfFormatBinary glTF; set binaryMode = true
STL.stlכןכןStlFormatמצבי Binary ו‑ASCII
3MF.3mfכןכןThreeMfFormat3D Manufacturing Format
FBX.fbxלא*לא*FbxFormatייבוא/ייצוא קיים אך זיהוי פורמט אוטומטי אינו מחובר; אינו ניתן לשימוש דרך scene.open()
COLLADA.daeכןכןColladaFormatדורש xmldom (מותקן אוטומטית)

OBJ (Wavefront)

OBJ תומך גם בייבוא וגם ביצוא ב @aspose/3d. כאשר שומרים כ‑OBJ, ספריית החומרים (.mtl) נכתב אוטומטית לצד .obj קובץ. השתמש ObjLoadOptions לשלוט בטעינת חומרים ובהתנהגות מערכת הקואורדינטות.

אפשרויות מפתח ל ObjLoadOptions:

אפשרותסוגברירת מחדלאפקט
enableMaterialsbooleantrueפענח את .mtl קובץ שמופנה על ידי mtllib
flipCoordinateSystembooleanfalseהפוך את צירי Y/Z כדי להתאים למערכות ימניות
scalenumber1.0קנה מידה אחיד המיושם על כל הקודקודים בטעינה
normalizeNormalbooleantrueנרמל נורמות קודקוד לאורך יחידה
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 עם .bin sidecars ונטען מהר יותר במנועי רינדור WebGL.
  • העבר אפשרויות ספציפיות לפורמט: כללי scene.open(path) עובד עבור רוב הפורמטים, אך העברת מחלקת אפשרויות הטעינה מאפשרת התנהגות ספציפית לפורמט כגון טעינת חומרים של OBJ או נרמול קואורדינטות של STL.
  • xmldom נדרש עבור COLLADA: הוא מותקן אוטומטית. אל תוסיף אותו ל peerDependencies או לנסות להסירו; קורא ה‑COLLADA קורא לו ישירות.

בעיות נפוצות

תסמיןסיבה אפשריתתיקון
חומרי OBJ ריקים לאחר הטעינהenableMaterials לא הוגדרהעבר ObjLoadOptions עם enableMaterials = true
GLB מייצר a .bin sidecarbinaryMode מתקבל כברירת מחדל falseהגדר opts.binaryMode = true ב GltfSaveOptions
scene.open() מזריק “unsupported format”סיומת הקובץ אינה מזוהההעבר את ההתאמה *LoadOptions class או השתמש openFromBuffer()
טעינת COLLADA נכשלה עם שגיאת XMLxmldom חסר או לא תואםהפעל npm install @aspose/3d שוב; xmldom היא תלות ישירה
נורמליות STL אבדו בייצוא ASCIIASCII STL משמיט נורמליות לכל משטחהשתמש binaryMode = true לפלט המשמר נורמליות

ראה גם

 עברית