Cara Menyimpan Model 3D dalam TypeScript
Aspose.3D FOSS untuk TypeScript menyimpan adegan ke semua format yang disokong dengan satu scene.save() panggilan. Format output dikesan secara automatik daripada sambungan fail. Panduan ini merangkumi cara menyimpan ke setiap format dan menggunakan pilihan khusus format.
Panduan Langkah demi Langkah
Langkah 1: Pasang @aspose/3d
npm install @aspose/3dLangkah 2: Muat atau Bina Sebuah Adegan
Sama ada muat fail sedia ada atau bina adegan secara programatik sebelum menyimpan.
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();Langkah 3: Simpan dengan Format Dikesan Secara Automatik
scene.save(path) mengesan format output daripada sambungan fail:
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');Langkah 4: Gunakan SaveOptions Khusus Format
Untuk kawalan terperinci, hantarkan objek pilihan khusus format:
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);Langkah 5: Simpan ke Buffer (Dalam Memori)
Gunakan scene.saveToBuffer() untuk mendapatkan output sebagai a Buffer tanpa menulis ke cakera:
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.
Langkah 6: Sahkan Output
Selepas menyimpan, sahkan fail wujud dan mempunyai saiz bukan sifar:
import * as fs from 'fs';
const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);Matriks Sokongan Format
| Sambungan | Format | Nota |
|---|---|---|
.glb | glTF 2.0 Binary | Disyorkan untuk glTF; semua aset disematkan dalam satu fail |
.gltf | glTF 2.0 JSON | Berasingan .bin dan fail tekstur bersama JSON |
.obj | Wavefront OBJ | Menulis .mtl fail bahan bersama .obj apabila bahan ada |
.stl | STL | Lalai: STL binari; gunakan StlSaveOptions.ascii = true untuk teks |
.fbx | Autodesk FBX | Format FBX binari |
.3mf | 3D Manufacturing | Sesuai untuk aliran kerja pencetakan 3D |
.dae | COLLADA | Format pertukaran berasaskan XML |
Isu Umum dan Penyelesaian
Error: Unsupported format semasa menyimpan
Pastikan sambungan fail sepadan dengan format yang disokong. Perpustakaan menggunakan sambungan untuk mengesan format; fail yang bernama output.xyz akan gagal.
.obj fail disimpan tetapi bahan hilang
Apabila menyimpan OBJ, perpustakaan bahan (.mtl) ditulis secara automatik bersama .obj. Kedua-dua fail mesti berada dalam direktori yang sama semasa dibuka semula. Jika anda hanya memerlukan geometri, tetapkan ObjSaveOptions.enableMaterials = false.
Besar .gltf dengan tekstur berasingan
Gunakan .glb daripada .gltf; ia menggabungkan data binari ke dalam satu fail berdiri sendiri. Tetapkan GltfSaveOptions.binaryMode = true apabila menghantar satu GltfSaveOptions instans.
Soalan Lazim
Bolehkah saya menyimpan ke pelbagai format dalam satu operasi?
Ya; panggil scene.save() berulang kali dengan laluan yang berbeza:
scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');Adakah penyimpanan mengubah suai scene?
Tidak. scene.save() adalah operasi baca-sahaja pada graf adegan. Anda boleh menyimpan adegan yang sama ke dalam pelbagai format tanpa sebarang kesan sampingan.
Bolehkah saya menimpa fail sumber?
Ya. Hantar laluan yang sama kepada scene.save() yang anda gunakan dalam scene.open(). Perpustakaan menulis ke penampan dan kemudian menulis ke cakera.