Perl日記

日々の知ったことのメモなどです。Perlは最近やってないです。

bvh を fbx に変換する。Blender の Python を使う。Blender の background モードで bat で動かす。

bvh ファイルを fbx に変換したくて、見よう見まねでやってみたメモ。

  • Windows 10
  • blender をインストールする
  • blender コマンドが使えることを確認
  • 入力の bvh ファイルたちがあるフォルダは bat ファイル内に記述
  • 出力の fbx たち用のフォルダは python スクリプトに記述
Blender バージョン
PS C:\> blender --version
Blender 2.83.20
bvh_fbx.bat
@echo off

for %%f in (C:\Users\r9\Desktop\data\*.bvh) do (
    echo %%f
    blender --background --python C:\Users\r9\Desktop\convert.py -- %%f
)

pause
convert.py
import bpy
import sys
from pathlib import Path

output_dir_path = 'C:\\Users\\r9\\Desktop\\fbxoutput\\'

def import_and_export(path):
    bpy.ops.import_anim.bvh(
        filepath=str(path),
        filter_glob='*.bvh',
        target='ARMATURE',
        global_scale=1,
        frame_start=1,
        use_fps_scale=False,
        use_cyclic=False,
        rotate_mode='NATIVE',
        axis_forward='-Z',
        axis_up='Y'
    )
    fbx_out = output_dir_path + path.name + '.fbx'
    print(fbx_out)
    bpy.ops.export_scene.fbx(
        filepath=fbx_out, 
        axis_forward='-Z', 
        axis_up='Y', 
        use_selection=True 
    )

def main():
    print(sys.argv[-1])
    import_and_export(Path(sys.argv[-1]))

if __name__ == '__main__':
    main()

実行

PS C:\Users\r9\Desktop> .\bvh_fbx.bat

感想
想像以上に bpy 経由で Blender を操作できるようで、驚いた。