نحوه ذخیره مدل‌های سه‌بعدی در TypeScript

نحوه ذخیره مدل‌های سه‌بعدی در 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`);

ماتریس پشتیبانی فرمت‌ها

پسوندقالبیادداشت‌ها
.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(). کتابخانه به یک بافر می‌نویسد و سپس به دیسک می‌نویسد.


موارد مرتبط

 فارسی