Jak uložit 3D modely v TypeScriptu
Aspose.3D FOSS pro TypeScript ukládá scény do všech podporovaných formátů jedním scene.save() voláním. 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čtěte nebo vytvořte scénu
Buď načtěte existující soubor, nebo programově vytvořte scénu 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žte 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 jemnější kontrolu předávejte objekt s formátově specifickými možnostmi:
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žte do bufferu (v paměti)
Použijte scene.saveToBuffer() pro 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('output.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`);Tabulka podpory formátů
| Přípona | Formát | Poznámky |
|---|---|---|
.glb | glTF 2.0 Binary | Doporučeno pro glTF; všechny assety jsou vloženy do jediného souboru |
.gltf | glTF 2.0 JSON | Samostatné .bin a soubory textur vedle JSON |
.obj | Wavefront OBJ | Zapíše .mtl soubor materiálu vedle .obj když 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 | Výměnný formát 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) zapíše automaticky vedle .obj. Oba soubory musí být při opětovném otevření ve stejném adresáři. Pokud potřebujete jen geometrii, nastavte ObjSaveOptions.enableMaterials = false.
Velké .gltf s oddělenými texturami
Použijte .glb namísto .gltf; sloučí binární data do jediného samostatného souboru. Nastavte GltfSaveOptions.binaryMode = true při předávání GltfSaveOptions instance.
Č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');Mění ukládání scénu?
Ne. scene.save() je operace jen pro čtení na 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 poté na disk.