رندر صحنه و خروجی

@aspose/3d یک کتابخانه پردازش و تبدیل است و رندرینگ با GPU انجام نمی‌دهد یا فایل‌های تصویری تولید نمی‌کند. «رندرینگ» در زمینه این کتابخانه به معنای صادر کردن یک صحنه به فرمتی که یک رندرر پایین‌دست، موتور بازی یا نمایشگر بتواند مصرف کند.

این صفحه تمام مسیرهای خروجی را پوشش می‌دهد: ذخیره‌سازی مبتنی بر فایل، خروجی به‌صورت بافر در حافظه، گزینه‌های مخصوص هر فرمت، و چگونگی آماده‌سازی صحنه‌ها برای هدف‌های رایج پایین‌دست (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 (binary 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 بافر sidecar.

خروجی به 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 کلاس به‌صورت مستقیم استفاده کنید اگر به I/O برای 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 بلندر مواد PBR و انیمیشن را مدیریت می‌کند. نکته: خروجی FBX از طریق scene.save() پشتیبانی نمی‌شود — تشخیص خودکار فرمت FBX در save dispatcher پیاده‌سازی نشده است.

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 در اسلایسر رنگی نداردفرمت STL از رنگ پشتیبانی نمی‌کندبرای داده‌های رنگی از 3MF استفاده کنید
saveToBuffer یک بافر خالی برمی‌گرداندآرگومان رشته قالب گم شده یا نادرست استرشته قالب را پاس دهید، به عنوان مثال. 'glb', 'stl', یا 'obj'
فایل FBX در بلندر بدون انیمیشن باز می‌شودفایل منبع (OBJ/STL) انیمیشنی نداردانیمیشن فقط در صورتی منتقل می‌شود که در منبع موجود باشد
فایل خروجی بسیار بزرگ استفایل OBJ منبع دارای رئوس تکراری زیادی استخروجی باینری GLB قبلاً تکراری‌ها را حذف می‌کند؛ کیفیت دارایی منبع را بررسی کنید

همچنین ببینید

 فارسی