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..fbxDie Ausdehnung ist nicht an einen Exporteur gebunden die Einsparung von.fbxVerwenden 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.fbxDatei an diescene.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 \ zu | glTF/GLB | OBJ | STL | FBX | 3MF | COLLADA |
|---|---|---|---|---|---|---|
| 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.