Pythonを使ってBlenderの物理シミュレーションをやってみた

スクリーンショット 2017-12-20 14.31.06

 

松本市のコワーキングスペースKNOWERSで月に1回、「Pythonもくもく会」を開催していて、最近の僕はBlenderとPythonを組み合わせて遊んでいます。

今回は物理シミュレーション。環境はmacOS High Sierra 10.13.2 + Blender 2.79です。

 

BlenderにはPythonが組み込まれており、「Cubeを作る」や「Cubeの名前を取得」なんかがプログラムを通じて操作できます。

組んだプログラムはTerminalかBlender内のコンソールから実行できます。Terminalから実行するためにはbash_profileにaliasを追加しておくと楽。

alias blender=’/Applications/blender/blender.app/contents/MacOS/blender’
source .bash_profile(bash_profileの反映)

すると、Terminalでチョチョイとできるように。

blender –python hogehoge.py
blender –background –python hogehoge.py(バックグラウンド実行)

 

さて、本題の物理シミュレーション。参考にさせてもらったサイトはこちら。
▶︎参考:Blenderの物理シミュレーションをpythonスクリプトで作成 – 株式会社CFlatの明後日スタイルのブログ

チコっとソースを変更したのがこちら。

18行目からコメントアウト含め3パターンあります。pattern1は剛体のシミュレーション。pattern3が柔体シミュレーション。柔体シミュレーションは

bpy.ops.object.modifier_add(type=’SOFT_BODY’)

を追加して「Cubeたちよ!君たちは柔体だ!」と定義してあげるだけ。

詳しく調べていませんが、柔体用のパラメータはたくさんあると思います。上記1行ではおそらくデフォルト値が設定されるのではないかと思います。

 

 

 

おわりに

Blenderは3DCGアプリ。本来はマウスであれこれやって作っていくもの。でも、Cubeを1000個並べるような単純な繰り返しはスクリプトを組んで実行させた方が楽。モディファイアを使ってもできそうですけどね(笑)

もちろんそれ以外にもスクリプトが効果的なシーンはあるでしょう。

いろんなことができるアプリが(基本)無料で使えて遊べる楽しい。とてもありがたいことですね。