Wie man 3D-Modelle in TypeScript konvertiert

Wie man 3D-Modelle in TypeScript konvertiert

Aspose.3D FOSS for TypeScript konvertiert zwischen 3D-Formaten, indem es in eine neutrale Scene-Darstellung lädt und in das Zielformat speichert. Dieser Leitfaden zeigt die gängigsten Konvertierungen.

Schritt-für-Schritt-Anleitung

Schritt 1: Installieren Sie @aspose/3d

npm install @aspose/3d

Schritt 2: Laden Sie die Quelldatei

Erstellen Sie ein Scene und rufen Sie scene.open() auf. Verwenden Sie die formatbezogene *LoadOptions‑Klasse für beste Ergebnisse.

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
const opts = new ObjLoadOptions();
opts.enableMaterials = true;
scene.open('model.obj', opts);

Schritt 3: In das Zielformat speichern

Rufen Sie scene.save() mit dem Ausgabepfad auf. Das Ausgabeformat wird anhand der Dateierweiterung erkannt.

// OBJ → glTF binary (GLB)
scene.save('output.glb');

// OBJ → STL
scene.save('output.stl');

// OBJ → COLLADA
scene.save('output.dae');

Hinweis: FBX wird nicht unterstützt von scene.save() automatischer Erkennung. Die .fbx Erweiterung ist zu keinem Exporter verbunden — das Speichern nach .fbx schreibt stillschweigend OBJ‑Format‑Inhalt statt. Verwenden Sie OBJ, glTF, STL, 3MF oder COLLADA für zuverlässige Ausgabe.


Schritt 4: Häufige Konvertierungsbeispiele

OBJ zu glTF / GLB

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());
scene.save('model.glb');
console.log('Converted OBJ → GLB');

FBX — Nicht unterstützt

FBX-Autoerkennung ist nicht in scene.open() integriert. Eine .fbx-Datei, die an scene.open() übergeben wird, wird von keinem Formatdetektor erkannt und fällt auf den STL‑Parser zurück, der fehlschlägt oder Müll erzeugt. FBX‑Import‑/Export‑Klassen existieren in der Bibliothek, erfordern jedoch einen direkten Aufruf statt der High‑Level‑open()/save()‑API. Verwenden Sie COLLADA, OBJ oder glTF als FBX‑Alternative.

glTF nach STL

import { Scene } from '@aspose/3d';

const scene = new Scene();
scene.open('model.glb');
scene.save('model.stl');
console.log('Converted GLB → STL');

COLLADA nach 3MF

import { Scene } from '@aspose/3d';

const scene = new Scene();
scene.open('model.dae');
scene.save('model.3mf');
console.log('Converted COLLADA → 3MF');

Schritt 5: Mehrere Dateien stapelweise konvertieren

import * as fs from 'fs';
import * as path from 'path';
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const inputDir = './input';
const outputDir = './output';

fs.mkdirSync(outputDir, { recursive: true });

const objFiles = fs.readdirSync(inputDir).filter(f => f.endsWith('.obj'));

for (const file of objFiles) {
    const inputPath = path.join(inputDir, file);
    const outputFile = file.replace('.obj', '.glb');
    const outputPath = path.join(outputDir, outputFile);

    const scene = new Scene();
    scene.open(inputPath, new ObjLoadOptions());
    scene.save(outputPath);

    console.log(`Converted ${file}${outputFile}`);
}

Unterstützte Konvertierungsmatrix

Von \ NachglTF/GLBOBJSTLFBX3MFCOLLADA
OBJ
glTF/GLB
FBX
STL
3MF
COLLADA

FBX wird über die High-Level open()/save() API nicht unterstützt — das Format ist nicht in die automatische Erkennung eingebunden. Alle oben genannten FBX‑Zellen sind ✗.


Häufige Probleme und Lösungen

Materialien gehen nach der Konvertierung verloren

OBJ-Materialien (usemtl, .mtl Datei) werden geladen, wenn ObjLoadOptions.enableMaterials = true. Beim Speichern in glTF werden PBR-Materialeigenschaften automatisch zugeordnet. Komplexe Materialien (prozedural, mehrschichtig) können mit reduzierter Treue konvertiert werden.

Mesh wird falsch skaliert

Verschiedene Formate verwenden unterschiedliche Standardmaßeinheiten (Millimeter für STL, Meter für glTF). Verwenden Sie ObjLoadOptions.scale beim Laden oder StlSaveOptions.scaleFactor beim Speichern, um die Einheiten zu normalisieren.

Koordinatensystem-Fehlanpassung (Modell gespiegelt oder rotiert)

Einige Formate verwenden rechtsseitiges Y‑up, andere Z‑up. Verwenden Sie ObjLoadOptions.flipCoordinateSystem = true oder wenden Sie nach dem Laden eine Rotation auf den Wurzelknoten an.


Häufig gestellte Fragen

Behält die Konvertierung Animationen bei?

Animationsdaten werden beim Konvertieren zwischen Formaten, die sie unterstützen (z. B. COLLADA → glTF), beibehalten. STL und OBJ enthalten keine Animationsdaten. FBX wird über scene.open()/scene.save() nicht unterstützt, sodass FBX‑Animations‑Round‑Trips über die High‑Level‑API nicht verfügbar sind.

Werden Texturdaten beibehalten?

Texturen, die von OBJ‑Materialien referenziert werden oder in glTF eingebettet sind, werden in den Szenengraph übernommen. Beim Speichern in GLB (binaryMode = true) wird der Binärpuffer in einer einzigen Datei eingebettet. Für OBJ‑Ausgabe werden Texturen als separate Dateien neben dem .obj gespeichert.

Kann ich viele Dateien parallel konvertieren?

scene.open() und scene.save() sind synchron. Verwenden Sie Node.js worker_threads für die parallele Verarbeitung.


Siehe auch

 Deutsch