איך לשמור מודלים תלת‑ממדיים ב‑TypeScript

איך לשמור מודלים תלת‑ממדיים ב‑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`);

מטריצת תמיכה בפורמטים

הרחבהפורמטהערות
.glbglTF 2.0 Binaryמומלץ עבור glTF; כל המשאבים משובצים בקובץ יחיד
.gltfglTF 2.0 JSONנפרד .bin וקבצי מרקם לצד קובץ ה-JSON
.objWavefront OBJכותב .mtl קובץ חומר לצד .obj כאשר חומרים קיימים
.stlSTLברירת מחדל: STL בינארי; השתמש StlSaveOptions.ascii = true לטקסט
.fbxAutodesk FBXפורמט FBX בינארי
.3mf3D Manufacturingמתאים לתהליכי עבודה של הדפסת תלת‑ממד
.daeCOLLADAפורמט חילופי מבוסס 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(). הספרייה כותבת למאגר ולאחר מכן כותבת לדיסק.


ראה גם

 עברית