Sådan konverteres 3D-modeller i TypeScript
Aspose.3D FOSS for TypeScript konverterer mellem 3D-formater ved at indlæse i en neutral Scene-repræsentation og gemme til målformatet. Denne vejledning viser de mest almindelige konverteringer.
Trin-for-trin guide
Trin 1: Installer @aspose/3d
npm install @aspose/3dTrin 2: Indlæs kildefilen
Opret en Scene og kald scene.open(). Brug den format‑specifikke *LoadOptions‑klasse for bedste resultater.
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);Trin 3: Gem i målformatet
Kald scene.save() med outputstien. Outputformatet opdages ud fra filendelsen.
// OBJ → glTF binary (GLB)
scene.save('output.glb');
// OBJ → STL
scene.save('output.stl');
// OBJ → COLLADA
scene.save('output.dae');Note: FBX er ikke understøttet af
scene.save()auto-detektion. Udvidelsen.fbxer ikke tilknyttet nogen eksportør — gemning til.fbxskriver stille og roligt OBJ-formatindhold i stedet. Brug OBJ, glTF, STL, 3MF eller COLLADA for pålidelig output.
Trin 4: Almindelige konverteringseksempler
OBJ til 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 — Ikke understøttet
FBX-autodetektering er ikke indbygget i
scene.open(). En.fbx-fil, der sendes tilscene.open(), genkendes ikke af nogen formatdetektor og falder igennem til STL-parseren, som vil fejle eller producere affald. FBX-import/eksport-klasser findes i biblioteket, men kræver direkte påkaldelse i stedet for den højniveauopen()/save()API. Brug COLLADA, OBJ eller glTF som et FBX-alternativ.
glTF til STL
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('model.glb');
scene.save('model.stl');
console.log('Converted GLB → STL');COLLADA til 3MF
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('model.dae');
scene.save('model.3mf');
console.log('Converted COLLADA → 3MF');Trin 5: Batchkonverter flere filer
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}`);
}Understøttet konverteringsmatrix
| Fra \ Til | glTF/GLB | OBJ | STL | FBX | 3MF | COLLADA |
|---|---|---|---|---|---|---|
| OBJ | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| glTF/GLB | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| FBX | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| STL | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| 3MF | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| COLLADA | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
FBX er ikke understøttet via den højniveau open()/save() API — formatet er ikke indbygget i automatisk genkendelse. Alle FBX-celler ovenfor er ✗.
Almindelige problemer og løsninger
Materialer går tabt efter konvertering
OBJ-materialer (usemtl, .mtl fil) indlæses, når ObjLoadOptions.enableMaterials = true. Når du gemmer til glTF, kortlægges PBR-materialegenskaber automatisk. Komplekse materialer (procedurale, flerlags) kan konverteres med reduceret nøjagtighed.
Mesh vises skaleret forkert
Forskellige formater bruger forskellige standardenheder (millimeter for STL, meter for glTF). Brug ObjLoadOptions.scale ved indlæsning eller StlSaveOptions.scaleFactor ved lagring for at normalisere enheder.
Koordinatsystem uoverensstemmelse (model vendt eller roteret)
Nogle formater bruger højre‑hand Y-op, andre Z-op. Brug ObjLoadOptions.flipCoordinateSystem = true eller anvend en rotation på rotnoden efter indlæsning.
Ofte stillede spørgsmål
Bevarer konvertering animationer?
Animationsdata bevares, når der konverteres mellem formater, der understøtter det (f.eks. COLLADA → glTF). STL og OBJ indeholder ikke animationsdata. FBX understøttes ikke via scene.open()/scene.save(), så FBX‑animationsrundrejser er ikke tilgængelige gennem den high-level API.
Er teksturdata bevaret?
Teksturer, der refereres til af OBJ-materialer eller er indlejret i glTF, overføres til scenegrafen. Når du gemmer til GLB (binaryMode = true), er den binære buffer indlejret i en enkelt fil. For OBJ-uddata gemmes teksturer som separate filer ved siden af .obj.
Kan jeg konvertere mange filer parallelt?
scene.open() og scene.save() er synkrone. Brug Node.js worker_threads til parallel behandling.