Jak przekształcić modele 3D w typografię
Aspose.3D FOSS dla TypeScript konwertuje między formatami 3D poprzez ładowanie do neutralnego Scene reprezentowanie i oszczędność do formatu docelowego. ta instrukcja pokazuje najczęstsze konwersje.
Przewodnik krok po kroku
Krok 1: Instalacja @aspose/3d
asposefoss/3d is not yet published — build from source until it ships. See the project README for build instructions.
Krok 2: Pobierz plik źródłowy
Tworzenie A Scene i wezwanie scene.open().Użyj formatu specyficznego *LoadOptions Klasy dla najlepszych wyników.
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: Zapisz do formatu docelowego
Wzywaj scene.save() z trasy wyjścia. format wyjściowy jest wykryty z rozszerzenia pliku.
// OBJ → glTF binary (GLB)
scene.save('output.glb');
// OBJ → STL
scene.save('output.stl');
// OBJ → COLLADA
scene.save('output.dae');Uwaga : FBX jest Nie wspierane przez
scene.save()Auto-detekcja - wskaźnik.fbxnie jest przypisywany do żadnego eksportu - oszczędności na.fbxW zamian użyj OBJ, glTF, STL, 3MF lub COLLADA do niezawodnego wyjścia.
Krok 4: Wspólne przykłady konwersji
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 obsługiwane
Auto-detection FBX nie jest włączony do
scene.open(). A w.fbxArchiwum przekazywane doscene.open()nie jest rozpoznawalny przez dowolnego detektoru formatów i przechodzi do parsera STL, który będzie się nie udał lub wytwarza śmieci. FBX importer / eksporter klasy istnieją w bibliotece ale wymagają bezpośredniego odwołania zamiast wysokiego poziomuopen()/save()Użyj COLLADA, OBJ lub glTF jako alternatywy FBX.
GST do STL
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('model.glb');
scene.save('model.stl');
console.log('Converted GLB → STL');Własność 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: Konwertuj pliki wielokrotne
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}`);
}Wspierane konwersje Matrix
| Od do | GST / GLB | OBJ | STL | FBX | 3MF | COLLADA |
|---|---|---|---|---|---|---|
| OBJ | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| GST / GLB | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| FBX | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| STL | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| 3MF | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| COLLADA | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
FBX Nie wspierane przez wysokie poziomy open()/save() API – format nie jest przełączony do automatycznego wykrywania. wszystkie powyższe komórki FBX są .
Wspólne problemy i rozwiązania
Materiały są utracone po konwersji.
Materiały z zakresu (usemtl, .mtl - są pobierane, gdy ObjLoadOptions.enableMaterials = true.W przypadku oszczędzania na glTF, właściwości materiału PBR są automatycznie mapowane. złożone materiały (proceduralne, wielokładniki) mogą być konwertowane z zmniejszoną lojalnością.
Mesh wydaje się skalić nieprawidłowo
Różne formaty używają różnych podanych jednostek (milimetrów dla STL, metrów do glTF). ObjLoadOptions.scale w trakcie ładowania lub StlSaveOptions.scale Oszczędności do normalizacji jednostek.
System koordynacyjny (modele zderzone lub obrabiane)
Niektóre formaty używają prawego Y-up, inne Z-Up. ObjLoadOptions.flipCoordinateSystem = true lub zastosowanie rotacji do korzeniowego węzła po ładowaniu.
Często zadawane pytania
Czy konwersja zachowuje animacje?
Dane animacyjne są przechowywane podczas konwersji pomiędzy formatami, które go obsługują (np. COLLADA → glTF). STL i OBJ nie przynoszą danych animacyjnych. FBX nie jest obsługiwany przez scene.open()/scene.save(), więc fbx animacji okrągłe ścieżki nie są dostępne za pośrednictwem API na wysokim poziomie.
Czy dane teksturowe są zachowane?
Wprowadzane są tekstury, które są odwoływane do materiałów OBJ lub wbudowane w glTF, przechodzą przez graf sceny. (w przypadku oszczędzania na GLB)binaryMode = true, binary buffer jest wbudowany w jeden plik. dla wyjścia OBJ, tekstury są zapisywane jako oddzielne pliki obok .obj.
Czy mogę konwertować wiele plików równolegle?
scene.open() i scene.save() Wystarczy użyć Node.js worker_threads do równoległego przetwarzania.