רינדור סצנה וייצוא

רינדור סצנה וייצוא

@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 קובץ נלווה של buffer.

ייצוא ל-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 I/O. טבלת התמיכה בפורמט מסמנת את 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 Engine

ייבא 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
מרקמים חסרים בפלט GLBbinaryMode לא הוגדרהגדר opts.binaryMode = true ל‑GLB עצמאי
קובץ STL אינו מציג צבע במפרקפורמט STL אינו תומך בצבעהשתמש ב‑3MF עבור נתוני צבע
saveToBuffer מחזיר חוצץ ריקארגומנט מחרוזת הפורמט חסר או שגויהעבר את מחרוזת הפורמט, לדוגמה. 'glb', 'stl', או 'obj'
קובץ FBX נפתח ללא אנימציה ב‑Blenderקובץ המקור (OBJ/STL) אינו מכיל אנימציההאנימציה מועברת רק אם היא קיימת במקור
קובץ הפלט גדול מאודקובץ ה‑OBJ המקורי מכיל הרבה קודקודים משוכפליםפלט בינארי של GLB כבר מסיר כפילויות; בדוק את איכות הנכס המקורי

ראה גם

 עברית