Renderiranje scene i izvoz
@aspose/3d je biblioteka za obradu i konverziju te ne izvodi GPU renderiranje niti proizvodi slikovne datoteke. „Renderiranje“ u kontekstu ove biblioteke znači izvoz scene u format koji downstream renderera, game enginea ili preglednika može konzumirati.
Ova stranica pokriva sve puteve izvoza: spremanje u datoteku, izlaz u memorijski buffer, opcije specifične za format i kako pripremiti scene za uobičajene downstream ciljeve (Three.js, Babylon.js, preglednici modela i game engine).
Osnovni izvoz
Pozovite scene.save() s putanjom do datoteke. Biblioteka zaključuje izlazni format iz ekstenzije datoteke:
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
Izvoz u GLB (preporučeno za web i igre)
GLB (binarni glTF 2.0) je jedna samostalna datoteka koja u sebi sadrži sve podatke o mrežama, materijalima i teksturama. To je preporučeni izlazni format za web preglednike (Three.js, Babylon.js, model-viewer) i game engine (Godot, Unity putem importera):
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');Postavite binaryMode = true za stvaranje samostalne GLB datoteke. Kada false, izlaz je .gltf JSON datoteka s odvojenim .bin buffer sidecar.
Izvoz u glTF (JSON format za pregled)
JSON varijanta (.gltf + .bin) je korisna tijekom razvoja jer je JSON čitljiv za ljude:
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);Izvoz u STL (radni tokovi 3D ispisa)
STL sadrži samo geometriju (bez materijala, bez animacije). To je standardni format razmjene za 3D printer slicere:
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);Postavite binaryMode = false za stvaranje ASCII STL, koji je čitljiv kao tekst, ali veći.
Izvoz u FBX (radni tokovi DCC alata)
Napomena: U biblioteci postoje klase za uvoz i izvoz FBX-a, ali automatsko prepoznavanje FBX formata nije integrirano u scene.open() ili scene.save(). Pozivanje scene.save('output.fbx', opts) neće pokrenuti FBX izvoznik — to .fbx ekstenzija nije prepoznata od strane dispečera spremanja i poziv će se vratiti na OBJ izlaz. Upotrijebite FbxExporter klasu izravno ako trebate FBX I/O. Tablica podrške formata označava FBX kao No* iz tog razloga.
Ako trebate izvesti u format koji prihvaćaju Blender, Maya ili Unreal Engine, koristite GLB ili COLLADA umjesto — oba su potpuno integrirana u 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);Izvoz u memoriji s saveToBuffer()
Za serverless funkcije, HTTP odgovore i streaming cjevovode, izvezite izravno u Buffer bez zapisivanja 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() prima string formata kao prvi argument (npr. 'glb', 'stl', 'obj') i iste objekte opcija kao save().
Kombiniranje openFromBuffer() i saveToBuffer()
Potpuni konverzijski pipeline u memoriji bez ikakvog I/O na disku u bilo kojoj fazi:
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);
}Priprema scena za određene renderere
Three.js / Babylon.js (Web)
Ovi rendereri izvorno učitavaju GLB datoteke. Izvezite s binaryMode = true. Ako su teksture referencirane iz izvornog OBJ-a, osigurajte da .mtl i slikovne datoteke budu smještene zajedno prilikom učitavanja.
model-viewer (Web Component)
Prihvaća .glb izravno. Ista podešavanja izvoza kao kod Three.js.
Godot Engine
Uvezite GLB putem Godotovog uvoznika (Project → Import). Koristite binaryMode = true. Godot izvorno podržava PBR materijale iz glTF 2.0.
Blender
Za najbolju vjernost uvoza koristite glTF (output.gltf + output.bin) ili GLB (output.glb). Blenderov glTF 2.0 uvoznik obrađuje PBR materijale i animacije. Napomena: FBX izlaz putem scene.save() nije podržan — automatsko otkrivanje FBX formata nije povezano u save dispatcher.
3D Printing (Slicers: Cura, PrusaSlicer, Bambu Studio)
Izvezite u STL ili 3MF. Koristite 3MF kada trebate očuvati boju ili metapodatke o materijalu. Koristite STL za maksimalnu kompatibilnost.
Usporedba formata izvoza
| Format | Ekstenzija | Materijali | Animacija | Jedna datoteka | Najbolje za |
|---|---|---|---|---|---|
| GLB | .glb | PBR (glTF 2.0) | Da | Da | Web, igre, opća isporuka |
| glTF | .gltf | PBR (glTF 2.0) | Da | Ne (+ .bin) | Razvoj, inspekcija |
| STL | .stl | Ne | Ne | Da | 3D printing, geometry-only |
| FBX | .fbx | Phong/PBR | Ne* | Ne* | Uvoznik/izvoznik postoji, ali nije povezan s automatskim otkrivanjem |
| COLLADA | .dae | Da | Da | Da | Cross-DCC razmjena |
| 3MF | .3mf | Boja/materijal | Ne | Da | Moderni 3D ispis |
Uobičajeni problemi pri izvozu
| Simptom | Uzrok | Popravak |
|---|---|---|
| Izlazni GLB otvara se kao JSON u pregledniku | binaryMode ostavljeno kao false | Postavi opts.binaryMode = true |
| Teksture nedostaju u izlaznom GLB-u | binaryMode nije postavljeno | Postavi opts.binaryMode = true za samostalni GLB |
| STL datoteka nema boju u sliceru | STL format ne podržava boju | Koristite 3MF za podatke o boji |
saveToBuffer vraća prazan buffer | Argument formata stringa nedostaje ili je pogrešan | Proslijedite format string, npr. 'glb', 'stl', ili 'obj' |
| FBX se otvara bez animacije u Blenderu | Izvorna datoteka (OBJ/STL) nema animaciju | Animacija se prenosi samo ako je prisutna u izvoru |
| Izlazna datoteka je vrlo velika | Izvorni OBJ ima mnogo dupliciranih vrhova | GLB binarni izlaz već deduplicira; provjerite kvalitetu izvornog resursa |
Vidi također
- Učitavanje modela: učitavanje 3D datoteka s diska i iz buffera
- Graf scena: izgradnja i modificiranje scene prije izvoza
- Podrška za formate: potpuna matrica čitanja/pisanja
- Pregled API-ja: sve klase i enumeracije