كيفية تحويل النماذج 3D إلى TypeScript
Aspose.3D FOSS for TypeScript يتحول بين تنسيقات 3D عن طريق تحميلها إلى محايد Scene تمثيل وتوفير إلى تنسيق الهدف.هذا الدليل يظهر التحويلات الأكثر شيوعا.
خطوة بخطوة دليل
الخطوة 1: تثبيت @aspose/3d
asposefoss/3d is not yet published — build from source until it ships. See the project README for build instructions.
الخطوة 2: تحميل ملف المصدر
خلق أ Scene و اتصلت scene.open().استخدام النموذج المحدد *LoadOptions الدرجة من أجل أفضل النتائج.
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
const opts = new ObjLoadOptions();
opts.enableMaterials = true;
scene.open('model.obj', opts);الخطوة الثالثة: حفظ إلى تنسيق الهدف
مكالمة scene.save() مع مسار الإخراج يتم الكشف عن تنسيق الإيرادات من ملحق الملف.
// OBJ → glTF binary (GLB)
scene.save('output.glb');
// OBJ → STL
scene.save('output.stl');
// OBJ → COLLADA
scene.save('output.dae');ملاحظة : FBX هو غير مدعوم بواسطة
scene.save()التفكير الذاتي - The.fbxلا يمكن توصيل التمديد إلى أي مستورد - تخزين.fbxيكتب بصمت محتوى تنسيق OBJ بدلاً من ذلك.استخدم OBj، glTF، STL، 3MF أو COLLADA لإنتاج موثوق به.
الخطوة 4: أمثلة مشتركة على التحويلات
OBJ إلى GLTF / GLB
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());
scene.save('model.glb');
console.log('Converted OBJ → GLB');FBX - غير مدعوم
لا يتم توصيل FBX Auto-detection في
scene.open(). وَأَنَّا.fbxالملفات التي تم نقلها إلىscene.open()لا يُعرف بأي جهاز اكتشاف النموذج ويقع عبر المقطع STL، والذي سيفشل أو ينتج القمامة. FBX المستورد/المتصدق الفصول موجودة في المكتبة ولكنها تتطلب الاستدعاء المباشر بدلاً من مستوى عالopen()/save()استخدام COLLADA أو OBJ أو glTF كبديل FBX.
GSTF إلى STL
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('model.glb');
scene.save('model.stl');
console.log('Converted GLB → STL');كولادا إلى 3MF
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('model.dae');
scene.save('model.3mf');
console.log('Converted COLLADA → 3MF');الخطوة 5: تحويل الملفات المتعددة
import * as fs from 'fs';
import * as path from 'path';
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const inputDir = './input';
const outputDir = './output';
fs.mkdirSync(outputDir, { recursive: true });
const objFiles = fs.readdirSync(inputDir).filter(f => f.endsWith('.obj'));
for (const file of objFiles) {
const inputPath = path.join(inputDir, file);
const outputFile = file.replace('.obj', '.glb');
const outputPath = path.join(outputDir, outputFile);
const scene = new Scene();
scene.open(inputPath, new ObjLoadOptions());
scene.save(outputPath);
console.log(`Converted ${file} → ${outputFile}`);
}المصفوفة المطاطية المضغوطة
| من \ إلى | GLTF / GLB | OBJ | STL | FBX | 3MF | COLLADA |
|---|---|---|---|---|---|---|
| OBJ | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| GLTF / GLB | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| FBX | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| STL | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| 3MF | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| COLLADA | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
FBX لا يُدعم من خلال المستوى العالي. open()/save() API - لا يتم توصيل النموذج إلى الكشف الذاتي. جميع الخلايا FBX أعلاه هي .
مشكلات و تصحيحات مشتركة
المواد التي تضيع بعد التحويل
المواد (usemtl, .mtl يتم تحميلها عند ObjLoadOptions.enableMaterials = true.عند توفير إلى glTF ، يتم خرائط خصائص مواد PBR تلقائيًا.المواد المعقدة (الإجراءات والطبقات المتعددة) يمكن تحويلها مع انخفاض الولاء.
يبدو أن الماسكيت غير صحيح
تنسيقات مختلفة تستخدم وحدات افتراضية مختلفة (ملييمتر لـ STL، متر ل glTF). ObjLoadOptions.scale عند تحميل أو StlSaveOptions.scale عند توفير لتطبيع الوحدات.
نظام المنسق غير متوافق (النموذج المتحرك أو الدوران)
بعض النماذج تستخدم اليد اليمنى Y-up، والبعض الآخر Z-Up. ObjLoadOptions.flipCoordinateSystem = true أو تطبيق عجلة على عقدة الجذر بعد الشحن.
الأسئلة المتكررة
هل تحافظ التحويلات على الرسوم المتحركة؟?
يتم الحفاظ على بيانات الرسوم المتحركة عند التحويل بين التنسيقات التي تدعمها (على سبيل المثال، COLLADA → glTF). STL و OBJ لا تحمل بياناتها الرسالة. scene.open()/scene.save(),لذلك ، لا توجد مسارات FBX للرسوم المتحركة عبر API عالية المستوى.
هل يتم الحفاظ على بيانات النصوص؟?
يتم نقل النسيج المذكور بمواد OBJ أو مدمجة في glTF إلى الرسم البياني للمشهد.binaryMode = true) ، يتم إدراج البوفر الثنائي في ملف واحد.لإخراج OBJ ، تم حفظ النسيج كملفات منفصلة إلى جانب الملفات .obj.
هل يمكنني تحويل العديد من الملفات بالتوازي؟?
scene.open() و scene.save() إستخدام Node.js worker_threads معالجة متوازية.