シーンのレンダリングとエクスポート
@aspose/3d は処理および変換ライブラリであり、GPU レンダリングを実行したり画像ファイルを生成したりしません。このライブラリにおける「レンダリング」とは は、シーンを下流のレンダラー、ゲームエンジン、またはビューアが利用できる形式にエクスポートすることです.
このページでは、すべてのエクスポートパス(ファイル保存、インメモリバッファ出力、フォーマット固有のオプション)と、一般的な下流ターゲット(Three.js、Babylon.js、モデルビューア、ゲームエンジン)向けにシーンを準備する方法を網羅しています。.
基本エクスポート
呼び出し scene.save() にファイルパスを指定します。ライブラリはファイル拡張子から出力形式を推測します::
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('input.obj'); // use a supported format (OBJ, glTF, GLB, STL, 3MF, COLLADA)
scene.save('output.glb'); // GLB (binary glTF)
scene.save('output.stl'); // STL
scene.save('output.dae'); // COLLADA
scene.save('output.3mf'); // 3MF
GLB へのエクスポート(Web とゲーム向けに推奨)
GLB(バイナリ glTF 2.0)は、すべてのメッシュデータ、マテリアル、テクスチャを埋め込んだ単一の自己完結型ファイルです。Web ビューア(Three.js、Babylon.js、model‑viewer)やゲームエンジン(Godot、Unity のインポーター経由)向けに推奨される出力フォーマットです::
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('source.obj');
const opts = new GltfSaveOptions();
opts.binaryMode = true; // produce .glb instead of .gltf + .bin
scene.save('output.glb', opts);
console.log('GLB export complete');設定 binaryMode = true は、自己完結型の GLB ファイルを生成します。When false,、出力は .gltf は、別々の .bin バッファサイドカーです。.
glTF へのエクスポート(検査用 JSON フォーマット)
JSON バリアント (.gltf + .bin) は、JSON が人間に読みやすいため、開発中に便利です::
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('input.dae'); // COLLADA is fully supported; FBX is not wired into scene.open()
const opts = new GltfSaveOptions();
opts.binaryMode = false; // JSON + .bin sidecar
scene.save('output.gltf', opts);STL へのエクスポート(3D プリントワークフロー)
STL はジオメトリのみ(マテリアルやアニメーションは含まれません)。3D プリント用スライサーの標準交換フォーマットです::
import { Scene } from '@aspose/3d';
import { StlSaveOptions } from '@aspose/3d/formats/stl';
const scene = new Scene();
scene.open('model.obj');
const opts = new StlSaveOptions();
opts.binaryMode = true; // binary STL is more compact than ASCII
scene.save('output.stl', opts);設定 binaryMode = false ASCII STL を生成します。これはテキストで読み取れますが、サイズが大きくなります。.
FBX へのエクスポート(DCC ツールワークフロー)
注意: ライブラリには FBX インポーターおよびエクスポーター クラスが存在しますが、FBX フォーマットの自動検出は組み込まれていません scene.open() または scene.save(). scene.save('output.fbx', opts) 呼び出すと .fbx FBX エクスポーターは呼び出されません — 拡張子は保存ディスパッチャで認識されず、呼び出しは OBJ 出力にフォールバックします。次の FbxExporter クラスを直接使用してください。FBX の入出力が必要な場合は。この形式サポート表では FBX が No* この理由で.
Blender、Maya、または Unreal Engine が受け入れる形式にエクスポートする必要がある場合は、代わりに GLB または COLLADA を使用してください — 両方とも完全に組み込まれています scene.save():
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('input.dae');
// GLB is fully supported and widely accepted by DCC tools
const opts = new GltfSaveOptions();
opts.binaryMode = true;
scene.save('output.glb', opts);インメモリエクスポート saveToBuffer()
サーバーレス関数、HTTPレスポンス、ストリーミングパイプライン向けに、直接 a にエクスポートします Buffer ディスクに書き込まずに:
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
function convertToGlbBuffer(inputPath: string): Buffer {
const scene = new Scene();
scene.open(inputPath);
const opts = new GltfSaveOptions();
opts.binaryMode = true;
return scene.saveToBuffer('glb', opts);
}
// Express.js / HTTP response example
// const glbBuffer = convertToGlbBuffer('model.obj');
// res.setHeader('Content-Type', 'model/gltf-binary');
// res.send(glbBuffer);
saveToBuffer() 最初の引数としてフォーマット文字列を受け取ります(例:. 'glb', 'stl', 'obj') と同じオプションオブジェクトを使用します save().
結合 openFromBuffer() と saveToBuffer()
全工程がメモリ上で完結する変換パイプラインで、いかなる段階でもディスク I/O を行いません:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
function objBufferToGlbBuffer(objData: Buffer): Buffer {
const scene = new Scene();
const loadOpts = new ObjLoadOptions();
loadOpts.enableMaterials = true;
scene.openFromBuffer(objData, loadOpts);
const saveOpts = new GltfSaveOptions();
saveOpts.binaryMode = true;
return scene.saveToBuffer('glb', saveOpts);
}特定のレンダラー向けにシーンを準備する
Three.js / Babylon.js(Web)
これらのレンダラーは GLB ファイルをネイティブにロードします。Export with binaryMode = true. ソース OBJ からテクスチャが参照されている場合、ensure the .mtl ロード時に画像ファイルと一緒に配置されていることを確認してください。.
model-viewer(Web コンポーネント)
受け付けます .glb 直接。Three.js と同じエクスポート設定です。.
Godot Engine
Godot のインポーター (Project → Import) を使用して GLB をインポートします。使用 binaryMode = true. Godot は glTF 2.0 の PBR マテリアルをネイティブにサポートしています。.
Blender
最高のインポート忠実度を得るには glTF (output.gltf + output.bin) または GLB (output.glb). Blender の glTF 2.0 インポーターは PBR マテリアルとアニメーションを処理します。注意: FBX 出力は scene.save() はサポートされていません — FBX フォーマットの自動検出は保存ディスパッチャに組み込まれていません。.
3D Printing (Slicers: Cura, PrusaSlicer, Bambu Studio)
STL または 3MF にエクスポートします。カラーや素材メタデータを保持したい場合は 3MF を使用してください。最大の互換性が必要な場合は STL を使用します。.
エクスポート形式比較
| フォーマット | 拡張子 | マテリアル | アニメーション | 単一ファイル | 推奨用途 |
|---|---|---|---|---|---|
| GLB | .glb | PBR (glTF 2.0) | はい | はい | Web、ゲーム、一般配信 |
| glTF | .gltf | PBR (glTF 2.0) | はい | いいえ (+ .bin) | 開発、検査 |
| STL | .stl | いいえ | いいえ | はい | 3D printing, geometry-only |
| FBX | .fbx | Phong/PBR | いいえ* | いいえ* | インポーター/エクスポーターは存在しますが、自動検出に接続されていません |
| COLLADA | .dae | はい | はい | はい | クロス-DCC 交換 |
| 3MF | .3mf | 色/素材 | いいえ | はい | 最新の3Dプリンティング |
一般的なエクスポートの問題
| 症状 | 原因 | 修正 |
|---|---|---|
| 出力されたGLBはビューアでJSONとして開く | binaryMode そのまま false | 設定 opts.binaryMode = true |
| 出力GLBにテクスチャが欠如しています | binaryMode 未設定 | 設定 opts.binaryMode = true 自己完結型 GLB 用 |
| STL ファイルはスライサーで色がありません | STL フォーマットは色をサポートしていません | カラー データには 3MF を使用してください |
saveToBuffer 空のバッファを返します | フォーマット文字列の引数が欠落しているか間違っています | フォーマット文字列を渡してください、例:. 'glb', 'stl',、または 'obj' |
| FBX は Blender でアニメーションなしで開きます | ソースファイル(OBJ/STL)にアニメーションがありません | アニメーションは、ソースに存在する場合にのみ引き継がれます |
| 出力ファイルが非常に大きいです | ソースのOBJに多数の重複頂点があります | GLB バイナリ出力はすでに重複除去されます; ソースアセットの品質を確認してください |
関連項目
- モデルのロード: ディスクやバッファから3Dファイルをロード中
- シーングラフ: エクスポート前にシーンを構築・修正しています
- フォーマットサポート: 完全な読み書きマトリックス
- API 概要: すべてのクラスと列挙体