Hur man konverterar 3D-modeller till TypeScript
Aspose.3D FOSS för TypeScript konverterar mellan 3D-format genom att ladda in i en neutral Scene representation och spara till målet format. Denna guide visar de vanligaste omvandlingarna.
Steg för steg guide
Steg 1: Installera @aspose/3d
npm install @aspose/3dSteg 2: Ladda upp källfilen
Skapa en a Scene och ringer scene.open().Använd format-specifik *LoadOptions Klasser för bästa resultat.
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);Steg 3: Spara till målet format
Ringa till scene.save() med utgångsvägen. Utgångssformat upptäcks från filändelsen.
// OBJ → glTF binary (GLB)
scene.save('output.glb');
// OBJ → STL
scene.save('output.stl');
// OBJ → COLLADA
scene.save('output.dae');Notera på: FBX är inte stöds genom
scene.save()Självdetektion - den.fbxförlängningen är inte kopplad till någon exportör - spara för att.fbxAnvänd OBJ, glTF, STL, 3MF eller COLLADA för tillförlitlig utgång.
Steg 4: Vanliga konverteringsexempel
OBJ till 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 – inte stöds
FBX Auto-detection är inte kopplad till
scene.open(). En.fbxfilen överfördes tillscene.open()är inte erkända av någon formatdetektor och faller igenom till STL-parser, vilket kommer att misslyckas eller producera skräp. FBX importör/exportörsklasser finns i biblioteket men kräver direkt inbjudan snarare än hög nivåopen()/save()Använd COLLADA, OBJ eller glTF som ett FBX alternativ.
GTTF till STL
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('model.glb');
scene.save('model.stl');
console.log('Converted GLB → STL');Låter till 3MF
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('model.dae');
scene.save('model.3mf');
console.log('Converted COLLADA → 3MF');Steg 5: Batch konvertera flera 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}`);
}Stöd för konvertering Matrix
| Från till | GTTF / GLB | OBJ | STL | FBX | 3MF | COLLADA |
|---|---|---|---|---|---|---|
| OBJ | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| GTTF / GLB | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| FBX | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| STL | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| 3MF | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| COLLADA | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
FBX inte stöds genom hög nivå open()/save() API – formatet är inte kopplat till automatisk upptäckt. Alla FBX celler ovan är .
Vanliga problem och fixar
Materialet förloras efter omvandling
Föregående inläggFöredrag (usemtl, .mtl filen) laddas när ObjLoadOptions.enableMaterials = true.När spara till glTF, PBR materialegenskaper kartläggs automatiskt. komplexa material (procedural, multi-layer) kan konverteras med minskad trovärdighet.
Mesh verkar skala felaktigt
Olika format använder olika standardenheter (millimeter för STL, meter för glTF). ObjLoadOptions.scale när du laddar eller StlSaveOptions.scale När spara för att normalisera enheter.
Systemets koordinat missmatch (modell flätad eller roterad)
Vissa format använder högerhand Y-up, andra Z-Up. ObjLoadOptions.flipCoordinateSystem = true eller applicera en rotation på rötnoden efter laddning.
Ofta ställda frågor
Förvarar omvandling animationer?
Animationsdata bevaras när konverteringen mellan de format som stöder den (t.ex. COLLADA → glTF). STL och OBJ bär inte animationsuppgifter. FBX stöds inte via scene.open()/scene.save(),Så FBX animation runda spår är inte tillgängliga via den högnivå API.
Är textdata bevarade?
Texturer som refereras av OBJ-material eller inbäddade i glTF transporteras till scenen graf. När spara till GLB (binaryMode = true), den binära buffern är inbäddad i en enda fil. För OBJ-utgången sparas texturer som separata filer bredvid .obj.
Kan jag konvertera flera filer parallellt?
scene.open() och scene.save() är synkroniserade. Använd Node.js worker_threads för parallell bearbetning.