Renderovanje scene i izvoz
@aspose/3d je biblioteka za obradu i konverziju, i ne vrši GPU renderovanje niti proizvodi slikovne fajlove. „Rendering“ u kontekstu ove biblioteke znači izvoz scene u format koji downstream renderer, game engine ili viewer može da konzumira.
Ova stranica pokriva sve puteve izvoza: čuvanje u fajl, izlaz u memorijski bafer, opcije specifične za format i kako pripremiti scene za uobičajene downstream ciljeve (Three.js, Babylon.js, preglednike modela i game engine‑e).
Osnovni izvoz
Pozovite scene.save() sa putanjom do fajla. Biblioteka zaključuje izlazni format iz ekstenzije fajla:
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 jedan samostalni fajl koji 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‑e (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 da proizvede samostalni GLB fajl. Kada false, izlaz je .gltf JSON fajl sa odvojenim .bin buffer sidecar.
Izvoz u glTF (JSON format za inspekciju)
JSON varijanta (.gltf + .bin) je korisna tokom 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 štampe)
STL sadrži samo geometriju (bez materijala, bez animacije). To je standardni format za razmenu podataka za 3D štampu (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);Postavi binaryMode = false da proizvede 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 integrisano u scene.open() ili scene.save(). Pozivanje scene.save('output.fbx', opts) neće pozvati FBX izvoznik — the .fbx ekstenzija nije prepoznata od strane dispečera za čuvanje i poziv će se vratiti na OBJ izlaz. Koristite the FbxExporter klasu direktno ako vam je potreban FBX I/O. Tabela podrške formata označava FBX kao No* iz tog razloga.
Ako trebate izvesti u format koji prihvataju Blender, Maya ili Unreal Engine, koristite GLB ili COLLADA umesto — oba su potpuno integrisana 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 uz saveToBuffer()
Za serverless funkcije, HTTP odgovore i streaming pipeline‑ove, izvezite direktno u a Buffer bez pisanja 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() uzima format string kao prvi argument (npr. 'glb', 'stl', 'obj') i iste options objekte kao save().
Kombinovanje openFromBuffer() i saveToBuffer()
Potpuno in‑memory pipeline za konverziju 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 nativno učitavaju GLB fajlove. Izvezi pomoću binaryMode = true. Ako su teksture referencirane iz izvornog OBJ, osiguraj da .mtl i image fajlovi budu ko‑lokirani prilikom učitavanja.
model-viewer (Web Component)
Prihvata .glb direktno. Ista podešavanja izvoza kao i u Three.js.
Godot Engine
Uvezite GLB putem Godotovog uvoznika (Project → Import). Koristite binaryMode = true. Godot nativno podržava PBR materijale iz glTF 2.0.
Blender
Za najbolju vernost 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 prepoznavanje FBX formata nije povezano u dispatcher za čuvanje.
3D Printing (Slicers: Cura, PrusaSlicer, Bambu Studio)
Izvezite u STL ili 3MF. Koristite 3MF kada je potrebno sačuvati boju ili metapodatke o materijalu. Koristite STL za maksimalnu kompatibilnost.
Uporedba formata izvoza
| Format | Ekstenzija | Materijali | Animacija | Jedna datoteka | Najbolje za |
|---|---|---|---|---|---|
| GLB | .glb | PBR (glTF 2.0) | Da | Da | Web, igre, opšta 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 postoje, ali nisu povezani sa automatskim otkrivanjem |
| COLLADA | .dae | Da | Da | Da | Cross-DCC razmena |
| 3MF | .3mf | Boja/materijal | Ne | Da | Moderno 3D štampanje |
Uobičajeni problemi pri izvozu
| Simptom | Uzrok | Ispravi |
|---|---|---|
| Izlazni GLB se otvara kao JSON u pregledniku | binaryMode ostavljeno kao false | Postavi opts.binaryMode = true |
| Teksture nedostaju u izlaznom GLB | binaryMode nije postavljeno | Postavi opts.binaryMode = true za samostalni GLB |
| STL fajl nema boju u sliceru | STL format ne podržava boju | Koristite 3MF za podatke o boji |
saveToBuffer vraća prazan bafer | Argument format stringa nedostaje ili je pogrešan | Prosledite format string, npr. 'glb', 'stl', ili 'obj' |
| FBX se otvara bez animacije u Blenderu | Izvorni fajl (OBJ/STL) nema animaciju | Animacija se prenosi samo ako je prisutna u izvoru |
| Izlazni fajl je veoma velik | Izvorni OBJ ima mnogo duplih vrhova | GLB binarni izlaz već eliminiše duplikate; proverite kvalitet izvorne imovine |
Vidi takođe
- Učitavanje modela: učitavanje 3D fajlova sa diska i iz bafera
- Graf scene: gradnja i modifikacija scene pre izvoza
- Podrška za formate: kompletna matrica čitanja/pisanja
- Pregled API-ja: sve klase i enumeracije