Kaip išsaugoti 3D modelius TypeScript kalba

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/3d

Step 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ėtinysFormatasPastabos
.glbglTF 2.0 BinaryRekomenduojama glTF; visi ištekliai įterpti į vieną failą
.gltfglTF 2.0 JSONAtskirai .bin ir tekstūros failai šalia JSON
.objWavefront OBJRašo .mtl medžiagos failas šalia .obj kai yra medžiagos
.stlSTLNumatyta: binarinis STL; naudokite StlSaveOptions.ascii = true tekstui
.fbxAutodesk FBXDvejetainis FBX formatas
.3mf3D ManufacturingTinka 3D spausdinimo darbo srautams
.daeCOLLADAXML 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ą.


Žr. taip pat

 Lietuvių