BlenderをPythonでもっと自由自在に
Blenderで3DCGモデリングを学び始めて、静止画、アニメーション、マンガと、何が作れるのかいろいろ試してきた。
ここで少し方向性を変えて、Blender自体の拡張機能である「アドオン」を作ってみることにする。
簡易的ではあるものの、作りたかった機能が完成したので、考えたことをまとめてみる。
簡単なスクリプトサンプル
Blender向けのスクリプトを書いた経験がある方は少ないと思うので、まずは未経験者向けに、数秒でできるサンプルを。
試しに下のコードをコピーしてみてください。
import bpy
import random
class Sample_PT_Panel(bpy.types.Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_category = 'お試し'
bl_label = 'お試し'
def draw(self, context):
layout = self.layout
row = layout.row()
row.operator('sample.monkey')
class Sample_OT_Monkey(bpy.types.Operator):
bl_idname = 'sample.monkey'
bl_label = 'モンキー生成'
bl_description = 'モンキーを爆誕させます'
bl_options = {'UNDO'}
def execute(self,context):
bpy.ops.mesh.primitive_monkey_add()
return{'FINISHED'}
bpy.utils.register_class(Sample_PT_Panel)
bpy.utils.register_class(Sample_OT_Monkey)
そしたら、Blenderの「Scripting」タブに移動し、「+新規」を押して、先程のコードを貼り付けて「▶」ボタンを押してみます。
その後3Dビューで「N」キーを押すと「お試し」タブが出てきます。タブにはボタンが1つあり、押すとモンキーが爆誕します。
このボタンがあれば、本来「Shift+A → メッシュ → モンキー」だった手順がボタン1つで実現できる。たったこれだけのコードで、1つの機能が作れてしまう。
スクリプトを書けば、何でもできる
僕がBlenderを触り始めた理由の1つに、「Pythonを活用できること」がある。Pythonは、最近人気のプログラミング言語の1つ。
そして実際に触ってみて、Blenderにある無数の機能を、どれも簡単なコードで呼び出せるのがわかった。
例えば、先程のコードの "bpy.ops.mesh.primitive_monkey_add()" を下のコードに変えてあげると、カメラ視点に切り替わるボタンになる。
bpy.ops.view3d.view_camera()
また、簡易的な操作だけでなく、手動では面倒な連続した操作の組み合わせも1つのボタンに割り当てられる。
例えば先程変更した箇所を、下のコードに変えてあげると、10匹のモンキーをランダムな位置に召喚できる。
for i in range(10):
x = random.uniform(-10, 10)
y = random.uniform(-10, 10)
z = random.uniform(-10, 10)
bpy.ops.mesh.primitive_monkey_add(location=(x, y, z))
つまり、どんな機能も、自分好みにタブやボタンにまとめられる。
※アドオンとして保存するには、もう少しだけコードが必要です。
ちなみに、上の内容は、いとも簡単にAIで自動生成されてしまったので、プログラムをAIに書いてもらう未来も近いのかもしれない。
Blenderで価値を出せるスクリプトとは
とはいえ、あまり可愛くもない猿を爆誕させる機能なんて、誰も使わない。そこで、どんなスクリプトを作ると価値が出せるのか少し考えてみた。
いろんな考え方があるが、僕は、Blenderの最大の弱点である「機能のわかりにくさ」を補えるものが良いと考えている。Blenderを触って最初に感じるハードルは、その機能の多さと扱いにくさ。
最近のアプリは、マニュアル不要で誰でもすぐに扱えるインターフェースが当然のようになっているが、Blenderは割と対極にいる。
先日、Blenderの1400ページの解説書がTwitterでバズっていた。ページ数を見ただけで敬遠するユーザもいると思う。
なので、2つアドオンを作ってみた。
1つ目は、個人的にわかりにくいと感じていたカメラの調整を、マウスで簡単にできるアドオン。
2つ目は、ワンクリックで木を作れるアドオン。詳しくは下のnoteに書いた。
Blenderでスクリプトを書く人は、まだ多くない
Blenderのアドオン開発は、これから参入者が結構増えると考えている。
Blenderの盛り上がりはこの半年ぐらいで強く感じる。でも一方で、今はまだスクリプトを書く人はあまり多くないのも感じる。
というのも、今調べていても、同じ方のアドオンやサイトが頻繁にヒットするから。特に忘却まとめさんの記事やアドオンは何度も出てきた。
アドオン開発の記事も公開されていて、とても参考になったし、アドオンのマーケティング結果なども面白かった。
どんな分野でも、希少性が高い方が価値が出る。また、「3DCG」はアートとして感性に響く作品になるが、「アドオン」は単純に機能としての価値を生み出す。
アートは人それぞれの感性次第だけど、機能はみんな同じように便利なものを求めているので、3Dに限らず、ある程度のレベルに到達するまでは、人は機能的なものに対して価値を感じやすいのを感じている。めちゃめちゃ喜んでくれる人もいて嬉しかった。
たぶん、この記事に興味を持つ人は、まだ少ない。でもここ数年で、プログラミングやPythonを扱う人も相当増えた。Pythonは機械学習に強いし、応用の幅も広い。オープンソースの力がこれから更に発揮されていくはず。
なので、きっとこれからアドオンが増えて、Blenderが更に便利になっていくんだろうなぁ、、、なんてことを、コードを書きながら考えた、というお話でした。
アドオン作成時に参考にしたサイト
最後に、今回特に参考にしたサイトを載せておきます。
この記事が気に入ったらサポートをしてみませんか?