Hoe 3D-modellen te converteren in TypeScript
Aspose.3D FOSS for TypeScript converteert tussen 3D-formaten door te laden in een neutrale Scene-representatie en op te slaan naar het doelformaat. Deze gids toont de meest voorkomende conversies.
Stapsgewijze handleiding
Stap 1: Installeer @aspose/3d
npm install @aspose/3dStap 2: Laad het bronbestand
Maak een Scene en roep scene.open(). Gebruik de formaat‑specifieke *LoadOptions‑klasse voor de beste resultaten.
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);Stap 3: Opslaan in het doelformaat
Roep scene.save() aan met het uitvoerpad. Het uitvoerformaat wordt gedetecteerd aan de hand van de bestandsextensie.
// OBJ → glTF binary (GLB)
scene.save('output.glb');
// OBJ → STL
scene.save('output.stl');
// OBJ → COLLADA
scene.save('output.dae');Opmerking: FBX wordt niet ondersteund door
scene.save()auto-detectie. De.fbxextensie is niet gekoppeld aan een exporter — opslaan naar.fbxschrijft stilzwijgend OBJ‑formaat inhoud in plaats daarvan. Gebruik OBJ, glTF, STL, 3MF, of COLLADA voor betrouwbare output.
Stap 4: Veelvoorkomende conversievoorbeelden
OBJ naar 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 — Niet ondersteund
FBX-auto-detectie is niet ingebouwd in
scene.open(). Een.fbx-bestand dat aanscene.open()wordt doorgegeven, wordt niet herkend door een formatdetector en valt door naar de STL-parser, die zal falen of rommel zal produceren. FBX-import-/exportklassen bestaan in de bibliotheek, maar vereisen directe aanroep in plaats van de high-levelopen()/save()API. Gebruik COLLADA, OBJ of glTF als een FBX-alternatief.
glTF naar STL
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('model.glb');
scene.save('model.stl');
console.log('Converted GLB → STL');COLLADA naar 3MF
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('model.dae');
scene.save('model.3mf');
console.log('Converted COLLADA → 3MF');Stap 5: Batchconversie van meerdere bestanden
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}`);
}Ondersteunde conversiematrix
| Van \ Naar | glTF/GLB | OBJ | STL | FBX | 3MF | COLLADA |
|---|---|---|---|---|---|---|
| OBJ | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| glTF/GLB | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| FBX | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| STL | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| 3MF | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| COLLADA | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
FBX wordt niet ondersteund via de high-level open()/save() API — het formaat is niet gekoppeld aan automatische detectie. Alle FBX‑cellen hierboven zijn ✗.
Veelvoorkomende problemen en oplossingen
Materialen gaan verloren na conversie
OBJ-materialen (usemtl, .mtl bestand) worden geladen wanneer ObjLoadOptions.enableMaterials = true. Bij het opslaan naar glTF worden PBR-materiaal eigenschappen automatisch gemapt. Complexe materialen (procedureel, meerlagig) kunnen met verminderde nauwkeurigheid worden geconverteerd.
Mesh wordt onjuist geschaald
Verschillende formaten gebruiken verschillende standaardeenheden (millimeters voor STL, meters voor glTF). Gebruik ObjLoadOptions.scale bij het laden of StlSaveOptions.scaleFactor bij het opslaan om eenheden te normaliseren.
Coördinatensysteem mismatch (model omgekeerd of gedraaid)
Sommige formaten gebruiken right‑hand Y‑up, andere Z‑up. Gebruik ObjLoadOptions.flipCoordinateSystem = true of pas een rotatie toe op het root‑knooppunt na het laden.
Veelgestelde vragen
Behoudt de conversie animaties?
Animatiegegevens worden behouden bij het converteren tussen formaten die dit ondersteunen (bijv. COLLADA → glTF). STL en OBJ bevatten geen animatiegegevens. FBX wordt niet ondersteund via scene.open()/scene.save(), dus FBX‑animatieronde‑trips zijn niet beschikbaar via de high‑level API.
Is textuurgegevens behouden?
Texturen die door OBJ‑materialen worden verwezen of in glTF zijn ingebed, worden doorgegeven aan de scènegrafiek. Bij het opslaan naar GLB (binaryMode = true) wordt de binaire buffer in één enkel bestand ingebed. Voor OBJ‑uitvoer worden texturen opgeslagen als afzonderlijke bestanden naast de .obj.
Kan ik veel bestanden parallel converteren?
scene.open() en scene.save() zijn synchroon. Gebruik Node.js worker_threads voor parallelle verwerking.