【Blender】FBXをglTF形式に一括変換するPythonスクリプト

Pocket
LinkedIn にシェア
LINEで送る

所用で元々持っている大量のFBXファイルを一旦全部glTF形式(.glbバイナリ)に変換する必要が出てしまって、手でやっていられないのと、Blenderだったら出来るのかなと思ってやったらあっさりできたので。

How to convert FBX to glTF or glb.

やり方

例えばこんなファイル階層のアセットデータだった場合ですが。

考え方

以下の順序で動いてくれればいいと考えた。あとはBlender APIから目的の処理を探すだけ。

  1. 処理したいフォルダの先頭から、再帰的にすべてのFBXファイルの絶対パスを得る。
  2. Blenderのコレクション内のオブジェクトを全部削除する。
  3. FBXファイルをインポートする
  4. glTF(.glb)形式でエクスポートする
  5. 以上の処理を絶対パスの数だけ繰り返す

スクリプト

#
#FBXをインポートして、glbファイルでエクスポートするスクリプト
#

import glob
import os
import pathlib
from os.path import abspath, join, split

#ルートディレクトリから再帰的に検索してFBXファイルの絶対パスを得る
files = glob.glob('D:/Projects/Data/Model/FBX/**/*.fbx', recursive=True)
for file in files:
    print(file) #debug...
    name = os.path.splitext(os.path.basename(file))[0]
    dir = os.path.dirname(file) 
    dir_path = pathlib.Path(file)
    file_out = dir_out + '/' + name + '.glb'
    print(' [export] ' + file_out)
    # all remove
    bpy.ops.object.select_all(action="SELECT")
    bpy.ops.object.delete(True)
    # import fbx
    bpy.ops.import_scene.fbx(filepath=file)
    # export gltf (.glb)
    bpy.ops.export_scene.gltf(filepath=file_out, export_format='GLB', ui_tab='GENERAL')

補足説明

glob.glob(‘D:/Projects/Data/Model/FBX/**/*.fbx’, recursive=True)

glob.glob()関数ですが、
  ・recursive=Trueで再帰的な処理ができます。
  ・検索ワードは {ディレクトリのパス}/**/*.{拡張子} と書くことで拡張子指定できます。

name = os.path.splitext(os.path.basename(file))[0]

拡張子を除いたファイル名を得ることが出来ます。
  (例)
  file = ‘D:/Projects/Data/Model/FBX/Animal/Cat/Cat01.fbx’ のとき
  name = Cat01 となる

Blenderのコマンド

bpy.ops.object.select_all(action=”SELECT”) #すべてを選択します。Aキーと同じ
bpy.ops.object.delete(True) #削除します。Deleleキーと同じ

bpy.ops.import_scene.fbx(filepath=file)
  FBXファイルをインポートします。
  メニュの[file]→[import]→[fbx]→[ファイルを選択してOK]と同じ動作。
  細かいオプションはBlender Python APIリファレンスを見ると載っています。

bpy.ops.export_scene.gltf(filepath=file_out, export_format=’GLB’, ui_tab=’GENERAL’)
  glbファイルをエクスポートします。
  メニュの[file]→[export]→[gltf→[ファイル名を入力してOK]と同じ動作。
  細かいオプションはBlender Python APIリファレンスを見ると載っています。

参考サイト

Export Scene Operators – Blender Python API
Import Scene Operators – Blender Python API

記事の情報はお役に立ちましたか?

ご支援も承っています。
ご注意:返金のご対応はいたしかねます。あくまでも投げ銭としての位置付けであり、優待・特典等はございません。ご了承下さい。

18107:【Blender】FBXをglTF形式に一括変換するPythonスクリプト

v3

管理人が読んだおすすめの建築本

    

コメントを残す