نحوه ذخیره مدلهای سهبعدی در TypeScript
Aspose.3D FOSS برای TypeScript صحنهها را به تمام فرمتهای پشتیبانیشده با یک scene.save() فراخوانی ذخیره میکند. فرمت خروجی بهصورت خودکار از پسوند فایل تشخیص داده میشود. این راهنما ذخیرهسازی به هر فرمت و استفاده از گزینههای مخصوص هر فرمت را پوشش میدهد.
راهنمای گام به گام
گام ۱: نصب @aspose/3d
npm install @aspose/3dمرحله ۲: بارگذاری یا ساخت یک صحنه
یا یک فایل موجود را بارگذاری کنید یا قبل از ذخیرهسازی صحنهای را بهصورت برنامهنویسی بسازید.
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();مرحله ۳: ذخیره با فرمت تشخیصدادهشده خودکار
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');مرحله ۴: استفاده از 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);مرحله ۵: ذخیره به یک Buffer (در حافظه)
از 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.
مرحله ۶: تأیید خروجی
پس از ذخیرهسازی، وجود فایل و داشتن اندازهای غیر صفر را تأیید کنید:
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(). کتابخانه به یک بافر مینویسد و سپس به دیسک مینویسد.