見出し画像

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つあり、押すとモンキーが爆誕します。

画像1

このボタンがあれば、本来「Shift+A → メッシュ → モンキー」だった手順がボタン1つで実現できる。たったこれだけのコードで、1つの機能が作れてしまう。

スクリプトを書けば、何でもできる

僕がBlenderを触り始めた理由の1つに、「Pythonを活用できること」がある。Pythonは、最近人気のプログラミング言語の1つ。

そして実際に触ってみて、Blenderにある無数の機能を、どれも簡単なコードで呼び出せるのがわかった。

例えば、先程のコードの "bpy.ops.mesh.primitive_monkey_add()" を下のコードに変えてあげると、カメラ視点に切り替わるボタンになる。

bpy.ops.view3d.view_camera()
画像2

また、簡易的な操作だけでなく、手動では面倒な連続した操作の組み合わせも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))
画像3

つまり、どんな機能も、自分好みにタブやボタンにまとめられる。
※アドオンとして保存するには、もう少しだけコードが必要です。

ちなみに、上の内容は、いとも簡単にAIで自動生成されてしまったので、プログラムをAIに書いてもらう未来も近いのかもしれない。

Blenderで価値を出せるスクリプトとは

とはいえ、あまり可愛くもない猿を爆誕させる機能なんて、誰も使わない。そこで、どんなスクリプトを作ると価値が出せるのか少し考えてみた。

いろんな考え方があるが、僕は、Blenderの最大の弱点である「機能のわかりにくさ」を補えるものが良いと考えている。Blenderを触って最初に感じるハードルは、その機能の多さと扱いにくさ。

最近のアプリは、マニュアル不要で誰でもすぐに扱えるインターフェースが当然のようになっているが、Blenderは割と対極にいる。

先日、Blenderの1400ページの解説書がTwitterでバズっていた。ページ数を見ただけで敬遠するユーザもいると思う。

なので、2つアドオンを作ってみた。

1つ目は、個人的にわかりにくいと感じていたカメラの調整を、マウスで簡単にできるアドオン。

2つ目は、ワンクリックで木を作れるアドオン。詳しくは下のnoteに書いた。

Blenderでスクリプトを書く人は、まだ多くない

Blenderのアドオン開発は、これから参入者が結構増えると考えている。

Blenderの盛り上がりはこの半年ぐらいで強く感じる。でも一方で、今はまだスクリプトを書く人はあまり多くないのも感じる。

というのも、今調べていても、同じ方のアドオンやサイトが頻繁にヒットするから。特に忘却まとめさんの記事やアドオンは何度も出てきた。

アドオン開発の記事も公開されていて、とても参考になったし、アドオンのマーケティング結果なども面白かった。

どんな分野でも、希少性が高い方が価値が出る。また、「3DCG」はアートとして感性に響く作品になるが、「アドオン」は単純に機能としての価値を生み出す。

アートは人それぞれの感性次第だけど、機能はみんな同じように便利なものを求めているので、3Dに限らず、ある程度のレベルに到達するまでは、人は機能的なものに対して価値を感じやすいのを感じている。めちゃめちゃ喜んでくれる人もいて嬉しかった。


たぶん、この記事に興味を持つ人は、まだ少ない。でもここ数年で、プログラミングやPythonを扱う人も相当増えた。Pythonは機械学習に強いし、応用の幅も広い。オープンソースの力がこれから更に発揮されていくはず。

なので、きっとこれからアドオンが増えて、Blenderが更に便利になっていくんだろうなぁ、、、なんてことを、コードを書きながら考えた、というお話でした。

 

アドオン作成時に参考にしたサイト

最後に、今回特に参考にしたサイトを載せておきます。


この記事が気に入ったらサポートをしてみませんか?