コマンドラインでBlender

TVアニメ「SUPER LOVERS」。兄が弟を好きというアニメなのですが、このLOVEは弟に対する健全な感情だと思います。普通にある感情ではないでしょうか。でも、やっぱりそうでもないような。いろいろくっつき過ぎのような。LOVERSではなくてSUPERがついているところがすごいんだと思います。

タイトルにあるとおり、今回はbrotherではなくblenderです。
blenderをコマンドラインで実行する場合、スクリプトファイルを指定することはできますが、スクリプトを直接書くことができません。どうしてもコマンドラインで動かしたい私としては、blenderコマンドを直接起動することは諦め、スクリプトを指定してblenderを動かすようなコマンドを作ることにしました。bashスクリプトで以下のような内容になっています。コマンド名はblとしました。boys loveではなくてblenderの略です。

~$ cat -n bl
     1	#!/bin/bash
     2	cat <<EOL>/tmp/tmp.py
     3	import bpy
     4	bpy.data.objects['Cube'].select = True
     5	bpy.ops.object.delete()
     6	$1
     7	EOL
     8	blender -b -P /tmp/tmp.py -o //test -F PNG -x 1 -f 1 | grep ^Save

引数なしで実行すると、test0001.pngという画像ファイルが出来上がります。

~$ ./bl
Saved: test0001.png Time: 00:00.37 (Saving: 00:00.28)

以下のグレーの四角は画像です。オブジェクトを生成していないので、何も表示されてません。
blender-nothing

球体のPNG画像を作ってみましょう。 球体はprimitive_uv_sphere_add()で作成されます。

~$ ./bl 'bpy.ops.mesh.primitive_uv_sphere_add(location=(0,0,0))'
Saved: test0001.png Time: 00:00.49 (Saving: 00:00.28)

blender-sphere

次はテキストオブジェクトを使ってみます。

~$ ./bl 'bpy.ops.object.text_add()
bpy.context.object.data.body="HELLO"'
Saved: test0001.png Time: 00:00.39 (Saving: 00:00.28)
~$ 

blender-text

では、最初に作ったblコマンドの説明です。

~$ cat -n bl
     1	#!/bin/bash
     2	cat <<EOL>/tmp/tmp.py
     3	import bpy
     4	bpy.data.objects['Cube'].select = True
     5	bpy.ops.object.delete()
     6	$1
     7	EOL
     8	blender -b -P /tmp/tmp.py -o //test -F PNG -x 1 -f 1 | grep ^Save

1は、シバンで、bashを実行するためのマジックコメントです。chmod 755 bl等して、実行権限を付けておきます。
2は、ヒアドキュメントです。EOLが出現するまで、そのまま/tmp/tmp.pyに書き込みます。
/tmpディレクトリはPCの電源をOFFしたらファイルが消えてしまうので気をつけてください。あくまでもテンポラリファイルです。
3では、bpyモジュールをインポートしています。これによりpythonでblenderの制御ができるようになります。
4と5では、blenderを新規に起動したときに、最初に生成されているCubeオブジェクトがあるので、削除しています。
6は、第一引数文字列をここに書き出すことにより、blコマンドの引数でスクリプトが書けるようにしています。
7は2のヒアドキュメントの終了合図のための文字列です。EOLでなくとも良いですが、開始時の文字列と一致させなければなりません。
8でようやくblenderを起動しています。-bオプションはblenderはバックグラウンドで動作させています。PNG画像を生成するためにレンダリングするだけなので、blenderのGUIは伏せて使います。-Pオプションでこのblコマンド内で作ったpythonスクリプトファイルを指定しています。//testはファイル名の接頭辞です。-FでPNG画像を指定し、-fはフレーム番号1を指定してレンダリングしています。

3 responses to “コマンドラインでBlender

  1. Pingback: Blenderで立体文字 | コマンドの達人

  2. Well put, sir, well put. I’ll ceraitnly make note of that.

  3. Tһanks for any other fantastic article. The place else may anyone get that type of info in such a perfect method of writing?
    I have a prеsentation next week, and I’m on the search for such informatiօn.

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA