إعادة إنتاج السينما وإيرادها

إعادة إنتاج السينما وإيرادها

@aspose/3d هي مكتبة معالجة وتحويل، ولا تقوم بعملية التصيير على وحدة معالجة الرسوميات أو إنتاج ملفات صور. “التصيير” في سياق هذه المكتبة يعني تصدير مشهد إلى تنسيق يمكن لمُصوّر لاحق أو محرك ألعاب أو عارض أن يستهلكه.

تغطي هذه الصفحة جميع مسارات التصدير: الحفظ إلى ملف، الإخراج إلى مخزن مؤقت في الذاكرة، الخيارات الخاصة بكل صيغة، وكيفية إعداد المشاهد للأهداف الشائعة التالية (Three.js، Babylon.js، عارضات النماذج، ومحركات الألعاب).

التصدير الأساسي

استدعاء scene.save() مع مسار ملف. المكتبة تستنتج تنسيق الإخراج من امتداد الملف:

import { Scene } from '@aspose/3d';

const scene = new Scene();
scene.open('input.obj');  // use a supported format (OBJ, glTF, GLB, STL, 3MF, COLLADA)

scene.save('output.glb');    // GLB (binary glTF)
scene.save('output.stl');    // STL
scene.save('output.dae');    // COLLADA
scene.save('output.3mf');    // 3MF

التصدير إلى GLB (مُوصى به للويب والألعاب)

GLB (glTF 2.0 ثنائي) هو ملف واحد مستقل يحتوي على جميع بيانات الشبكات، المواد، والملمس. وهو الصيغة الموصى بها للإخراج للعارضات على الويب (Three.js، Babylon.js، model-viewer) ومحركات الألعاب (Godot، Unity عبر المستورد):

import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';

const scene = new Scene();
scene.open('source.obj');

const opts = new GltfSaveOptions();
opts.binaryMode = true;    // produce .glb instead of .gltf + .bin

scene.save('output.glb', opts);
console.log('GLB export complete');

تعيين binaryMode = true لإنتاج ملف GLB مستقل. عندما false,، يكون الإخراج .gltf ملف JSON مع .bin ملف جانبي للذاكرة المؤقتة.

التصدير إلى glTF (صيغة JSON للفحص)

نسخة JSON (.gltf + .bin) مفيدة أثناء التطوير لأن JSON قابلة للقراءة من قبل البشر:

import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';

const scene = new Scene();
scene.open('input.dae');  // COLLADA is fully supported; FBX is not wired into scene.open()

const opts = new GltfSaveOptions();
opts.binaryMode = false;  // JSON + .bin sidecar

scene.save('output.gltf', opts);

التصدير إلى STL (سير عمل الطباعة ثلاثية الأبعاد)

STL يقتصر على الهندسة (بدون مواد، بدون تحريك). وهو صيغة التبادل القياسية لأدوات تقطيع الطباعة ثلاثية الأبعاد:

import { Scene } from '@aspose/3d';
import { StlSaveOptions } from '@aspose/3d/formats/stl';

const scene = new Scene();
scene.open('model.obj');

const opts = new StlSaveOptions();
opts.binaryMode = true;   // binary STL is more compact than ASCII

scene.save('output.stl', opts);

تعيين binaryMode = false لإنتاج ASCII STL، وهو قابل للقراءة كنص لكنه أكبر حجماً.

التصدير إلى FBX (سير عمل أدوات DCC)

ملاحظة: توجد فئات مستورد ومصدّر FBX في المكتبة، لكن الكشف التلقائي عن تنسيق FBX غير مدمج في scene.open() أو scene.save(). استدعاء scene.save('output.fbx', opts) لن يستدعي مُصدّر FBX — الـ .fbx الامتداد غير معترف به من قبل موزّع الحفظ وستعود المكالمة إلى إخراج OBJ. استخدم الـ FbxExporter الفئة مباشرةً إذا كنت بحاجة إلى إدخال/إخراج FBX. جدول دعم الصيغ يضع FBX كـ No* لهذا السبب.

إذا كنت بحاجة إلى تصدير إلى صيغة مقبولة من قبل Blender أو Maya أو Unreal Engine، استخدم GLB أو COLLADA بدلاً من ذلك — كلاهما مدمجان بالكامل في scene.save():

import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';

const scene = new Scene();
scene.open('input.dae');

// GLB is fully supported and widely accepted by DCC tools
const opts = new GltfSaveOptions();
opts.binaryMode = true;
scene.save('output.glb', opts);

التصدير في الذاكرة مع saveToBuffer()

للوظائف بدون خادم، استجابات HTTP، وأنابيب البث، صدّر مباشرةً إلى Buffer دون الكتابة إلى القرص:

import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';

function convertToGlbBuffer(inputPath: string): Buffer {
    const scene = new Scene();
    scene.open(inputPath);

    const opts = new GltfSaveOptions();
    opts.binaryMode = true;

    return scene.saveToBuffer('glb', opts);
}

// Express.js / HTTP response example
// const glbBuffer = convertToGlbBuffer('model.obj');
// res.setHeader('Content-Type', 'model/gltf-binary');
// res.send(glbBuffer);

saveToBuffer() يأخذ سلسلة تنسيق كوسيط أول (مثال:. 'glb', 'stl', 'obj') و نفس كائنات الخيارات كـ save().

دمج openFromBuffer() و saveToBuffer()

خط أنابيب تحويل كامل في الذاكرة دون أي عمليات إدخال/إخراج للقرص في أي مرحلة:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';

function objBufferToGlbBuffer(objData: Buffer): Buffer {
    const scene = new Scene();

    const loadOpts = new ObjLoadOptions();
    loadOpts.enableMaterials = true;
    scene.openFromBuffer(objData, loadOpts);

    const saveOpts = new GltfSaveOptions();
    saveOpts.binaryMode = true;

    return scene.saveToBuffer('glb', saveOpts);
}

تحضير المشاهد لمحركات العرض المحددة

Three.js / Babylon.js (ويب)

هذه العارضات تقوم بتحميل ملفات GLB أصلاً. صدّر باستخدام binaryMode = true. إذا تم الإشارة إلى القوام من ملف OBJ المصدر، تأكد من .mtl وأن ملفات الصورة موجودة في نفس الموقع عند التحميل.

model-viewer (مكوّن ويب)

يقبل .glb مباشرةً. نفس إعدادات التصدير كما في Three.js.

محرك Godot

استيراد GLB عبر مستورد Godot (Project → Import). استخدم binaryMode = true. يدعم Godot مواد PBR من glTF 2.0 بشكل أصلي.

Blender

لتحقيق أعلى دقة استيراد استخدم glTF (output.gltf + output.bin) أو GLB (output.glb). يتعامل مستورد glTF 2.0 في Blender مع مواد PBR والرسوم المتحركة. ملاحظة: إخراج FBX عبر scene.save() غير مدعوم — الكشف التلقائي عن تنسيق FBX غير مدمج في موزع الحفظ.

3D Printing (Slicers: Cura, PrusaSlicer, Bambu Studio)

صدّر إلى STL أو 3MF. استخدم 3MF عندما تحتاج إلى الحفاظ على اللون أو بيانات تعريف المادة. استخدم STL لأقصى توافق.

مقارنة صيغ التصدير

تنسيقامتدادموادالرسوم المتحركةملف واحدالأفضل لـ
GLB.glbPBR (glTF 2.0)نعمنعمالويب، الألعاب، التسليم العام
glTF.gltfPBR (glTF 2.0)نعملا (+ .bin)التطوير، الفحص
STL.stlلالانعم3D printing, geometry-only
FBX.fbxPhong/PBRلا*لا*المستورد/المصدر موجودان لكن غير موصولين بالكشف التلقائي
COLLADA.daeنعمنعمنعمتبادل Cross-DCC
3MF.3mfاللون/المادةلانعمالطباعة ثلاثية الأبعاد الحديثة

مشكلات التصدير الشائعة

عرضسببإصلاح
يفتح GLB الناتج كـ JSON في العارضbinaryMode متروك كـ falseتعيين opts.binaryMode = true
الملمس مفقود في GLB الناتجbinaryMode غير مُعيّنتعيين opts.binaryMode = true لـ GLB ذاتي الاحتواء
ملف STL لا يحتوي على لون في slicerتنسيق STL لا يدعم اللوناستخدم 3MF لبيانات اللون
saveToBuffer يعيد مخزنًا مؤقتًا فارغًامعامل سلسلة التنسيق مفقود أو غير صحيحمرّر سلسلة التنسيق، على سبيل المثال. 'glb', 'stl', أو 'obj'
يفتح FBX بدون حركة في Blenderملف المصدر (OBJ/STL) لا يحتوي على أي حركةتستمر الرسوم المتحركة فقط إذا كانت موجودة في المصدر
ملف الإخراج كبير جدًاملف OBJ المصدر يحتوي على العديد من الرؤوس المكررةالإخراج الثنائي GLB يزيل التكرارات بالفعل؛ تحقق من جودة الأصل المصدر

انظر أيضًا

 العربية