Szenen-Rendering und Export
@aspose/3d ist eine Verarbeitungs- und Konvertierungsbibliothek und führt kein GPU-Rendering durch oder erzeugt Bilddateien. „Rendering“ im Kontext dieser Bibliothek bedeutet einen Szenenexport in ein Format, das ein nachgelagerter Renderer, eine Spiel-Engine oder ein Betrachter verarbeiten kann.
Diese Seite behandelt alle Exportpfade: dateibasiertes Speichern, In‑Memory‑Pufferausgabe, format‑spezifische Optionen und wie Szenen für gängige nachgelagerte Ziele (Three.js, Babylon.js, Modell‑Viewer und Spiel‑Engines) vorbereitet werden.
Grundlegender Export
Aufruf scene.save() mit einem Dateipfad. Die Bibliothek leitet das Ausgabeformat aus der Dateierweiterung ab:
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 nach GLB (empfohlen für Web und Spiele)
GLB (binäres glTF 2.0) ist eine einzelne, eigenständige Datei, die alle Mesh‑Daten, Materialien und Texturen einbettet. Es ist das empfohlene Ausgabeformat für Web‑Viewer (Three.js, Babylon.js, model-viewer) und Spiel‑Engines (Godot, Unity über Importer):
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');Setzen binaryMode = true um eine eigenständige GLB-Datei zu erzeugen. Wenn false, ist die Ausgabe ein .gltf JSON-Datei mit einer separaten .bin Buffer-Sidecar.
Export nach glTF (JSON‑Format zur Inspektion)
Die JSON-Variante (.gltf + .bin) ist während der Entwicklung nützlich, weil das JSON menschenlesbar ist:
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 nach STL (3D‑Druck‑Workflows)
STL enthält nur Geometrie (keine Materialien, keine Animation). Es ist das Standard‑Austauschformat für 3D‑Druck‑Slicer:
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);Setzen binaryMode = false zur Erzeugung von ASCII STL, das lesbaren Text enthält, aber größer ist.
Export nach FBX (DCC‑Tool‑Workflows)
Hinweis: FBX-Import- und Exportklassen existieren in der Bibliothek, aber die automatische Erkennung des FBX-Formats ist nicht in scene.open() oder scene.save(). Der Aufruf von scene.save('output.fbx', opts) wird den FBX-Exporter nicht auslösen — die .fbx Erweiterung wird vom Speicher-Dispatcher nicht erkannt und der Aufruf fällt auf OBJ-Ausgabe zurück. Verwenden Sie die FbxExporter Klasse direkt, wenn Sie FBX‑E/A benötigen. Die Formatunterstützungstabelle kennzeichnet FBX als No* aus diesem Grund.
Wenn Sie in ein von Blender, Maya oder Unreal Engine akzeptiertes Format exportieren müssen, verwenden Sie stattdessen GLB oder COLLADA — beide sind vollständig integriert 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 mit saveToBuffer()
Für serverlose Funktionen, HTTP-Antworten und Streaming-Pipelines, exportiere direkt zu einem Buffer ohne auf die Festplatte zu schreiben:
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() nimmt einen Format-String als erstes Argument (z. B. 'glb', 'stl', 'obj') und dieselben Optionsobjekte wie save().
Kombinieren openFromBuffer() und saveToBuffer()
Eine vollständig im Speicher ablaufende Konvertierungspipeline ohne Festplatten‑E/A in irgendeinem Schritt:
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);
}Szenen für bestimmte Renderer vorbereiten
Three.js / Babylon.js (Web)
Diese Renderer laden GLB-Dateien nativ. Exportiere mit binaryMode = true. Wenn Texturen aus dem Quell-OBJ referenziert werden, stelle sicher, dass die .mtl und Bilddateien beim Laden gemeinsam platziert sind.
model-viewer (Web‑Komponente)
Akzeptiert .glb direkt. Gleiche Exporteinstellungen wie Three.js.
Godot Engine
Importiere GLB über Godots Importer (Projekt → Import). Verwende binaryMode = true. Godot unterstützt PBR‑Materialien aus glTF 2.0 nativ.
Blender
Für die beste Importtreue verwende glTF (output.gltf + output.bin) oder GLB (output.glb). Blenders glTF 2.0‑Importer verarbeitet PBR‑Materialien und Animationen. Hinweis: FBX‑Ausgabe über scene.save() wird nicht unterstützt — die automatische Erkennung des FBX‑Formats ist nicht in den Speicher‑Dispatcher eingebunden.
3D Printing (Slicers: Cura, PrusaSlicer, Bambu Studio)
Exportieren Sie nach STL oder 3MF. Verwenden Sie 3MF, wenn Farbe oder Material‑Metadaten erhalten bleiben sollen. Verwenden Sie STL für maximale Kompatibilität.
Vergleich der Exportformate
| Format | Erweiterung | Materialien | Animation | Einzeldatei | Am besten für |
|---|---|---|---|---|---|
| GLB | .glb | PBR (glTF 2.0) | Ja | Ja | Web, Spiele, allgemeine Auslieferung |
| glTF | .gltf | PBR (glTF 2.0) | Ja | Nein (+ .bin) | Entwicklung, Inspektion |
| STL | .stl | Nein | Nein | Ja | 3D printing, geometry-only |
| FBX | .fbx | Phong/PBR | Nein* | Nein* | Importer/exporter existieren, sind aber nicht in die automatische Erkennung eingebunden |
| COLLADA | .dae | Ja | Ja | Ja | Cross-DCC-Austausch |
| 3MF | .3mf | Farbe/Material | Nein | Ja | Moderne 3D-Druck |
Häufige Exportprobleme
| Symptom | Ursache | Behebung |
|---|---|---|
| Ausgabe-GLB öffnet sich als JSON im Viewer | binaryMode bleibt als false | Satz opts.binaryMode = true |
| Texturen fehlen im Ausgabe-GLB | binaryMode nicht gesetzt | Setzen opts.binaryMode = true für selbstenthaltenes GLB |
| STL-Datei hat im Slicer keine Farbe | STL-Format unterstützt keine Farbe | Verwenden Sie 3MF für Farbdaten |
saveToBuffer gibt leeren Puffer zurück | Format-String-Argument fehlt oder ist falsch | Übergeben Sie den Format-String, z. B. 'glb', 'stl', oder 'obj' |
| FBX öffnet sich ohne Animation in Blender | Quelldatei (OBJ/STL) hat keine Animation | Animation wird nur übernommen, wenn sie in der Quelle vorhanden ist |
| Ausgabedatei ist sehr groß | Quell-OBJ hat viele doppelte Vertices | GLB-Binärausgabe dedupliziert bereits; prüfen Sie die Qualität des Quell-Assets |
Siehe auch
- Modellladen: Laden von 3D-Dateien von Festplatte und Puffern
- Szenengraph: Aufbau und Modifikation der Szene vor dem Export
- Formatunterstützung: vollständige Lese-/Schreibmatrix
- API-Übersicht: alle Klassen und Aufzählungen