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

FormatErweiterungMaterialienAnimationEinzeldateiAm besten für
GLB.glbPBR (glTF 2.0)JaJaWeb, Spiele, allgemeine Auslieferung
glTF.gltfPBR (glTF 2.0)JaNein (+ .bin)Entwicklung, Inspektion
STL.stlNeinNeinJa3D printing, geometry-only
FBX.fbxPhong/PBRNein*Nein*Importer/exporter existieren, sind aber nicht in die automatische Erkennung eingebunden
COLLADA.daeJaJaJaCross-DCC-Austausch
3MF.3mfFarbe/MaterialNeinJaModerne 3D-Druck

Häufige Exportprobleme

SymptomUrsacheBehebung
Ausgabe-GLB öffnet sich als JSON im ViewerbinaryMode bleibt als falseSatz opts.binaryMode = true
Texturen fehlen im Ausgabe-GLBbinaryMode nicht gesetztSetzen opts.binaryMode = true für selbstenthaltenes GLB
STL-Datei hat im Slicer keine FarbeSTL-Format unterstützt keine FarbeVerwenden Sie 3MF für Farbdaten
saveToBuffer gibt leeren Puffer zurückFormat-String-Argument fehlt oder ist falschÜbergeben Sie den Format-String, z. B. 'glb', 'stl', oder 'obj'
FBX öffnet sich ohne Animation in BlenderQuelldatei (OBJ/STL) hat keine AnimationAnimation wird nur übernommen, wenn sie in der Quelle vorhanden ist
Ausgabedatei ist sehr großQuell-OBJ hat viele doppelte VerticesGLB-Binärausgabe dedupliziert bereits; prüfen Sie die Qualität des Quell-Assets

Siehe auch

 Deutsch