TypeScript で 3D モデルを保存する方法

TypeScript で 3D モデルを保存する方法

Aspose.3D FOSS for TypeScript は、単一の scene.save() 呼び出しで行います。出力形式はファイル拡張子から自動的に検出されます。このガイドでは、各形式への保存方法と形式固有のオプションの使用方法を説明します。.

ステップバイステップ ガイド

ステップ 1: @aspose/3d をインストール

npm install @aspose/3d

ステップ 2: シーンをロードまたは構築する

保存する前に、既存のファイルをロードするか、プログラムでシーンを構築します。.

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: 自動検出された形式で保存する

scene.save(path) はファイル拡張子から出力形式を検出します:

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: 形式固有の SaveOptions を使用する

細かい制御が必要な場合は、形式固有のオプションオブジェクトを渡します:

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: バッファ(メモリ内)に保存する

使用します scene.saveToBuffer() 出力を取得するには Buffer ディスクに書き込まずに:

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: 出力を検証する

保存後、ファイルが存在し、サイズがゼロでないことを確認します:

import * as fs from 'fs';

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

形式サポートマトリックス

拡張子形式備考
.glbglTF 2.0 バイナリglTF に推奨; すべてのアセットが単一ファイルに埋め込まれています
.gltfglTF 2.0 JSON分離 .bin JSON と同時にテクスチャ ファイル
.objWavefront OBJ書き込み .mtl マテリアル ファイル と一緒に .obj マテリアルがある場合
.stlSTLデフォルト: バイナリ STL; 使用 StlSaveOptions.ascii = true テキスト用
.fbxAutodesk FBXバイナリ FBX フォーマット
.3mf3D Manufacturing3Dプリントのワークフローに適しています
.daeCOLLADAXMLベースのインターチェンジ形式

一般的な問題と対策

Error: Unsupported format 保存時

ファイル拡張子がサポートされている形式と一致しているか確認してください。ライブラリは拡張子で形式を検出します。ファイル名が output.xyz の場合は失敗します。.

.obj ファイルは保存されますが、マテリアルが欠落しています

OBJ を保存する際、マテリアルライブラリ (.mtl) は自動的に以下と同時に書き込まれます .obj.。再度開くときは両方のファイルが同じディレクトリにある必要があります。ジオメトリだけが必要な場合は、設定してください ObjSaveOptions.enableMaterials = false.

Large .gltf 別々のテクスチャで

使用する .glb の代わりに .gltf; バイナリデータを単一の自己完結型ファイルにまとめます。設定 GltfSaveOptions.binaryMode = true を渡す際に GltfSaveOptions インスタンス。.


よくある質問

1 回の実行で複数のフォーマットに保存できますか??

はい; 呼び出す scene.save() 異なるパスで複数回::

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

保存するとシーンが変更されますか??

いいえ。. scene.save() はシーングラフに対する読み取り専用操作です。同じシーンを複数のフォーマットに保存しても副作用はありません。.

元のファイルを上書きできますか??

はい。 同じパスを scene.save() で使用した scene.open(). ライブラリはバッファに書き込み、そしてディスクに書き込みます。.


参照

 日本語