Jelenet renderelése és exportálása

Jelenet renderelése és exportálása

@aspose/3d egy feldolgozó és konvertáló könyvtár, és nem végez GPU renderelést vagy képfájlok előállítását. A „renderelés” e könyvtár kontextusában azt jelenti, egy jelenet exportálása egy olyan formátumba, amelyet egy downstream renderelő, játékmotor vagy megjelenítő képes felhasználni.

Ez az oldal lefedi az összes exportálási útvonalat: fájl alapú mentés, memóriában lévő puffer kimenet, formátum-specifikus beállítások, valamint azt, hogyan készítsünk elő jeleneteket a gyakori downstream célokra (Three.js, Babylon.js, modellnézők és játékmotorok).

Alapvető export

Hívja scene.save() egy fájlúttal. A könyvtár a kimeneti formátumot a fájlkiterjesztésből következteti:

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

Exportálás GLB-be (Webhez és játékokhoz ajánlott)

A GLB (bináris glTF 2.0) egy önálló, egyetlen fájl, amely beágyazza az összes háló adatot, anyagot és textúrát. Ez a webes megjelenítők (Three.js, Babylon.js, model-viewer) és a játékmotorok (Godot, Unity importálóval) számára ajánlott kimeneti formátum:

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');

Állítsa be binaryMode = true hogy önálló GLB fájlt állítson elő. Amikor false, a kimenet egy .gltf JSON fájl, amelyhez különálló .bin buffer mellékfájl tartozik.

Exportálás glTF-be (JSON formátum ellenőrzéshez)

A JSON változat (.gltf + .bin) hasznos fejlesztés közben, mivel a JSON ember által olvasható:

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);

Exportálás STL-be (3D nyomtatási munkafolyamatok)

Az STL csak geometriát tartalmaz (nincs anyag, nincs animáció). Ez a szabványos csereformátum a 3D nyomtatási szeletelők számára:

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);

Állítsa be binaryMode = false hogy ASCII STL-t állítson elő, amely szövegesen olvasható, de nagyobb.

Exportálás FBX-be (DCC eszköz munkafolyamatok)

Megjegyzés: A könyvtárban léteznek FBX importáló és exportáló osztályok, de az FBX formátum automatikus felismerése nincs beépítve a scene.open() vagy scene.save(). Hívás scene.save('output.fbx', opts) nem fogja meghívni az FBX exportálót — a .fbx kiterjesztés nem kerül felismerésre a mentési diszpécser által, és a hívás visszaesik az OBJ kimenetre. Használja a FbxExporter osztályt közvetlenül, ha FBX I/O-ra van szüksége. A formátumtámogatási táblázat az FBX-et jelöli No* ebből az okból.

Ha olyan formátumba kell exportálnod, amelyet a Blender, a Maya vagy az Unreal Engine elfogad, használj GLB-t vagy COLLADA-t helyette — mindkettő teljesen integrálva van a 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);

Memóriában történő exportálás a saveToBuffer()

Szerver nélküli függvényekhez, HTTP válaszokhoz és streaming csővezetékekhez exportálj közvetlenül egy Buffer lemezre írás nélkül:

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() első argumentumként egy formátumkarakterláncot vár (például. 'glb', 'stl', 'obj') és ugyanazokat az opcióobjektumokat, mint save().

Kombinálás openFromBuffer() és saveToBuffer()

Egy teljesen memóriában zajló konverziós csővezeték, amelynek egyetlen szakaszában sem történik lemez I/O:

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);
}

Jelenetek előkészítése adott rendererekhez

Three.js / Babylon.js (Web)

Ezek a renderelők natívan betöltik a GLB fájlokat. Exportálj a binaryMode = true. Ha a textúrák a forrás OBJ-ből vannak hivatkozva, győződj meg róla, hogy a .mtl és a képfájlok egy helyen legyenek a betöltéskor.

model-viewer (Web Component)

Elfogadja .glb közvetlenül. Ugyanazok az exportbeállítások, mint a Three.js-nél.

Godot Engine

Importáld a GLB-t a Godot importálóval (Project → Import). Használd binaryMode = true. A Godot natívan támogatja a glTF 2.0‑ból származó PBR anyagokat.

Blender

A legjobb import pontosság érdekében használja a glTF-t (output.gltf + output.bin) vagy a GLB-t (output.glb). A Blender glTF 2.0 importálója kezeli a PBR anyagokat és az animációt. Megjegyzés: FBX kimenet a scene.save() nem támogatott — az FBX formátum automatikus felismerése nincs beépítve a mentés diszpécserébe.

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

Exportálj STL vagy 3MF formátumba. Használd a 3MF-et, ha színt vagy anyag metaadatokat kell megőrizni. Használd az STL-t a legnagyobb kompatibilitás érdekében.

Export formátum összehasonlítás

FormátumKiterjesztésAnyagokAnimációEgyetlen fájlLegjobb számára
GLB.glbPBR (glTF 2.0)IgenIgenWeb, játékok, általános terjesztés
glTF.gltfPBR (glTF 2.0)IgenNem (+ .bin)Fejlesztés, ellenőrzés
STL.stlNemNemIgen3D printing, geometry-only
FBX.fbxPhong/PBRNem*Nem*Az importáló/exportáló létezik, de nincs összekötve az automatikus felismeréssel
COLLADA.daeIgenIgenIgenCross-DCC csere
3MF.3mfSzín/anyagNemIgenModern 3D nyomtatás

Gyakori exportálási problémák

TünetOkJavítás
A kimeneti GLB JSON-ként nyílik meg a megjelenítőbenbinaryMode marad falseBeállítás opts.binaryMode = true
A textúrák hiányoznak a kimeneti GLB-benbinaryMode nincs beállítvaBeállítva opts.binaryMode = true önálló GLB-hez
Az STL fájl nem tartalmaz színt a szeletelőbenAz STL formátum nem támogatja a színtHasználjon 3MF-et a színadatokhoz
saveToBuffer üres puffert ad visszaA formátumkarakterlánc argumentuma hiányzik vagy hibásAdja meg a formátumkarakterláncot, például. 'glb', 'stl', vagy 'obj'
Az FBX animáció nélkül nyílik meg a BlenderbenA forrásfájl (OBJ/STL) nem tartalmaz animációtAz animáció csak akkor kerül át, ha a forrásban jelen van
A kimeneti fájl nagyon nagyA forrás OBJ sok duplikált csúcsot tartalmazA GLB bináris kimenet már deduplikál; ellenőrizze a forráseszköz minőségét

Lásd még

 Magyar