Kuinka tallentaa 3D-malleja TypeScriptissä

Kuinka tallentaa 3D-malleja TypeScriptissä

Aspose.3D FOSS TypeScriptille tallentaa kohtaukset kaikkiin tuettuihin formaatteihin yhdellä scene.save() kutsulla. Tulostusformaatti tunnistetaan automaattisesti tiedostopäätteestä. Tämä opas kattaa tallentamisen kuhunkin formaattiin ja formaattikohtaisten asetusten käytön.

Vaiheittainen opas

Vaihe 1: Asenna @aspose/3d

npm install @aspose/3d

Vaihe 2: Lataa tai rakenna kohtaus

Lataa joko olemassa oleva tiedosto tai rakenna kohtaus ohjelmallisesti ennen tallentamista.

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();

Vaihe 3: Tallenna automaattisesti tunnistetulla muodolla

scene.save(path) tunnistaa tulostusformaatin tiedostopäätteestä:

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');

Vaihe 4: Käytä formaattiin perustuvia SaveOptions-asetuksia

Hienojakoista hallintaa varten anna formaattiin perustuva asetuskohde:

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);

Vaihe 5: Tallenna puskuriin (muistissa)

Käytä scene.saveToBuffer() saadaksesi tulosteen muodossa Buffer kirjoittamatta levylle:

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.

Vaihe 6: Vahvista tulos

Tallennuksen jälkeen tarkista, että tiedosto on olemassa eikä sen koko ole nolla:

import * as fs from 'fs';

const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);

Formaattituen matriisi

PääteFormaattiHuomautuksia
.glbglTF 2.0 BinarySuositeltu glTF:lle; kaikki resurssit upotettu yhteen tiedostoon
.gltfglTF 2.0 JSONErillinen .bin ja tekstuuritiedostot JSON:n rinnalla
.objWavefront OBJKirjoittaa .mtl materiaalitiedosto rinnalla .obj kun materiaaleja on
.stlSTLOletus: binaarinen STL; käytä StlSaveOptions.ascii = true tekstille
.fbxAutodesk FBXBinäärinen FBX-muoto
.3mf3D ManufacturingSopiva 3D-tulostuksen työnkulkuihin
.daeCOLLADAXML-pohjainen vaihtomuoto

Yleisiä ongelmia ja korjauksia

Error: Unsupported format tallennettaessa

Varmista, että tiedostopääte vastaa tuettua formaattia. Kirjasto käyttää päätettä formaatin tunnistamiseen; tiedosto nimeltä output.xyz epäonnistuu.

.obj tiedosto tallentuu, mutta materiaalit puuttuvat

Kun tallennetaan OBJ, materiaalikirjasto (.mtl) kirjoitetaan automaattisesti tiedoston .obj. Molempien tiedostojen on oltava samassa hakemistossa uudelleenavausta varten. Jos tarvitset vain geometrian, aseta ObjSaveOptions.enableMaterials = false.

Suuri .gltf erillisten tekstuurien kanssa

Käytä .glb sen sijaan että .gltf; se pakkaa binääridatan yhdeksi itsenäiseksi tiedostoksi. Aseta GltfSaveOptions.binaryMode = true kun siirretään GltfSaveOptions instanssi.


Usein kysytyt kysymykset

Voinko tallentaa useisiin formaatteihin yhdellä suorituksella?

Kyllä; kutsu scene.save() useita kertoja eri poluilla:

scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');

Muuttaako tallentaminen scenea?

Ei. scene.save() on vain luku -toiminto kohtausgraafissa. Voit tallentaa saman kohtauksen useisiin formaatteihin ilman sivuvaikutuksia.

Voinko korvata lähdetiedoston?

Kyllä. Anna sama polku kohteelle scene.save() jota käytit kohteessa scene.open(). Kirjasto kirjoittaa puskurin ja sitten levylle.


Katso myös

 Suomi