Scène Rendering en Export
@aspose/3d is een verwerkings- en conversiebibliotheek, en voert geen GPU-rendering uit of produceert geen afbeeldingsbestanden. “Rendering” in de context van deze bibliotheek betekent een scène exporteren naar een formaat dat een downstream-renderer, game‑engine of viewer kan gebruiken.
Deze pagina behandelt alle exportpaden: bestandsgebaseerd opslaan, in‑memory bufferuitvoer, formaat‑specifieke opties, en hoe scènes voor te bereiden op veelvoorkomende downstream‑doelen (Three.js, Babylon.js, modelviewers en game‑engines).
Basisexport
Aanroep scene.save() met een bestandspad. De bibliotheek leidt het uitvoerformaat af van de bestandsextensie:
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
Exporteren naar GLB (Aanbevolen voor web en games)
GLB (binaire glTF 2.0) is één enkel zelfstandig bestand dat alle mesh‑data, materialen en textures bevat. Het is het aanbevolen uitvoerformaat voor web‑viewers (Three.js, Babylon.js, model-viewer) en game‑engines (Godot, Unity via importeur):
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');Instellen binaryMode = true om een zelfvoorzienend GLB‑bestand te produceren. Wanneer false, is de output een .gltf JSON‑bestand met een aparte .bin buffer‑sidecar.
Exporteren naar glTF (JSON‑formaat voor inspectie)
De JSON‑variant (.gltf + .bin) is handig tijdens ontwikkeling omdat de JSON menselijk leesbaar is:
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);Exporteren naar STL (3D‑printworkflows)
STL bevat alleen geometrie (geen materialen, geen animatie). Het is het standaard uitwisselingsformaat voor 3D‑print 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);Instellen binaryMode = false om ASCII STL te produceren, wat tekst‑leesbaar is maar groter.
Exporteren naar FBX (DCC‑toolworkflows)
Opmerking: FBX‑import‑ en exportklassen bestaan in de bibliotheek, maar automatische detectie van FBX‑formaat is niet geïntegreerd in scene.open() of scene.save(). Aanroepen scene.save('output.fbx', opts) zal de FBX-exporteur niet aanroepen — de .fbx extensie wordt niet herkend door de opslaan-dispatcher en de oproep valt terug op OBJ-uitvoer. Gebruik de FbxExporter klasse direct als je FBX I/O nodig hebt. De formatondersteuningstabel markeert FBX als No* om die reden.
Als je moet exporteren naar een formaat dat door Blender, Maya of Unreal Engine wordt geaccepteerd, gebruik dan GLB of COLLADA — beide zijn volledig geïntegreerd in 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 met saveToBuffer()
Voor serverless-functies, HTTP-responses en streaming-pijplijnen, exporteer direct naar een Buffer zonder naar schijf te schrijven:
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() neemt een formatstring als eerste argument (bijv. 'glb', 'stl', 'obj') en dezelfde optiesobjecten als save().
Combineren openFromBuffer() en saveToBuffer()
Een volledig in‑memory conversiepijplijn zonder schijf‑I/O op enig stadium:
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);
}Scènes voorbereiden voor specifieke renderers
Three.js / Babylon.js (Web)
Deze renderers laden GLB-bestanden native. Exporteren met binaryMode = true. Als texturen worden verwezen vanuit de bron-OBJ, zorg dan dat de .mtl en afbeeldingsbestanden samen worden geplaatst bij het laden.
model-viewer (Web Component)
Accepteert .glb direct. Dezelfde exportinstellingen als Three.js.
Godot Engine
Importeer GLB via de Godot-importeur (Project → Import). Gebruik binaryMode = true. Godot ondersteunt PBR-materialen van glTF 2.0 native.
Blender
Voor de beste importnauwkeurigheid gebruik glTF (output.gltf + output.bin) of GLB (output.glb). Blender’s glTF 2.0-importeur verwerkt PBR-materialen en animatie. Opmerking: FBX-uitvoer via scene.save() wordt niet ondersteund — FBX-formaat automatische detectie is niet gekoppeld aan de save dispatcher.
3D Printing (Slicers: Cura, PrusaSlicer, Bambu Studio)
Exporteer naar STL of 3MF. Gebruik 3MF wanneer je kleur of materiaalmetadata wilt behouden. Gebruik STL voor maximale compatibiliteit.
Vergelijking van exportformaten
| Formaat | Extensie | Materialen | Animatie | Enkel bestand | Beste voor |
|---|---|---|---|---|---|
| GLB | .glb | PBR (glTF 2.0) | Ja | Ja | Web, games, algemene levering |
| glTF | .gltf | PBR (glTF 2.0) | Ja | Nee (+ .bin) | Ontwikkeling, inspectie |
| STL | .stl | Nee | Nee | Ja | 3D printing, geometry-only |
| FBX | .fbx | Phong/PBR | Nee* | Nee* | Importer/exporter bestaat maar is niet gekoppeld aan automatische detectie |
| COLLADA | .dae | Ja | Ja | Ja | Cross-DCC-uitwisseling |
| 3MF | .3mf | Kleur/materiaal | Nee | Ja | Moderne 3D-printing |
Algemene exportproblemen
| Symptoom | Oorzaak | Oplossing |
|---|---|---|
| Uitvoer GLB wordt geopend als JSON in de viewer | binaryMode gelaten als false | Instellen opts.binaryMode = true |
| Texturen ontbreken in uitvoer-GLB | binaryMode niet ingesteld | Instellen opts.binaryMode = true voor een zelfvoorzienende GLB |
| STL-bestand heeft geen kleur in slicer | STL-formaat ondersteunt geen kleur | Gebruik 3MF voor kleurgegevens |
saveToBuffer geeft lege buffer terug | Formaattekenreeksargument ontbreekt of is onjuist | Geef de formaattekenreeks door, bijv. 'glb', 'stl', of 'obj' |
| FBX opent zonder animatie in Blender | Bronbestand (OBJ/STL) heeft geen animatie | Animatie wordt alleen doorgegeven als deze in de bron aanwezig is |
| Uitvoerbestand is erg groot | Bron-OBJ heeft veel dubbele vertices | GLB-binaire uitvoer dedupliceert al; controleer de kwaliteit van de bronasset |
Zie ook
- Model laden: 3D-bestanden laden van schijf en buffers
- Scènegraph: het bouwen en aanpassen van de scene vóór export
- Formaatondersteuning: volledige lees-/schrijfmatrix
- API-overzicht: alle klassen en enumeraties