どうも、ぼくです。
久々にBlenderPythonネタ(+Apple Script)。
OS X 10.10.3、Blender 2.74 RC1 上で試しました。
えーと、FBXファイルを自動的に開けないかなー、っていうツイートを見かけて、
「そういえばなんか(別の形のものを)みたような気がする」ということで。
Blender開いて、メニューからImportコマンド呼び出してファイル指定して…っていう手間を省こうというわけですね。
とりあえず「OBJファイルを開くと自動的にBlenderにインポートされた状態にする」というのを書いて(?)みました。多分test.pyにきちんとファイルパスが渡ればなんとかなると思うので、他のOSの環境でも少しごにょごにょしたら同じようにできるかも。
では早速。Blender起動時に読み込ませるPythonスクリプトと、起動時にオプションを渡すAppleスクリプトの2つで実現します。
以下のファイルをtest.py という名前でデスクトップに置いておきます。
起動用のAppleScriptは以下。スクリプトエディタで作成します。スクリプトエディタの再生ボタンを押すと実行されます。
なお、blenderの実行ファイルのパス等々は環境に合わせて設定してください。
使用する流れとしては、スクリプトエディタからAppleScriptを実行するとファイルダイアログ出現、objファイルを開くとBlenderが起動してインポートされている、という感じ。
ちなみに当方ではスクリプト書いただけでアプリケーションにしたりファイル関連付けたりしてないので、スクリプトエディタからの実行のみ確認にとどめています。
種明かしをすると、最後にある引数のファイル名を起動時オプション'-P'で指定したtest.py内でOBJインポートするようにしている、という。
[追記]FBXのインポートは上記のスクリプトの bpy.ops.import_scene.obj()の部分を以下のように書き換えてみると?
[追記2]Windowsのバッチファイルだとこんな感じですかね?
[追記3] ファイルの拡張子を見て適宜インポートする(fbx,obj)版を http://www.pasteall.org/57317/python に置いています。
参考にしたページ
久々にBlenderPythonネタ(+Apple Script)。
OS X 10.10.3、Blender 2.74 RC1 上で試しました。
えーと、FBXファイルを自動的に開けないかなー、っていうツイートを見かけて、
BlenderにOBJやFBXファイルを関連付けして直接開けるようにできたら楽なんだけどなー。方法ないのかな?
— kurosawa (@kurosaurus) March 14, 2015
「そういえばなんか(別の形のものを)みたような気がする」ということで。
Blender開いて、メニューからImportコマンド呼び出してファイル指定して…っていう手間を省こうというわけですね。
とりあえず「OBJファイルを開くと自動的にBlenderにインポートされた状態にする」というのを書いて(?)みました。多分test.pyにきちんとファイルパスが渡ればなんとかなると思うので、他のOSの環境でも少しごにょごにょしたら同じようにできるかも。
では早速。Blender起動時に読み込ませるPythonスクリプトと、起動時にオプションを渡すAppleスクリプトの2つで実現します。
以下のファイルをtest.py という名前でデスクトップに置いておきます。
import bpy
import sys
def delete_all():
for item in bpy.context.scene.objects:
bpy.context.scene.objects.unlink(item)
for item in bpy.data.objects:
bpy.data.objects.remove(item)
for item in bpy.data.meshes:
bpy.data.meshes.remove(item)
for item in bpy.data.materials:
bpy.data.materials.remove(item)
if __name__ == "__main__":
delete_all()
bpy.ops.import_scene.obj(filepath=sys.argv[-1], axis_forward='-Z', axis_up='Y' )
起動用のAppleScriptは以下。スクリプトエディタで作成します。スクリプトエディタの再生ボタンを押すと実行されます。
なお、blenderの実行ファイルのパス等々は環境に合わせて設定してください。
on main(input)
try
do shell script "/Applications/Blender274RC1/blender.app/Contents/MacOS/blender -P ~/Desktop/test.py --" & space & input
end try
end main
on open argv
repeat with aFile in argv
main(quoted form of POSIX path of aFile)
end repeat
end open
on run
main(quoted form of POSIX path of (choose file))
end run
使用する流れとしては、スクリプトエディタからAppleScriptを実行するとファイルダイアログ出現、objファイルを開くとBlenderが起動してインポートされている、という感じ。
ちなみに当方ではスクリプト書いただけでアプリケーションにしたりファイル関連付けたりしてないので、スクリプトエディタからの実行のみ確認にとどめています。
種明かしをすると、最後にある引数のファイル名を起動時オプション'-P'で指定したtest.py内でOBJインポートするようにしている、という。
/Applications/Blender274RC1/blender.app/Contents/MacOS/blender -P /Users/username/Desktop/test.py -- '/Users/username/Desktop/untitled.obj'
今回は「OBJファイルを自動でインポートできるかどうか」を試してみただけということで。
[追記]FBXのインポートは上記のスクリプトの bpy.ops.import_scene.obj()の部分を以下のように書き換えてみると?
bpy.ops.import_scene.fbx(filepath=sys.argv[-1],automatic_bone_orientation=True)
[追記2]Windowsのバッチファイルだとこんな感じですかね?
C:\blender\blender.exe -P C:\Users\username\Desktop
\
test.py -- %1
[追記3] ファイルの拡張子を見て適宜インポートする(fbx,obj)版を http://www.pasteall.org/57317/python に置いています。
参考にしたページ
- Blender Wiki , Command Line Converting
- PythonによるBlender3DCGモデリング(1)
- シェルスクリプトをドラッグアンドドロップ対応のアプリケーションにする
- Python script with arguments for command line Blender
ではー。