Cara Menyimpan Model 3D dalam TypeScript

Cara Menyimpan Model 3D dalam TypeScript

Aspose.3D FOSS for TypeScript menyimpan adegan ke semua format yang didukung dengan satu scene.save() panggilan. Format output terdeteksi secara otomatis dari ekstensi file. Panduan ini mencakup penyimpanan ke setiap format dan penggunaan opsi khusus format.

Panduan Langkah-demi-Langkah

Langkah 1: Instal @aspose/3d

npm install @aspose/3d

Langkah 2: Muat atau Bangun Sebuah Adegan

Baik memuat file yang ada atau membangun adegan secara programatis 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 yang Dideteksi Otomatis

scene.save(path) mendeteksi format output dari ekstensi file:

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 kontrol yang lebih detail, berikan objek opsi 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 (In-Memory)

Gunakan scene.saveToBuffer() untuk mendapatkan output sebagai Buffer tanpa menulis ke disk:

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: Verifikasi Output

Setelah menyimpan, verifikasi bahwa file ada dan memiliki ukuran tidak nol:

import * as fs from 'fs';

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

Matriks Dukungan Format

EkstensiFormatCatatan
.glbglTF 2.0 BinaryDirekomendasikan untuk glTF; semua aset disematkan dalam satu file
.gltfglTF 2.0 JSONTerpisah .bin dan file tekstur di samping JSON
.objWavefront OBJMenulis .mtl file material di samping .obj ketika material tersedia
.stlSTLDefault: binary STL; gunakan StlSaveOptions.ascii = true untuk teks
.fbxAutodesk FBXFormat FBX biner
.3mf3D ManufacturingCocok untuk alur kerja pencetakan 3D
.daeCOLLADAFormat pertukaran berbasis XML

Masalah Umum dan Solusinya

Error: Unsupported format saat menyimpan

Periksa bahwa ekstensi file cocok dengan format yang didukung. Perpustakaan menggunakan ekstensi untuk mendeteksi format; sebuah file bernama output.xyz akan gagal.

.obj file disimpan tetapi material tidak ada

Saat menyimpan OBJ, perpustakaan material (.mtl) ditulis secara otomatis di samping the .obj. Kedua file harus berada di direktori yang sama saat dibuka kembali. Jika Anda hanya membutuhkan geometri, atur ObjSaveOptions.enableMaterials = false.

Besar .gltf dengan tekstur terpisah

Gunakan .glb daripada .gltf; itu menggabungkan data biner menjadi satu file yang berdiri sendiri. Atur GltfSaveOptions.binaryMode = true saat melewatkan sebuah GltfSaveOptions instansi.


Pertanyaan yang Sering Diajukan

Apakah saya dapat menyimpan ke beberapa format dalam satu kali proses?

Ya; panggil scene.save() beberapa kali dengan jalur yang berbeda:

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

Apakah proses menyimpan memodifikasi scene?

Tidak. scene.save() adalah operasi hanya-baca pada grafik adegan. Anda dapat menyimpan adegan yang sama ke beberapa format tanpa efek samping apa pun.

Apakah saya dapat menimpa file sumber?

Ya. Berikan jalur yang sama ke scene.save() yang Anda gunakan di scene.open(). Perpustakaan menulis ke buffer dan kemudian menulis ke disk.


Lihat Juga

 Bahasa Indonesia