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/3dKorak 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.fbxnije povezana ni sa jednim izvoznikom — čuvanje u.fbxtiho 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.fbxprosleđena uscene.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 nivoaopen()/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 \ Do | glTF/GLB | OBJ | STL | FBX | 3MF | COLLADA |
|---|---|---|---|---|---|---|
| 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.