Scenrendering och export
@aspose/3d är ett bearbetnings- och konverteringsbibliotek, och det utför inte GPU-rendering eller producerar bildfiler. “Rendering” i detta biblioteks sammanhang betyder exportera en scen till ett format som en efterföljande renderare, spelmotor eller visare kan konsumera.
Denna sida täcker alla exportvägar: filbaserad sparning, minnesbuffertutmatning, format‑specifika alternativ och hur man förbereder scener för vanliga efterföljande mål (Three.js, Babylon.js, modellvisare och spelmotorer).
Grundläggande export
Anropa scene.save() med en filsökväg. Biblioteket härleder utdataformatet från filändelsen:
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 till GLB (rekommenderas för webb och spel)
GLB (binär glTF 2.0) är en enda självständig fil som inbäddar all mesh‑data, material och texturer. Det är det rekommenderade utdataformatet för webbvisare (Three.js, Babylon.js, model-viewer) och spelmotorer (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');Ställ in binaryMode = true för att producera en självständig GLB-fil. När false, är utdata en .gltf JSON-fil med en separat .bin buffer‑sidecar.
Export till glTF (JSON‑format för inspektion)
JSON‑varianten (.gltf + .bin) är användbar under utveckling eftersom JSON är människoläsbar:
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 till STL (3D‑utskriftsarbetsflöden)
STL är enbart geometri (inga material, ingen animation). Det är standardutbytesformatet för 3D‑utskrifts‑slicers:
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);Ställ in binaryMode = false för att producera ASCII STL, vilket är textläsbart men större.
Export till FBX (DCC‑verktygsarbetsflöden)
Obs: FBX‑import‑ och exportklasser finns i biblioteket, men automatisk detektering av FBX-format är inte integrerad i scene.open() eller scene.save(). Anropar scene.save('output.fbx', opts) kommer inte att anropa FBX-exportören — fil .fbx ändelsen känns inte igen av sparningshanteraren och anropet kommer att falla tillbaka till OBJ-utdata. Använd FbxExporter klassen direkt om du behöver FBX I/O. Formatstödtabellen markerar FBX som No* av den här anledningen.
Om du behöver exportera till ett format som accepteras av Blender, Maya eller Unreal Engine, använd GLB eller COLLADA istället — båda är fullt integrerade 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-export med saveToBuffer()
För serverlösa funktioner, HTTP-svar och streaming-pipelines, exportera direkt till en Buffer utan att skriva till 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 formatsträng som första argument (t.ex. 'glb', 'stl', 'obj') och samma options-objekt som save().
Kombinera openFromBuffer() och saveToBuffer()
En helt minnesbaserad konverteringspipeline utan någon disk‑I/O i något steg:
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);
}Förbereda scener för specifika renderare
Three.js / Babylon.js (Web)
Dessa renderare laddar GLB-filer nativt. Exportera med binaryMode = true. Om texturer refereras från käll-OBJ, se till att .mtl och bildfiler är samlokalerade vid inläsning.
model-viewer (Web Component)
Accepterar .glb direkt. Samma exportinställningar som Three.js.
Godot Engine
Importera GLB via Godots importör (Project → Import). Använd binaryMode = true. Godot stöder PBR-material från glTF 2.0 nativt.
Blender
För bästa importnoggrannhet använd glTF (output.gltf + output.bin) eller GLB (output.glb). Blenders glTF 2.0-importör hanterar PBR-material och animation. Obs: FBX-utdata via scene.save() stöds inte — FBX-formatets autodetektering är inte kopplad till spara‑distributören.
3D Printing (Slicers: Cura, PrusaSlicer, Bambu Studio)
Exportera till STL eller 3MF. Använd 3MF när du behöver färg eller materialmetadata bevarade. Använd STL för maximal kompatibilitet.
Jämförelse av exportformat
| Format | Filändelse | Material | Animation | En fil | Bäst för |
|---|---|---|---|---|---|
| GLB | .glb | PBR (glTF 2.0) | Ja | Ja | Webb, spel, allmän leverans |
| glTF | .gltf | PBR (glTF 2.0) | Ja | Nej (+ .bin) | Utveckling, inspektion |
| STL | .stl | Nej | Nej | Ja | 3D printing, geometry-only |
| FBX | .fbx | Phong/PBR | Nej* | Nej* | Importör/exportör finns men är inte ansluten till automatisk detektering |
| COLLADA | .dae | Ja | Ja | Ja | Cross-DCC-utbyte |
| 3MF | .3mf | Färg/material | Nej | Ja | Modern 3D-utskrift |
Vanliga exportproblem
| Symtom | Orsak | Åtgärd |
|---|---|---|
| Utdata GLB öppnas som JSON i visaren | binaryMode lämnad som false | Sätt opts.binaryMode = true |
| Texturer saknas i utdata-GLB | binaryMode inte inställt | Ställ in opts.binaryMode = true för självständig GLB |
| STL-fil har ingen färg i slicern | STL-format stöder inte färg | Använd 3MF för färgdata |
saveToBuffer returnerar tom buffer | Formatsträngsargument saknas eller är felaktigt | Skicka formatsträngen, t.ex. 'glb', 'stl', eller 'obj' |
| FBX öppnas utan animation i Blender | Källfilen (OBJ/STL) har ingen animation | Animationen överförs bara om den finns i källan |
| Utdatafilen är mycket stor | Käll-OBJ har många duplicerade vertexar | GLB-binärutdata deduplicerar redan; kontrollera kvaliteten på källtillgången |
Se även
- Modellinläsning: läser 3D-filer från disk och buffertar
- Scengraf: byggande och modifiering av scenen före export
- Formatstöd: komplett läs/skriv-matris
- API‑översikt: alla klasser och enumerationer