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/3d2. 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és | Formátum | Megjegyzések |
|---|---|---|
.glb | glTF 2.0 bináris | Ajánlott glTF-hez; minden eszköz egyetlen fájlba beágyazva |
.gltf | glTF 2.0 JSON | Külön .bin és a textúra fájlok a JSON mellett |
.obj | Wavefront OBJ | Írás .mtl anyagfájl a mellette .obj ha anyagok jelen vannak |
.stl | STL | Alapértelmezett: bináris STL; használja StlSaveOptions.ascii = true szöveghez |
.fbx | Autodesk FBX | Bináris FBX formátum |
.3mf | 3D Manufacturing | Alkalmas 3D nyomtatási munkafolyamatokhoz |
.dae | COLLADA | XML-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.