Jak přeměnit 3D modely do TypeScriptu
Aspose.3D FOSS pro TypeScript konvertuje mezi 3D formáty načtením do neutrálního Scene Tato příručka ukazuje nejčastější konverze.
Krok za krokem
Krok 1: Nainstalovat @aspose/3d
asposefoss/3d is not yet published — build from source until it ships. See the project README for build instructions.
Krok 2: Nahrát zdrojový soubor
Vytvořit Scene a zavolat. scene.open().Použijte formát specifický pro … *LoadOptions třída pro nejlepší 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žit do cílového formátu
Zavolej . scene.save() Výstupní formát je detekován z rozšíření souboru.
// OBJ → glTF binary (GLB)
scene.save('output.glb');
// OBJ → STL
scene.save('output.stl');
// OBJ → COLLADA
scene.save('output.dae');Poznámka: FBX je … nepodporované v.
scene.save()Autodetekce..fbxRozšíření není propojeno s žádným vývozcem šetří se na.fbxPoužijte OBJ, glTF, STL, 3MF nebo COLLADA pro spolehlivý výstup.
Krok 4: Obvyklé příklady konverze
OBJ na 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 Nedostává podporu
FBX automatické detekce není připojená.
scene.open(). A … a ….fbxsoubor předán do:scene.open()FBX importér/exportér třídy existují v knihovně, ale vyžadují přímé volání spíše než vysokorovné.open()/save()Použijte COLLADA, OBJ nebo glTF jako alternativu k FBX.
glTF na STL
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('model.glb');
scene.save('model.stl');
console.log('Converted GLB → STL');COLLADA na 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: Srovnávejte více souborů v dávkách
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í matice
| Od \ Do | glTF/GLB | OBJ | STL | FBX | 3MF | COLLADA |
|---|---|---|---|---|---|---|
| OBJ | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| glTF/GLB | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| FBX | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| STL | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| 3MF | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| COLLADA | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
FBX není podporována prostřednictvím vysoké úrovně open()/save() API formát není připojen k automatickému detekci. Všechny výše uvedené buňky FBX jsou ?? .
Obvyklé problémy a řešení
Materiály se po přeměně ztrácejí.
Materiály OBJ (usemtl, .mtl soubor) jsou načteny, když ObjLoadOptions.enableMaterials = true.Při ukládání do GLTF se vlastnosti materiálů PBR automaticky mapují. Komplexní materiály (procesorové, vícevrstvé) mohou přeměňovat s sníženou věrností.
Obecné rozměry síťových pásů jsou nesprávně vyznačeny.
Různé formáty používají různé výchozí jednotky (milimetry pro STL, metry za glTF). ObjLoadOptions.scale při nakládání nebo StlSaveOptions.scale při šetření na normalizaci jednotek.
Nesoulad souřadnicového systému (model převrácen nebo otočen)
Některé formáty používají pravou ruku Y-up, jiní Z- up. ObjLoadOptions.flipCoordinateSystem = true nebo po naložení použít rotaci na kořenový uzel.
Časté otázky
Zachovává konverze animace?
Daty animace jsou uchovávány při konverzi mezi formáty, které je podporují (např. COLLADA → glTF). STL a OBJ neobsahují data animací. FBX není podporován prostřednictvím scene.open()/scene.save(), takže FBX animace a jízdy v obvodu nejsou k dispozici prostřednictvím API na vysoké úrovni.
Jsou zachovány texturní údaje?
Textury, na které odkazuje materiál OBJ nebo jsou vkládány do GLTF, se přenášejí do grafu scény.binaryMode = truePro výstup OBJ jsou textury uloženy jako samostatné soubory vedle datového systému. .obj.
Můžu konverzovat mnoho souborů paralelně?
scene.open() a) scene.save() jsou synchronní. Použijte Node.js worker_threads pro paralelní zpracování.