Jak uložit 3D modely v TypeScriptu
Aspose.3D FOSS for TypeScript ukládá scény do všech podporovaných formátů jedním voláním scene.save(). Výstupní formát je automaticky detekován z přípony souboru. Tento průvodce popisuje ukládání do jednotlivých formátů a používání formátově specifických možností.
Průvodce krok za krokem
Krok 1: Nainstalujte @aspose/3d
npm install @aspose/3dKrok 2: Načíst nebo vytvořit scénu
Buď načtěte existující soubor, nebo vytvořte scénu programově před uložením.
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
// Load from file
const scene = new Scene();
scene.open('source.obj', new ObjLoadOptions());
// Or create a new empty scene
const emptyScene = new Scene();Krok 3: Uložit s automaticky detekovaným formátem
scene.save(path) detekuje výstupní formát z přípony souboru:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
scene.open('input.obj', new ObjLoadOptions());
// Save as binary glTF
scene.save('output.glb');
// Save as JSON glTF
scene.save('output.gltf');
// Save as STL
scene.save('output.stl');
// Save as OBJ
scene.save('output.obj');
// Save as FBX
scene.save('output.fbx');
// Save as 3MF
scene.save('output.3mf');
// Save as COLLADA
scene.save('output.dae');Krok 4: Použijte formátově specifické SaveOptions
Pro jemnozrnou kontrolu předávejte objekt s možnostmi specifickými pro formát:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());
// Export to GLB with specific options
const saveOptions = new GltfSaveOptions();
saveOptions.binaryMode = true; // produce GLB (binary glTF)
scene.save('output.glb', saveOptions);Krok 5: Uložit do vyrovnávací paměti (v paměti)
Použijte scene.saveToBuffer() k získání výstupu jako Buffer bez zápisu na disk:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());
const buffer = scene.saveToBuffer('glb');
console.log(`Buffer size: ${buffer.length} bytes`);
// Send via HTTP, upload to S3, etc.
Krok 6: Ověřte výstup
Po uložení ověřte, že soubor existuje a má nenulovou velikost:
import * as fs from 'fs';
const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);Matrice podpory formátů
| Rozšíření | Formát | Poznámky |
|---|---|---|
.glb | glTF 2.0 Binary | Doporučeno pro glTF; všechny prostředky jsou vloženy do jediného souboru |
.gltf | glTF 2.0 JSON | Samostatné .bin a soubory textur vedle JSON |
.obj | Wavefront OBJ | Zapíše soubor materiálu .mtl vedle .obj, pokud jsou materiály přítomny |
.stl | STL | Výchozí: binární STL; použijte StlSaveOptions.ascii = true pro text |
.fbx | Autodesk FBX | Binární formát FBX |
.3mf | 3D Manufacturing | Vhodné pro workflow 3D tisku |
.dae | COLLADA | Formát výměny založený na XML |
Běžné problémy a opravy
Error: Unsupported format při ukládání
Zkontrolujte, že přípona souboru odpovídá podporovanému formátu. Knihovna používá příponu k detekci formátu; soubor pojmenovaný output.xyz selže.
.obj soubor se uloží, ale materiály chybí
Při ukládání OBJ se knihovna materiálů (.mtl) automaticky zapíše vedle .obj. Oba soubory musí být ve stejném adresáři při opětovném otevření. Pokud potřebujete pouze geometrii, nastavte ObjSaveOptions.enableMaterials = false.
Velký .gltf s oddělenými texturami
Použijte .glb místo .gltf; balí binární data do jediného samostatného souboru. Nastavte GltfSaveOptions.binaryMode = true při předávání instance GltfSaveOptions.
Často kladené otázky
Mohu uložit do více formátů během jednoho spuštění?
Ano; zavolejte scene.save() vícekrát s různými cestami:
scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');Modifikuje ukládání scénu?
Ne. scene.save() je operace jen pro čtení v grafu scény. Můžete uložit stejnou scénu do více formátů bez jakýchkoli vedlejších účinků.
Mohu přepsat zdrojový soubor?
Ano. Předávejte stejnou cestu do scene.save(), kterou jste použili v scene.open(). Knihovna zapisuje do vyrovnávací paměti a pak zapisuje na disk.