![eyecatch](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijnfGVxoqb48HBtAGgW3u4uAwbVfVvNdCTYXZzQsN5GSzvYo-zePlBQIghAtmoCkm9_21fIIekTCg-AVkOOJucRY-Ya9OO7t0OEKbIWhUmP30f4BahCFnkoy0MhxW8xdvUGbOeWHg2fQu6fbIxtllnpckVnAHhiqA26Y4QstDx9ks5264Vh5024dBU4JI/s1600/blender.png)
Blenderは、Pythonスクリプトが使えるので、それを使って独自のデータを出力する方法を短期学習してみる。
Blenderのスクリプトの書き方は3種類
1. Pythonコンソールに記述
コマンドを直接実行できますが、毎回コマンドを打ち込む必要があります。(コピペでもいいですが)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVA2N7lMQmPIVxwBKPjFDxrGKZugFgLqADddowpFIad1I9XIav4brRG72G6ViosFpOFnWlkLkvW5HXfR99WHy6mwltXVvIghfOTd94Rb6WuqqF1fpyMNR6S_8TqTnxVC0wd81_djBAfp-dsvJxZgVHzEBCwd0OleqRRkPYLPLT-O37A59v_U3VKTCznZk/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202024-05-08%209.28.54.png)
表示切り替えで「Python Console」を選択する。
>>> print("Hello World")
Hello World
コマンドで、bpy.と入力して、tabキーを押すと・・・
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUrMyTzpkE7HXhH7MGAAfXYb25PkVcOAluT31GxHHQMv58_RQtS6QTR5H1N2wNt42LhnHzxTbRtkdXMB0hfTBEa2oQt4_gPYWza_MUaynlzKVihB3XO98wuiyL7Bh0ZuaC5J_hYGkP5HyMympo6Irlo2QREyffFAXnpszmW152TJlytAysc9zuEIDTqV8/s200/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202024-05-08%2017.50.37.png)
緑色の文字で、bpy直下のメソッドが表示されます。
ある程度のアタリをつけて、操作できそうですね。
ちなみに、メソッド改装でも、tabキーをどんどん押して、緑のヒント文字がでるので、なれると超便利です。
2. テキストエディタから実行
テキストエディタに書き込んだスクリプトを実行します。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGo2jiUpUJma64XkMeBA4F0RJ91rin9qwWS6l8ONmHEC4UBEgPdLi_1W621ovaKaRl8iUnGB0kb81ZEFZEMuMlQHKX63JdeqAJvroc2t3W_kg7vQ1Glgo_oft3yCqRBskkd25Y1dMyTU4BUsxK_hitwbWiO8kj1C8O9pxHePrC4zgUoTpee0jwuykr_0E/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202024-05-08%209.36.00.png)
表示切り替えで「Text Editore」を選択する。
import bpy
#2重forループ
for i in range(5):
for j in range(5):
#選択オブジェクトをコピー
bpy.ops.object.duplicate()
#オブジェクトの座標を指定
bpy.context.object.location.x = i * 2
bpy.context.object.location.y = j * 2
#オブジェクトのスケールを指定
bpy.context.object.scale.x = (5-i) / 5
bpy.context.object.scale.y = (5-i) / 5
bpy.context.object.scale.z = (5-i) / 5
#オブジェクトの角度をオイラー角[rad]で指定
bpy.context.object.rotation_euler.x = i / 5
bpy.context.object.rotation_euler.y = j / 5
参考 :
【超入門編】Blender Python(BPY)の使い方
ヘッダimportに"import bpy"を書くのがお決まりのようです。
bpyは、BlenderPythonの略っぽいですね。
実行すると次のように、キューブがコピーされて次のような表示になります。
3. アドオンを作る
※アドオンは、別の記事で説明したいと思います。
bpyは操作ログで簡単に調べられる
表示切り替えで、「Info(情報)」にすると、Blenderの操作履歴が、表示されます。
bpy.context.area.ui_type = 'VIEW_3D'
bpy.context.area.ui_type = 'INFO'
画面を切り替えた履歴が表示されていますが、bpy.***と書かれているので、ピンと来た人もいると思いますが、bpyの命令文が履歴として表示されています。
ということは、1回何かしらの操作を行ったこの履歴情報を、スクリプトにコピペすれば、その通りの再現操作ができてしまうということです。
また、特殊な操作にアクセスしたい場合でも、一度操作をして、そのログからアタリをつけていけば、比較的マニュアルいらずである程度のスクリプトは書けそうです。
注意点
Mac版 Blender Version 4.0.2
上記環境で、Python Consoleを表示した状態で、全画面表示に切り替えをすると、Blenderの画面がグレーアウトして、アプリ終了することもできなくなります。(強制終了することになります)