Szenenverarbeitung und -export

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() oder scene.save().- Ich rufe . scene.save('output.fbx', opts) wird der FBX-Exporteur nicht auf die .fbx Die Erweiterung wird vom Speicher nicht erkannt und der Anruf fällt zurück auf den OBJ-Ausgang. Verwenden Sie die FbxExporter Die Formatsunterstützungstabelle markiert FBX als No* 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 DatenbankErweiterungMaterialienAnimation und FilmEinfache DateiBeste für
GFT-Systeme.glb / .gltfPBR (glTF 2.0)- Ja , das ist gut .GLB: Ja; glTF: NeinWeb, Spiele, allgemeine Lieferung
STL.stl- Nein .- Nein .- Ja , das ist gut .3D printing, geometry-only
FBX.fbxPhong/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.3mfFarbe/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 derUrsacheBehebung
Ausgabe GLB wird als JSON im Viewer geöffnetbinaryMode links als falseSetz opts.binaryMode = true
Texturen, die in der Ausgabe GLB fehlenbinaryMode nicht festgelegtSetz opts.binaryMode = true für selbstständige GLB
STL-Datei hat keine Farbe im SlicerSTL-Format unterstützt keine Farbe3MF für Farbdaten verwenden
saveToBuffer Rückgabe leerer PufferFehlt oder ist falschDie Formatschnur, z.B. 'glb', 'stl',oder , 'obj'
FBX öffnet sich ohne Animation in BlenderQuelledatei (OBJ/STL) hat keine AnimationAnimation wird nur durchgesetzt, wenn sie in der Quelle vorhanden ist.
Ausgabe-Datei ist sehr großQuelle OBJ hat viele doppelte WerteGLB-Binärprodukte bereits abgewichen; Quelle der Qualität des Vermögenswertes überprüfen

Siehe auch:

 Deutsch