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átum | Kiterjesztés | Anyagok | Animáció | Egyetlen fájl | Legjobb számára |
|---|---|---|---|---|---|
| GLB | .glb | PBR (glTF 2.0) | Igen | Igen | Web, játékok, általános terjesztés |
| glTF | .gltf | PBR (glTF 2.0) | Igen | Nem (+ .bin) | Fejlesztés, ellenőrzés |
| STL | .stl | Nem | Nem | Igen | 3D printing, geometry-only |
| FBX | .fbx | Phong/PBR | Nem* | Nem* | Az importáló/exportáló létezik, de nincs összekötve az automatikus felismeréssel |
| COLLADA | .dae | Igen | Igen | Igen | Cross-DCC csere |
| 3MF | .3mf | Szín/anyag | Nem | Igen | Modern 3D nyomtatás |
Gyakori exportálási problémák
| Tünet | Ok | Javítás |
|---|---|---|
| A kimeneti GLB JSON-ként nyílik meg a megjelenítőben | binaryMode marad false | Beállítás opts.binaryMode = true |
| A textúrák hiányoznak a kimeneti GLB-ben | binaryMode nincs beállítva | Beállítva opts.binaryMode = true önálló GLB-hez |
| Az STL fájl nem tartalmaz színt a szeletelőben | Az STL formátum nem támogatja a színt | Használjon 3MF-et a színadatokhoz |
saveToBuffer üres puffert ad vissza | A formátumkarakterlánc argumentuma hiányzik vagy hibás | Adja meg a formátumkarakterláncot, például. 'glb', 'stl', vagy 'obj' |
| Az FBX animáció nélkül nyílik meg a Blenderben | A forrásfájl (OBJ/STL) nem tartalmaz animációt | Az animáció csak akkor kerül át, ha a forrásban jelen van |
| A kimeneti fájl nagyon nagy | A forrás OBJ sok duplikált csúcsot tartalmaz | A GLB bináris kimenet már deduplikál; ellenőrizze a forráseszköz minőségét |
Lásd még
- Modell betöltése: 3D fájlok betöltése lemezről és pufferekből
- Jelenet gráf: a jelenet felépítése és módosítása exportálás előtt
- Formátumtámogatás: teljes olvasási/írási mátrix
- API áttekintés: összes osztály és felsorolás