Kaip išsaugoti 3D modelius TypeScript kalba
Aspose.3D FOSS for TypeScript išsaugo scenas į visus palaikomus formatus vienu scene.save() kvietimu. Išvesties formatas automatiškai nustatomas pagal failo plėtinį. Ši vadovas apima išsaugojimą į kiekvieną formatą ir formatui būdingų parinkčių naudojimą.
Žingsnis po žingsnio vadovas
Žingsnis 1: Įdiekite @aspose/3d
npm install @aspose/3dStep 2: Įkelti arba sukurti sceną
Arba įkelkite esamą failą, arba sukurkite sceną programiškai prieš išsaugojant.
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();Step 3: Išsaugoti su automatiškai aptiktu formatu
scene.save(path) nustato išvesties formatą pagal failo plėtinį:
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');Step 4: Naudoti formatui būdingus SaveOptions
Norint gauti smulkią kontrolę, perduokite formatui būdingą parametrų objektą:
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);Step 5: Išsaugoti į buferį (atmintyje)
Naudokite scene.saveToBuffer() gauti išvestį kaip Buffer be įrašymo į 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.
Step 6: Patikrinti išvestį
Po išsaugojimo patikrinkite, ar failas egzistuoja ir turi ne nulinį dydį:
import * as fs from 'fs';
const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);Formatų palaikymo matrica
| Plėtinys | Formatas | Pastabos |
|---|---|---|
.glb | glTF 2.0 Binary | Rekomenduojama glTF; visi ištekliai įterpti į vieną failą |
.gltf | glTF 2.0 JSON | Atskirai .bin ir tekstūros failai šalia JSON |
.obj | Wavefront OBJ | Rašo .mtl medžiagos failas šalia .obj kai yra medžiagos |
.stl | STL | Numatyta: binarinis STL; naudokite StlSaveOptions.ascii = true tekstui |
.fbx | Autodesk FBX | Dvejetainis FBX formatas |
.3mf | 3D Manufacturing | Tinka 3D spausdinimo darbo srautams |
.dae | COLLADA | XML pagrindu veikiantis keitimosi formatas |
Dažnos problemos ir sprendimai
Error: Unsupported format išsaugant
Patikrinkite, ar failo plėtinys atitinka palaikomą formatą. Biblioteka naudoja plėtinį formato aptikimui; failas, pavadintas output.xyz nepavyks.
.obj failas išsaugomas, bet medžiagos trūksta
Išsaugant OBJ, medžiagų biblioteka (.mtl) automatiškai rašoma kartu su .obj. Abu failai turi būti toje pačioje kataloge atveriant iš naujo. Jei jums reikia tik geometrijos, nustatykite ObjSaveOptions.enableMaterials = false.
Didelis .gltf su atskirais tekstūromis
Naudokite .glb vietoj .gltf; jis sujungia dvejetainius duomenis į vieną savarankišką failą. Nustatykite GltfSaveOptions.binaryMode = true kai perduodama GltfSaveOptions egzemplys.
Dažniausiai užduodami klausimai
Ar galiu išsaugoti į kelis formatus vienu vykdymu?
Taip; iškvieskite scene.save() kelis kartus su skirtingais keliais:
scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');Ar išsaugojimas keičia sceną?
Ne. scene.save() yra tik skaitymo operacija ant scenos grafiko. Galite išsaugoti tą pačią sceną į kelis formatus be jokių šalutinių poveikių.
Ar galiu perrašyti šaltinio failą?
Taip. Perduokite tą patį kelią į scene.save() kurį naudojote scene.open(). Biblioteka rašo į buferį, o tada į diską.