كيفية حفظ نماذج ثلاثية الأبعاد في TypeScript

كيفية حفظ نماذج ثلاثية الأبعاد في 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`);

مصفوفة دعم الصيغ

الامتدادالصيغةملاحظات
.glbglTF 2.0 ثنائيمُوصى به لـ 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 graph. يمكنك حفظ المشهد نفسه إلى صيغ متعددة دون أي آثار جانبية.

هل يمكنني استبدال ملف المصدر؟?

نعم. مرّر نفس المسار إلى scene.save() الذي استخدمته في scene.open(). تقوم المكتبة بالكتابة إلى مخزن مؤقت ثم تكتب إلى القرص.


انظر أيضًا

 العربية