Szenenverarbeitung und -export
@aspose/3d ist eine Verarbeitung und Konvertierung Bibliothek, die keine GPU-Rendering oder Bilddateien erzeugt. “Renderieren” im Zusammenhang mit dieser Bibliotheik bedeutet: Exportieren einer Szene in ein Format, das von einem nachgelagerten Renderer, Spiel-Engine oder Zuschauer verbraucht werden kann..
Diese Seite behandelt alle Exportwege: Dateibasiertes Speichern, Ausgabe des Buffers im Speech, formatspezifische Optionen und die Vorbereitung von Szenen für gemeinsame nachgelagerte Ziele (Three.js, Babylon. js, Modell-Viewer und Spieleanlagen).
Grundlegende Ausfuhren
Rufen Sie an . scene.save() Die Bibliothek schließt 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är glTF 2.0) ist eine einzelne, in sich geschlossene Datei mit allen Mesh-Daten, Materialien und Texturen. Es ist das empfohlene Ausgabeformat für Webviewer (Three.js, Babylon. js, Model-Viewer) und Spieleanlagen (Godot, Unity via 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');Setz binaryMode = true Die Kommission hat die Möglichkeit, eine eigenständige GLB-Datei zu erstellen. false, die Ausgabe ist ein .gltf JSON-Datei mit einem separaten .bin - Die Schrottwaffe.
Exportieren in glTF (JSON-Format für die Inspektion)
Die JSON-Variante (.gltf + .bin) ist während der Entwicklung nützlich, da das JSON für den Menschen lesbar 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 zu STL (3D-Druckarbeitsflüsse)
STL ist ein geometrisches Format (ohne Materialien, keine Animation). Es ist das Standard-Austauschformat für 3D-Druckschneider:
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);Setz binaryMode = false Die ASCII-STL ist zwar textlesbar, aber größer.
Export auf FBX (DCC-Werkströmungswerkzeuge)
Anmerkung:: FBX-Importeur und Exporterklassen existieren in der Bibliothek, aber die automatische Erkennung des FB X-Formats ist nicht mit dem Programm verbunden.
scene.open()oderscene.save().- Ich rufe .scene.save('output.fbx', opts)wird der FBX-Exporteur nicht auf die.fbxDie Erweiterung wird vom Speicher nicht erkannt und der Anruf fällt zurück auf den OBJ-Ausgang. Verwenden Sie dieFbxExporterDie Formatsunterstützungstabelle markiert FBX alsNo*Aus diesem Grund.
Wenn Sie exportieren müssen, um ein Format akzeptiert von Blender, Maya oder Unreal Engine, verwenden GLB oder COLLADA statt beide sind vollständig in die 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 exportieren Sie direkt zu einem Buffer ohne auf 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 als erstes Argument eine Format-Zeichenfolge (z. B. 'glb', 'stl', 'obj') und die gleichen Optionsobjekte wie save().
Zusammenfassung der openFromBuffer() und . saveToBuffer()
Eine vollständig in-Memory Konversionspipeline ohne Datenträger/Ausgeber auf jeder Stufe:
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);
}Vorbereitung der Szenen für bestimmte Darsteller
Three.js / Babylon.js (Web)
Diese Renderer laden nativ GLB-Dateien. Export mit binaryMode = true.Wenn die Texturen aus der Quell-OJ bezogen werden, müssen die Angaben in den folgenden Buchstaben erfolgen: .mtl und Bilddateien beim Laden zusammen platziert werden.
Modell-Viewer (Webkomponente)
Annahme der Entscheidung .glb Die gleichen Export-Einstellungen wie bei Three.js.
Die Godot-Maschine.
Import GLB über den Godot-Importeur (Projekt → Import) Verwendung binaryMode = true.Godot unterstützt PBR-Materialien von glTF 2.0 natively.
Blender für die Herstellung von Frühstücksprodukten
Für die beste Importfidelität wird glTF verwendet (output.gltf + output.bin) oder GLB (output.glbDie Funktion des Blender glTF 2.0-Importers ist für die Verarbeitung von PBR-Materialien und Animationen geeignet. scene.save() nicht unterstützt FBX-Format ist nicht mit dem Speicher dispatcher verbunden.
3D Printing (Slicers: Cura, PrusaSlicer, Bambu Studio)
Exportieren Sie in STL oder 3MF. Verwenden Sie 3 MF, wenn Sie Farb- oder Materialmetadaten erhalten müssen.
Vergleiche des Exportformats
| Format der Datenbank | Erweiterung | Materialien | Animation und Film | Einfache Datei | Beste für |
|---|---|---|---|---|---|
| GFT-Systeme | .glb / .gltf | PBR (glTF 2.0) | - Ja , das ist gut . | GLB: Ja; glTF: Nein | Web, Spiele, allgemeine Lieferung |
| STL | .stl | - Nein . | - Nein . | - Ja , das ist gut . | 3D printing, geometry-only |
| FBX | .fbx | Phong/PBR (Bildungsstück) | Nicht verfügbar* | Nicht verfügbar* | Importeur/Exporter existiert, ist aber nicht mit der automatischen Erkennung verbunden. |
| COLLADA | .dae | - Ja , das ist gut . | - Ja , das ist gut . | - Ja , das ist gut . | Austausch zwischen DCC-Unternehmen |
| 3MF | .3mf | Farbe/Material | - Nein . | - Ja , das ist gut . | Moderne 3D-Drucktechnik |
Wählen Sie glTF (GLB) für die Web-Delivery, 3MF für Druckworkflows mit Farbmetadaten und STL für maximale Geometrieverträglichkeit mit älteren Tools.
Gemeinsame Exportprobleme
| Symptom der | Ursache | Behebung |
|---|---|---|
| Ausgabe GLB wird als JSON im Viewer geöffnet | binaryMode links als false | Setz opts.binaryMode = true |
| Texturen, die in der Ausgabe GLB fehlen | binaryMode nicht festgelegt | Setz opts.binaryMode = true für selbstständige GLB |
| STL-Datei hat keine Farbe im Slicer | STL-Format unterstützt keine Farbe | 3MF für Farbdaten verwenden |
saveToBuffer Rückgabe leerer Puffer | Fehlt oder ist falsch | Die Formatschnur, z.B. 'glb', 'stl',oder , 'obj' |
| FBX öffnet sich ohne Animation in Blender | Quelledatei (OBJ/STL) hat keine Animation | Animation wird nur durchgesetzt, wenn sie in der Quelle vorhanden ist. |
| Ausgabe-Datei ist sehr groß | Quelle OBJ hat viele doppelte Werte | GLB-Binärprodukte bereits abgewichen; Quelle der Qualität des Vermögenswertes überprüfen |
Siehe auch:
- Modellladen: Lade von 3D-Dateien auf Festplatte und Buffers
- Schauplatz: Errichtung und Umgestaltung der Schauplatz vor dem Export
- Formatunterstützung: vollständige Lesen/Schreiben-Matrix
- Übersicht über die API: alle Klassen und Aufzählungen