איך לשמור מודלים תלת‑ממדיים ב‑TypeScript
Aspose.3D FOSS for TypeScript שומר סצנות לכל הפורמטים הנתמכים בקריאה אחת scene.save() קריאה. פורמט הפלט מזוהה אוטומטית מהרחבת הקובץ. מדריך זה מכסה שמירה לכל פורמט ושימוש באפשרויות ספציפיות לפורמט.
מדריך שלב‑אחר‑שלב
שלב 1: התקן @aspose/3d
npm install @aspose/3dשלב 2: טען או בנה סצנה
טען קובץ קיים או בנה סצנה תכנותית לפני השמירה.
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
// Load from file
const scene = new Scene();
scene.open('source.obj', new ObjLoadOptions());
// Or create a new empty scene
const emptyScene = new Scene();שלב 3: שמור עם פורמט שמזוהה אוטומטית
scene.save(path) מזהה את פורמט הפלט מהרחבת הקובץ:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
scene.open('input.obj', new ObjLoadOptions());
// Save as binary glTF
scene.save('output.glb');
// Save as JSON glTF
scene.save('output.gltf');
// Save as STL
scene.save('output.stl');
// Save as OBJ
scene.save('output.obj');
// Save as FBX
scene.save('output.fbx');
// Save as 3MF
scene.save('output.3mf');
// Save as COLLADA
scene.save('output.dae');שלב 4: השתמש ב‑SaveOptions ייחודיים לפורמט
לשליטה מדויקת, העבר אובייקט אפשרויות ייחודי לפורמט:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());
// Export to GLB with specific options
const saveOptions = new GltfSaveOptions();
saveOptions.binaryMode = true; // produce GLB (binary glTF)
scene.save('output.glb', saveOptions);שלב 5: שמור לבופר (בזיכרון)
השתמש ב scene.saveToBuffer() כדי לקבל את הפלט כ Buffer בלי לכתוב לדיסק:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());
const buffer = scene.saveToBuffer('output.glb');
console.log(`Buffer size: ${buffer.length} bytes`);
// Send via HTTP, upload to S3, etc.
שלב 6: אמת את הפלט
לאחר השמירה, אמת שהקובץ קיים ושגודלו אינו אפס:
import * as fs from 'fs';
const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);מטריצת תמיכה בפורמטים
| הרחבה | פורמט | הערות |
|---|---|---|
.glb | glTF 2.0 Binary | מומלץ עבור glTF; כל המשאבים משובצים בקובץ יחיד |
.gltf | glTF 2.0 JSON | נפרד .bin וקבצי מרקם לצד קובץ ה-JSON |
.obj | Wavefront OBJ | כותב .mtl קובץ חומר לצד .obj כאשר חומרים קיימים |
.stl | STL | ברירת מחדל: STL בינארי; השתמש StlSaveOptions.ascii = true לטקסט |
.fbx | Autodesk FBX | פורמט FBX בינארי |
.3mf | 3D Manufacturing | מתאים לתהליכי עבודה של הדפסת תלת‑ממד |
.dae | COLLADA | פורמט חילופי מבוסס XML |
בעיות נפוצות ותיקונים
Error: Unsupported format בעת שמירה
ודא שהרחבת הקובץ תואמת פורמט נתמך. הספרייה משתמשת בהרחבה כדי לזהות את הפורמט; קובץ בשם output.xyz ייכשל.
.obj הקובץ נשמר אך החומרים חסרים
בעת שמירת OBJ, ספריית החומרים (.mtl) נכתבת אוטומטית לצד ה .obj. שני הקבצים חייבים להיות באותו תיקייה בעת פתיחה מחדש. אם אתה צריך רק גאומטריה, הגדר ObjSaveOptions.enableMaterials = false.
גדול .gltf עם מרקמים נפרדים
השתמש .glb במקום .gltf; הוא אוסף נתונים בינריים לקובץ יחיד עצמאי. הגדר GltfSaveOptions.binaryMode = true כאשר מעבירים GltfSaveOptions מופע.
שאלות נפוצות
האם אפשר לשמור למספר פורמטים בריצה אחת?
כן; קרא scene.save() מספר פעמים עם נתיבים שונים:
scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');האם השמירה משנה את הסצנה?
לא. scene.save() היא פעולה לקריאה בלבד על גרף הסצנה. ניתן לשמור את אותה סצנה במספר פורמטים ללא תופעות לוואי.
האם אפשר לכתוב על קובץ המקור?
כן. העבר את אותו הנתיב ל scene.save() שאתה השתמשת ב scene.open(). הספרייה כותבת למאגר ולאחר מכן כותבת לדיסק.