Vykresľovanie scény a export
@aspose/3d je knižnica na spracovanie a konverziu a nevykonáva GPU renderovanie ani nevytvára obrazové súbory. „Rendering“ v kontexte tejto knižnice znamená exportovať scénu do formátu, ktorý môže spotrebovať následný renderér, herný engine alebo prehliadač.
Táto stránka pokrýva všetky cesty exportu: ukladanie do súboru, výstup do pamäťového bufferu, možnosti špecifické pre formáty a ako pripraviť scény pre bežné cieľové systémy (Three.js, Babylon.js, prehliadače modelov a herné enginy).
Základný export
Zavolať scene.save() s cestou k súboru. Knižnica odvodí výstupný formát z prípony súboru:
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 do GLB (odporúčané pre web a hry)
GLB (binárny glTF 2.0) je jeden samostatný súbor, ktorý obsahuje všetky dáta o meshoch, materiáloch a textúrach. Je odporúčaným výstupným formátom pre webové prehliadače (Three.js, Babylon.js, model-viewer) a herné enginy (Godot, Unity cez importér):
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');Nastaviť binaryMode = true na vytvorenie samostatného GLB súboru. Keď false, výstup je .gltf JSON súbor s oddeleným .bin bufferovým doplnkom.
Export do glTF (JSON formát pre kontrolu)
Variant JSON (.gltf + .bin) je užitočný počas vývoja, pretože JSON je čitateľný pre človeka:
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 do STL (pracovné postupy 3D tlače)
STL obsahuje iba geometriu (žiadne materiály, žiadna animácia). Je štandardným výmenným formátom pre slicery 3D tlače:
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);Nastaviť binaryMode = false na vytvorenie ASCII STL, ktorý je čitateľný ako text, ale je väčší.
Export do FBX (pracovné postupy DCC nástrojov)
Poznámka: Triedy importéra a exportéra FBX existujú v knižnici, ale automatické rozpoznávanie formátu FBX nie je prepojené do scene.open() alebo scene.save(). Volanie scene.save('output.fbx', opts) nevyvolá exportér FBX — .fbx rozšírenie nie je rozpoznané dispečerom ukladania a volanie sa vráti k výstupu OBJ. Použite FbxExporter triedu priamo, ak potrebujete FBX I/O. Tabuľka podpory formátov označuje FBX ako No* z tohto dôvodu.
Ak potrebujete exportovať do formátu akceptovaného programami Blender, Maya alebo Unreal Engine, použite namiesto toho GLB alebo COLLADA — oba sú plne integrované do 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);Export do pamäte s saveToBuffer()
Pre serverless funkcie, HTTP odpovede a streamingové pipeline, exportujte priamo do Buffer bez zápisu na disk:
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() prijíma reťazec formátu ako prvý argument (napr. 'glb', 'stl', 'obj') a rovnaké objekty možností ako save().
Kombinovanie openFromBuffer() a saveToBuffer()
Úplne pamäťová konverzná pipeline bez diskových I/O na žiadnej fáze:
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);
}Príprava scén pre konkrétne renderery
Three.js / Babylon.js (Web)
Tieto renderery natívne načítavajú GLB súbory. Exportujte s binaryMode = true. Ak sú textúry odkazované zo zdrojového OBJ, uistite sa, že .mtl a súbory obrázkov sú pri načítaní umiestnené spolu.
model-viewer (Web Component)
Akceptuje .glb priamo. Rovnaké nastavenia exportu ako v Three.js.
Godot Engine
Importujte GLB cez Godotov importér (Project → Import). Použite binaryMode = true. Godot natívne podporuje PBR materiály z glTF 2.0.
Blender
Pre najvyššiu vernosť importu použite glTF (output.gltf + output.bin) alebo GLB (output.glb). Importér glTF 2.0 v Blenderi spracováva PBR materiály a animáciu. Poznámka: výstup FBX cez scene.save() nie je podporovaný — automatické rozpoznávanie formátu FBX nie je zapojené do dispečera ukladania.
3D Printing (Slicers: Cura, PrusaSlicer, Bambu Studio)
Exportujte do STL alebo 3MF. Použite 3MF, keď potrebujete zachovať farbu alebo metadáta materiálu. Použite STL pre maximálnu kompatibilitu.
Porovnanie exportných formátov
| Formát | Rozšírenie | Materiály | Animácia | Jeden súbor | Najlepšie pre |
|---|---|---|---|---|---|
| GLB | .glb | PBR (glTF 2.0) | Áno | Áno | Web, hry, všeobecné doručenie |
| glTF | .gltf | PBR (glTF 2.0) | Áno | Nie (+ .bin) | Vývoj, kontrola |
| STL | .stl | Nie | Nie | Áno | 3D printing, geometry-only |
| FBX | .fbx | Phong/PBR | Nie* | Nie* | Importér/exportér existuje, ale nie je prepojený s automatickým rozpoznávaním |
| COLLADA | .dae | Áno | Áno | Áno | Cross-DCC výmena |
| 3MF | .3mf | Farba/materiál | Nie | Áno | Moderná 3D tlač |
Bežné problémy pri exporte
| Symptóm | Príčina | Oprava |
|---|---|---|
| Výstup GLB sa otvára ako JSON v prehliadači | binaryMode zostáva ako false | Nastaviť opts.binaryMode = true |
| Chýbajú textúry vo výstupnom GLB | binaryMode nenastavené | Nastaviť opts.binaryMode = true pre samostatný GLB |
| Súbor STL nemá farbu v sliceri | Formát STL nepodporuje farbu | Použite 3MF pre farebné dáta |
saveToBuffer vracia prázdny buffer | Argument formátového reťazca chýba alebo je nesprávny | Zadajte formátový reťazec, napr. 'glb', 'stl', alebo 'obj' |
| FBX sa otvorí bez animácie v Blenderi | Zdrojový súbor (OBJ/STL) nemá animáciu | Animácia sa prenesie len vtedy, ak je prítomná v zdroji |
| Výstupný súbor je veľmi veľký | Zdrojový OBJ má veľa duplicitných vrcholov | Binárny výstup GLB už odstraňuje duplikáty; skontrolujte kvalitu zdrojového assetu |
Pozri tiež
- Načítanie modelu: načítanie 3D súborov z disku a bufferov
- Scénový graf: building and modifying the scene before export
- Format Support: complete read/write matrix
- API Overview: všetky triedy a výčty