كيفية حفظ نماذج ثلاثية الأبعاد في TypeScript
Aspose.3D FOSS لـ 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: الحفظ إلى 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.
الخطوة 6: التحقق من الإخراج
بعد الحفظ، تحقق من وجود الملف وأن حجمه غير صفر:
import * as fs from 'fs';
const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);مصفوفة دعم الصيغ
| الامتداد | الصيغة | ملاحظات |
|---|---|---|
.glb | glTF 2.0 ثنائي | مُوصى به لـ 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 graph. يمكنك حفظ المشهد نفسه إلى صيغ متعددة دون أي آثار جانبية.
هل يمكنني استبدال ملف المصدر؟?
نعم. مرّر نفس المسار إلى scene.save() الذي استخدمته في scene.open(). تقوم المكتبة بالكتابة إلى مخزن مؤقت ثم تكتب إلى القرص.