Kako konvertovati 3D modele u TypeScript-u

Kako konvertovati 3D modele u TypeScript-u

Aspose.3D FOSS for TypeScript konvertuje između 3D formata učitavanjem u neutralnu Scene reprezentaciju i čuvanjem u ciljni format. Ovaj vodič prikazuje najčešće konverzije.

Vodič korak po korak

Korak 1: Instalirajte @aspose/3d

npm install @aspose/3d

Korak 2: Učitajte izvorni fajl

Kreirajte Scene i pozovite scene.open(). Koristite format‑specifičnu *LoadOptions klasu za najbolje rezultate.

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

Korak 3: Sačuvaj u ciljani format

Pozovite scene.save() sa putanjom izlaza. Format izlaza se otkriva na osnovu ekstenzije fajla.

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

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

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

Napomena: FBX nije podržan od strane scene.save() automatskog otkrivanja. Ekstenzija .fbx nije povezana ni sa jednim izvoznikom — čuvanje u .fbx tiho zapisuje sadržaj u OBJ formatu. Koristite OBJ, glTF, STL, 3MF ili COLLADA za pouzdan izlaz.


Korak 4: Česti primeri konverzije

OBJ u 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 — Nije podržano

FBX automatsko otkrivanje nije implementirano u scene.open(). Datoteka .fbx prosleđena u scene.open() nije prepoznata od strane bilo kojeg detektora formata i prelazi na STL parser, koji će propasti ili proizvesti smeće. FBX klase za uvoz/izvoz postoje u biblioteci, ali zahtevaju direktno pozivanje umesto visokog nivoa open()/save() API. Koristite COLLADA, OBJ ili glTF kao FBX alternativu.

glTF u STL

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

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

COLLADA u 3MF

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

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

Korak 5: Paketna konverzija više fajlova

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

Подржана матрица конверзије

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

FBX nije podržan putem visokog‑nivoa open()/save() API‑ja — format nije povezan sa automatskim otkrivanjem. Sve FBX ćelije iznad su ✗.


Česti problemi i popravke

Materijali se gube nakon konverzije

OBJ materijali (usemtl, .mtl fajl) se učitavaju kada ObjLoadOptions.enableMaterials = true. Prilikom čuvanja u glTF, PBR svojstva materijala se automatski mapiraju. Kompleksni materijali (proceduralni, višeslojni) mogu se konvertovati uz smanjenu vernost.

Mreža se prikazuje pogrešno skalirana

Različiti formati koriste različite podrazumevane jedinice (milimetri za STL, metri za glTF). Koristite ObjLoadOptions.scale prilikom učitavanja ili StlSaveOptions.scaleFactor prilikom čuvanja da biste normalizovali jedinice.

Neusklađenost koordinatnog sistema (model preokrenut ili rotiran)

Neki formati koriste desni Y‑gore, drugi Z‑gore. Koristite ObjLoadOptions.flipCoordinateSystem = true ili primenite rotaciju na korenski čvor nakon učitavanja.


Često postavljana pitanja

Da li konverzija čuva animacije?

Podaci o animaciji se čuvaju prilikom konvertovanja između formata koji ih podržavaju (npr., COLLADA → glTF). STL i OBJ ne nose podatke o animaciji. FBX nije podržan putem scene.open()/scene.save(), tako da FBX animacije nisu dostupne kroz high-level API.

Da li su podaci o teksturi sačuvani?

Teksture na koje se referišu OBJ materijali ili su ugrađene u glTF se prenose u graf scenske strukture. Kada se čuva u GLB (binaryMode = true), binarni bafer je ugrađen u jedan fajl. Za OBJ izlaz, teksture se čuvaju kao odvojeni fajlovi pored .obj.

Mogu li konvertovati više fajlova paralelno?

scene.open() i scene.save() su sinhroni. Koristite Node.js worker_threads za paralelno procesiranje.


Vidi takođe

 Српски