Cara Menyimpan Model 3D dalam TypeScript

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

Langkah 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

SambunganFormatNota
.glbglTF 2.0 BinaryDisyorkan untuk glTF; semua aset disematkan dalam satu fail
.gltfglTF 2.0 JSONBerasingan .bin dan fail tekstur bersama JSON
.objWavefront OBJMenulis .mtl fail bahan bersama .obj apabila bahan ada
.stlSTLLalai: STL binari; gunakan StlSaveOptions.ascii = true untuk teks
.fbxAutodesk FBXFormat FBX binari
.3mf3D ManufacturingSesuai untuk aliran kerja pencetakan 3D
.daeCOLLADAFormat 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.


Lihat Juga

 Bahasa Melayu