3D modellek mentése TypeScript-ben

3D modellek mentése TypeScript-ben

Aspose.3D FOSS a TypeScript-hez minden támogatott formátumba menti a jeleneteket egyetlen scene.save() hívással. A kimeneti formátum automatikusan a fájlkiterjesztés alapján kerül felismerésre. Ez az útmutató bemutatja a mentést minden formátumba, valamint a formátum-specifikus beállítások használatát.

Lépésről lépésre útmutató

1. lépés: Telepítse az @aspose/3d csomagot

npm install @aspose/3d

2. lépés: Jelenet betöltése vagy létrehozása

Vagy töltsön be egy meglévő fájlt, vagy programozottan építsen fel egy jelenetet a mentés előtt.

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

3. lépés: Mentés automatikusan észlelt formátummal

scene.save(path) a kimeneti formátumot a fájlkiterjesztés alapján észleli:

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

4. lépés: Formátum-specifikus SaveOptions használata

Finomhangolt vezérléshez adjon át egy formátum-specifikus opciós objektumot:

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

5. lépés: Mentés Bufferbe (memóriában)

Használja scene.saveToBuffer() a kimenet megszerzéséhez, mint egy Buffer lemezre írás nélkül:

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.

6. lépés: A kimenet ellenőrzése

Mentés után ellenőrizze, hogy a fájl létezik-e, és hogy nem nulla méretű-e:

import * as fs from 'fs';

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

Formátumtámogatási mátrix

KiterjesztésFormátumMegjegyzések
.glbglTF 2.0 binárisAjánlott glTF-hez; minden eszköz egyetlen fájlba beágyazva
.gltfglTF 2.0 JSONKülön .bin és a textúra fájlok a JSON mellett
.objWavefront OBJÍrás .mtl anyagfájl a mellette .obj ha anyagok jelen vannak
.stlSTLAlapértelmezett: bináris STL; használja StlSaveOptions.ascii = true szöveghez
.fbxAutodesk FBXBináris FBX formátum
.3mf3D ManufacturingAlkalmas 3D nyomtatási munkafolyamatokhoz
.daeCOLLADAXML-alapú csereformátum

Gyakori problémák és megoldások

Error: Unsupported format mentéskor

Ellenőrizze, hogy a fájlkiterjesztés egyezik-e egy támogatott formátummal. A könyvtár a kiterjesztést használja a formátum felismeréséhez; egy olyan fájl, amelynek a neve output.xyz sikertelen lesz.

.obj a fájl mentésre kerül, de a anyagok hiányoznak

OBJ mentésekor az anyagkönyvtár (.mtl) automatikusan a .obj. Mindkét fájlnak ugyanabban a könyvtárban kell lennie a megnyitáskor. Ha csak a geometriára van szüksége, állítsa be ObjSaveOptions.enableMaterials = false.

Nagy .gltf különálló textúrákkal

Használja .glb helyett .gltf; egyetlen önálló fájlba csomagolja a bináris adatokat. Állítsa be GltfSaveOptions.binaryMode = true amikor átadunk egy GltfSaveOptions példányt.


Gyakran Ismételt Kérdések

Menthetek több formátumba egy futtatás során?

Igen; hívd scene.save() többször különböző útvonalakkal:

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

Módosítja a mentés a jelenetet?

Nem. scene.save() csak olvasási művelet a jelenet gráfon. A jelenetet ugyanazt több formátumba is mentheted mellékhatás nélkül.

Felülírhatom a forrásfájlt?

Igen. Add meg ugyanazt az elérési utat a scene.save() amelyet a(z) scene.open(). A könyvtár egy pufferbe ír, majd a lemezre ír.


Lásd még

 Magyar