كيفية حفظ نماذج 3D في TypeScript

كيفية حفظ نماذج 3D في 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: استخدم خيارات الحفظ الخاصة بالتنسيق

لتحكم دقيق، مرّر كائن خيارات مخصص للنسق:

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('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(). المكتبة تكتب إلى مخزن مؤقت ثم تكتب إلى القرص.


انظر أيضًا

 العربية