Scene Rendering og eksport
@aspose/3d er et behandlings- og konverteringsbibliotek, og det utfører ikke GPU-rendering eller produserer bildefiler. “Rendering” i sammenheng med dette biblioteket betyr å eksportere en scene til et format som en etterfølgende renderer, spillmotor eller visningsprogram kan bruke.
Denne siden dekker alle eksportveier: filbasert lagring, minnebuffer‑utdata, formatspesifikke alternativer, og hvordan man forbereder scener for vanlige etterfølgende mål (Three.js, Babylon.js, modellvisere og spillmotorer).
Grunnleggende eksport
Kall scene.save() med en filsti. Biblioteket utleder utdataformatet fra filendelsen:
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
Eksport til GLB (anbefalt for nett og spill)
GLB (binær glTF 2.0) er en enkelt selvstendig fil som inneholder all mesh‑data, materialer og teksturer. Det er det anbefalte utdataformatet for nett‑visere (Three.js, Babylon.js, model-viewer) og spillmotorer (Godot, Unity via 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');Angi binaryMode = true for å produsere en selvstendig GLB-fil. Når false, er utdataene en .gltf JSON-fil med en separat .bin buffer-sidecar.
Eksport til glTF (JSON‑format for inspeksjon)
JSON-varianten (.gltf + .bin) er nyttig under utvikling fordi JSON er menneskelig lesbar:
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);Eksport til STL (3D‑utskriftsarbeidsflyter)
STL inneholder kun geometri (ingen materialer, ingen animasjon). Det er standardutvekslingsformatet for 3D‑utskrifts‑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);Angi binaryMode = false for å produsere ASCII STL, som er tekstlesbar men større.
Eksport til FBX (DCC‑verktøy‑arbeidsflyter)
Merk: FBX-import- og eksportklasser finnes i biblioteket, men automatisk gjenkjenning av FBX-format er ikke integrert i scene.open() eller scene.save(). Kaller scene.save('output.fbx', opts) vil ikke aktivere FBX-eksportøren — den .fbx utvidelsen er ikke gjenkjent av lagringsdistributøren og kallet vil falle tilbake til OBJ-utdata. Bruk FbxExporter klassen direkte hvis du trenger FBX I/O. Formatstøttabellen markerer FBX som No* av denne grunn.
Hvis du trenger å eksportere til et format som aksepteres av Blender, Maya eller Unreal Engine, bruk GLB eller COLLADA i stedet — begge er fullt integrert i 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);In-Memory-eksport med saveToBuffer()
For serverløse funksjoner, HTTP-responser og streaming‑pipelines, eksporter direkte til en Buffer uten å skrive til 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() tar en formatstreng som første argument (f.eks. 'glb', 'stl', 'obj') og de samme alternativobjektene som save().
Kombinere openFromBuffer() og saveToBuffer()
En fullstendig minnebasert konverterings‑pipeline uten disk‑I/O på noen fase:
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);
}Forberede scener for spesifikke renderere
Three.js / Babylon.js (Web)
Disse rendererne laster GLB-filer nativt. Eksporter med binaryMode = true. Hvis teksturer refereres fra kilde‑OBJ‑filen, sørg for at .mtl og bildefiler er plassert sammen ved lasting.
model-viewer (Web‑komponent)
Godtar .glb direkte. Samme eksportinnstillinger som Three.js.
Godot Engine
Importer GLB via Godots importør (Project → Import). Bruk binaryMode = true. Godot støtter PBR‑materialer fra glTF 2.0 nativt.
Blender
For best importnøyaktighet, bruk glTF (output.gltf + output.bin) eller GLB (output.glb). Blenders glTF 2.0-importør håndterer PBR-materialer og animasjon. Merk: FBX-utdata via scene.save() støttes ikke — FBX-formatets autodeteksjon er ikke koblet til lagringsdistributøren.
3D Printing (Slicers: Cura, PrusaSlicer, Bambu Studio)
Eksporter til STL eller 3MF. Bruk 3MF når du trenger farge‑ eller materialmetadata bevart. Bruk STL for maksimal kompatibilitet.
Sammenligning av eksportformater
| Format | Filtype | Materialer | Animasjon | Enkelt fil | Best egnet for |
|---|---|---|---|---|---|
| GLB | .glb | PBR (glTF 2.0) | Ja | Ja | Web, spill, generell levering |
| glTF | .gltf | PBR (glTF 2.0) | Ja | Nei (+ .bin) | Utvikling, inspeksjon |
| STL | .stl | Nei | Nei | Ja | 3D printing, geometry-only |
| FBX | .fbx | Phong/PBR | Nei* | Nei* | Importer/exporter finnes, men er ikke koblet til automatisk gjenkjenning |
| COLLADA | .dae | Ja | Ja | Ja | Cross-DCC-utveksling |
| 3MF | .3mf | Farge/materiale | Nei | Ja | Moderne 3D-utskrift |
Vanlige eksportproblemer
| Symptom | Årsak | Løsning |
|---|---|---|
| Output-GLB åpnes som JSON i viseren | binaryMode gjenstår som false | Sett opts.binaryMode = true |
| Teksturer mangler i utdata-GLB | binaryMode ikke satt | Angi opts.binaryMode = true for selvstendig GLB |
| STL-filen har ingen farge i sliceren | STL-format støtter ikke farge | Bruk 3MF for fargedata |
saveToBuffer returnerer tom buffer | Formatstreng-argument mangler eller er feil | Send inn formatstrengen, f.eks. 'glb', 'stl', eller 'obj' |
| FBX åpnes uten animasjon i Blender | Kildefilen (OBJ/STL) har ingen animasjon | Animasjon overføres kun hvis den er tilstede i kilden |
| Utdatafilen er veldig stor | Kilde‑OBJ har mange dupliserte vertices | GLB-binærutdata dedupliserer allerede; sjekk kvaliteten på kilde‑assetet |
Se også
- Modellinnlasting: laster 3D-filer fra disk og buffere
- Scene‑graf: bygge og endre scenen før eksport
- Formatstøtte: fullstendig lese/skriv-matrise
- API-oversikt: alle klasser og oppramsinger