Ako konvertovať 3D modely v TypeScript

Ako konvertovať 3D modely v TypeScript

Aspose.3D FOSS for TypeScript konvertuje medzi 3D formátmi načítaním do neutrálnej Scene reprezentácie a uložením do cieľového formátu. Tento sprievodca ukazuje najčastejšie konverzie.

Krok za krokom sprievodca

Krok 1: Nainštalujte @aspose/3d

npm install @aspose/3d

Krok 2: Načítajte zdrojový súbor

Vytvorte Scene a zavolajte scene.open(). Použite špecifickú pre formát triedu *LoadOptions pre najlepšie výsledky.

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);

Krok 3: Uložiť do cieľového formátu

Zavolajte scene.save() s výstupnou cestou. Formát výstupu sa určuje podľa prípony súboru.

// OBJ → glTF binary (GLB)
scene.save('output.glb');

// OBJ → STL
scene.save('output.stl');

// OBJ → COLLADA
scene.save('output.dae');

Poznámka: FBX nie je podporovaný automatickým rozpoznávaním scene.save(). Rozšírenie .fbx nie je prepojené s žiadnym exportérom — ukladanie do .fbx ticho zapisuje obsah vo formáte OBJ. Použite OBJ, glTF, STL, 3MF alebo COLLADA pre spoľahlivý výstup.


Krok 4: Bežné príklady konverzie

OBJ do 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 — Nie je podporované

FBX automatické rozpoznávanie nie je zapojené v scene.open(). Súbor .fbx odovzdaný do scene.open() nie je rozpoznaný žiadnym detektorom formátu a prejde na parser STL, ktorý zlyhá alebo vytvorí nečitateľný výstup. Triedy importéra/exportéra FBX existujú v knižnici, ale vyžadujú priame volanie namiesto vysokoúrovňového API open()/save(). Použite COLLADA, OBJ alebo glTF ako alternatívu k FBX.

glTF do STL

import { Scene } from '@aspose/3d';

const scene = new Scene();
scene.open('model.glb');
scene.save('model.stl');
console.log('Converted GLB → STL');

COLLADA do 3MF

import { Scene } from '@aspose/3d';

const scene = new Scene();
scene.open('model.dae');
scene.save('model.3mf');
console.log('Converted COLLADA → 3MF');

Krok 5: Hromadná konverzia viacerých súborov

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}`);
}

Podporovaná konverzná matica

Z \ DoglTF/GLBOBJSTLFBX3MFCOLLADA
OBJ
glTF/GLB
FBX
STL
3MF
COLLADA

FBX nie je podporovaný prostredníctvom vysokej úrovne open()/save() API — formát nie je zapojený do automatického rozpoznávania. Všetky vyššie uvedené FBX bunky sú ✗.


Bežné problémy a riešenia

Materiály sa stratia po konverzii

Materiály OBJ (usemtl, .mtl súbor) sa načítajú, keď ObjLoadOptions.enableMaterials = true. Pri ukladaní do glTF sa vlastnosti materiálu PBR automaticky mapujú. Zložité materiály (procedurálne, viacvrstvové) sa môžu konvertovať so zníženou vernosťou.

Sieť je nesprávne škálovaná

Rôzne formáty používajú rôzne predvolené jednotky (milimetre pre STL, metre pre glTF). Použite ObjLoadOptions.scale pri načítaní alebo StlSaveOptions.scaleFactor pri ukladaní na normalizáciu jednotiek.

Nesúlad súradnicového systému (model prevrátený alebo otočený)

Niektoré formáty používajú pravý Y-up, iné Z-up. Použite ObjLoadOptions.flipCoordinateSystem = true alebo aplikujte rotáciu na koreňový uzol po načítaní.


Často kladené otázky

Zachová konverzia animácie?

Animácie sa zachovávajú pri konverzii medzi formátmi, ktoré ich podporujú (napr. COLLADA → glTF). STL a OBJ neobsahujú údaje o animácii. FBX nie je podporovaný prostredníctvom scene.open()/scene.save(), takže FBX animácie round-trips nie sú k dispozícii prostredníctvom high-level API.

Sú textúrové dáta zachované?

Textúry odkazované materiálmi OBJ alebo vložené v glTF sa prenášajú do grafu scény. Pri ukladaní do GLB (binaryMode = true) je binárny buffer vložený do jedného súboru. Pre výstup OBJ sa textúry ukladajú ako samostatné súbory vedľa .obj.

Môžem konvertovať viacero súborov paralelne?

scene.open() a scene.save() sú synchronné. Použite Node.js worker_threads na paralelné spracovanie.


Pozri tiež

 Slovenčina