PythonでFBXをglTFに変換する方法

PythonでFBXをglTFに変換する方法

問題

開発者は、Web ビューア、ゲームエンジン、最新のレンダリングパイプラインで使用するために、FBX 3D モデルファイルを glTF または GLB 形式に変換する必要があります。Aspose.3D は、FBX ファイルを読み込むために Scene.from_file() を使用し、glTF 出力を書き込むために scene.save() を使用してこれを処理します。

FBX サポートに関する注意: Aspose.3D FOSS は 実験的 な FBX サポートを提供しています。FBX トークナイザーは実装されていますが、パーサーには既知の構造上のバグがあります:CLOSE_BRACKET の不正な処理や、複雑な入れ子 FBX スコープでの無制限再帰です。複雑または大規模な FBX ファイルは RecursionError を引き起こす可能性があります。単純なフラットジオメトリの FBX は動作する場合があります。本番環境では、FBX よりも COLLADA、OBJ、または glTF を優先してください。詳細は FAQ を参照してください。

前提条件

  • Python 3.7 以降
  • pip でインストール: pip install aspose-3d-foss
from aspose.threed import Scene

変換手順

ステップ 1: FBX ファイルをロードする

Scene.from_file() を使用して FBX ファイルをロードします。形式は .fbx 拡張子から自動的に検出されます。

from aspose.threed import Scene

scene = Scene.from_file("input.fbx")

ステップ 2: glTF バイナリ (GLB) に保存

scene.save().glb 拡張子で呼び出し、出力をコンパクトなバイナリ glTF ファイルとして書き込みます。形式は拡張子から自動的に推測されます。これは推奨されるアプローチです:単一ファイル、コンパクト、そして広く互換性があります。

# Use the .glb extension for binary GLB output (auto-detected)
scene.save("output.glb")

注: FileFormat.GLTF2_BINARYFileFormat.GLTF は現在のライブラリバージョンの None スタブ定数であり、scene.save() に渡すべきではありません。ファイル拡張子の自動検出または FileFormat.GLTF2() ファクトリメソッドを使用してください。

代わりに JSON glTF として保存するには:

scene.save("output.gltf")

ステップ 3: (オプション) GltfSaveOptions を使用する

glTF 出力をより細かく制御するには、GltfSaveOptions オブジェクトを渡します:

from aspose.threed.formats import GltfSaveOptions

opts = GltfSaveOptions()
opts.binary_mode = True
scene.save("output.glb", opts)

コード例

3 行で FBX から GLB への完全変換:

from aspose.threed import Scene

scene = Scene.from_file("input.fbx")
scene.save("output.glb")  # .glb extension triggers binary GLB output automatically

print("Conversion complete: input.fbx -> output.glb")

サポートされている出力形式

FBXから変換する場合、次の出力フォーマットは確実に動作します:

出力形式拡張子指定方法
glTF 2.0 binary.glb拡張子自動検出 (または FileFormat.GLTF2())
glTF 2.0 JSON.gltf拡張子自動検出 (または FileFormat.GLTF2())
Wavefront OBJ.obj拡張子自動検出
STL.stl拡張子自動検出
Microsoft 3MF.3mf拡張子自動検出 (または FileFormat.MICROSOFT_3MF_FORMAT())

Note: FileFormat.GLTF2_BINARYFileFormat.GLTF、およびFileFormat.MICROSOFT_3MFNoneスタブ定数であり、scene.save()に渡してはいけません。ファイル拡張子の自動検出または上記のファクトリメソッドを使用してください。

参照

 日本語