Sådan konverteres 3D-modeller i TypeScript

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

Trin 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 .fbx er ikke tilknyttet nogen eksportør — gemning til .fbx skriver 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 til scene.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øjniveau open()/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 \ TilglTF/GLBOBJSTLFBX3MFCOLLADA
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.


Se også

 Dansk