Hoe 3D-modellen te converteren in TypeScript

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/3d

Stap 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 .fbx extensie is niet gekoppeld aan een exporter — opslaan naar .fbx schrijft 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 aan scene.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-level open()/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 \ NaarglTF/GLBOBJSTLFBX3MFCOLLADA
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.


Zie ook

 Nederlands