Wie man 3D-Modelle in TypeScript umwandelt

Wie man 3D-Modelle in TypeScript umwandelt

Aspose.3D FOSS für TypeScript konvertiert zwischen 3D-Formaten durch das Laden in eine neutrale Scene Diese Anleitung zeigt die häufigsten Umwandlungen.

Schritt für Schritte

Schritt 1: Installieren @aspose/3d

asposefoss/3d is not yet published — build from source until it ships. See the project README for build instructions.


Schritt 2: Laden der Quelldatei ein

Erstellen einer Scene und rufen Sie an. scene.open().Verwenden Sie das Format-spezifische *LoadOptions - Die Klasse für die besten 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: Speichern in das Zielformat

Rufen Sie an . scene.save() Das Ausgabeformat wird von der Dateierweiterung erkannt.

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

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

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

Anmerkung: FBX ist … nicht unterstützt von: scene.save() Die Autodetection. .fbx Die Ausdehnung ist nicht an einen Exporteur gebunden die Einsparung von .fbx Verwenden Sie OBJ, glTF, STL, 3MF oder COLLADA für zuverlässige Ausgabe.


Schritt 4: Allgemeine Umwandlungsbeispiele

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 eingebunden. scene.open(). Eine .fbx Datei an die scene.open() ist von keinem Formatdetektor erkannt und fällt durch den STL-Parser, der fehlschlägt oder Müll produziert. FBX Importeur/Exporter Klassen existieren in der Bibliothek, erfordern aber eine direkte Anrufung anstatt die High-Level-Klasse. open()/save() Verwenden Sie COLLADA, OBJ oder glTF als FBX-Alternative.

glTF zu STL

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

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

COLLADA auf 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: Batch-Konvertieren mehrerer Dateien

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 Umrechnungsmatrix

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

FBX nicht über die Hochstufe unterstützt wird. open()/save() Das Format API ist nicht in die automatische Erkennung eingebunden. Alle oben genannten FBX-Zellen sind ?? .


Häufige Probleme und Lösungen

Nach der Umwandlung werden Materialien verloren.

Die OBJ-Materialien (usemtl, .mtl Die Daten werden dann geladen, wenn die ObjLoadOptions.enableMaterials = true.Bei der Speicherung auf glTF werden die Eigenschaften von PBR-Materialien automatisch abgegrenzt. Komplexe Materialien (prozedural, multilayer) können mit reduzierter Treue umgewandelt werden.

Mesh wird falsch skaliert.

Die verschiedenen Formate verwenden unterschiedliche Standard-Einheiten (Millimeter für STL, Meter fur glTF). ObjLoadOptions.scale beim Verladen oder StlSaveOptions.scale bei der Normalisierung von Einheiten.

Nicht übereinstimmende Koordinatensysteme (Modell umgedreht oder gedrehte)

Einige Formate verwenden rechts Y-up, andere Z-Up. ObjLoadOptions.flipCoordinateSystem = true oder den Wurzelknoten nach dem Laden mit einer Rotation zu versehen.


Häufig gestellte Fragen

Erhält die Umwandlung Animationen?

Bei der Konvertierung zwischen Formaten, die diese unterstützen (z. B. COLLADA → glTF), werden Animationsdaten erhalten. STL und OBJ tragen keine Animationsdaten mit sich. FBX wird nicht über das Internet unterstützt. scene.open()/scene.save(), so dass FBX-Animationsrunde nicht über die High-Level API verfügbar sind.

Werden die Texturdaten erhalten?

Texturen, auf die OBJ-Materialien verwiesen oder in glTF eingebettet sind, werden übertragen und zur Szenegraphik gebracht.binaryMode = trueBei der Ausgabe von OBJ werden die Texturen als separate Dateien neben dem Text-Buffer gespeichert. .obj.

Kann ich viele Dateien parallel konvertieren?

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


Siehe auch:

 Deutsch