Works - ----/--/--
----

キーワード

目次

まえがき

 毎回同じ説明するの面倒だからここに説明ページ作っておこうという試み.タイトルの通り,BPYによるプログラミング経験が無い人向けの説明となります. ここではBlenderにおけるPythonスクリプトの実行方法を扱います.

用語の説明

 混乱を避けるために,極々簡単に用語の説明をします.知ってる人は飛ばして読んでください.


スクリプトの実行方法

 Blender内でPythonスクリプトを実行する方法は以下の3つです.

 この他にもBlenderを起動せずにBPYを呼び出すことも可能らしいですが,私は詳しくないです.

Pythonコンソールに直接コマンドを入力する

 以下,操作手順です.
  1. ウィンドウ切り替えボタンをクリックします(各ウィンドウの左上部)
  2. [Pythonコンソール]ウィンドウを開く
  3. Pythonコンソール下部の>>>にコマンドを入力して[Enter]で実行する
  4.  例)print("hello")と入力すると直後にhelloが表示される



 print()は括弧の中の文字列を出力する関数です(大体プログラミングの授業で一番最初に触らされるやつ).

 複数行の例も試してみましょう.以下のスクリプトをコピーしてPythonコンソールに貼り付けてみてください.貼り付けはPythonコンソール上にマウスカーソルを乗せた状態で [Ctrl]+[V]でできます.

a = 2
b = 3
sum = a + b

print(sum)
		

 実行して直後に5が表示されればOKです.プログラミングにおいて=記号は数学的なイコールとは異なり,左辺に代入することを意味します. 上記スクリプトの意味は何となく分かりますよねえ,2足す3は5ってことです.

 少し長くなってしまいましたが,ここまではただのPythonであってBPYではないんですよねえ. これではBlenderで動かす意味がないのでBPYモジュールを使用した例を以下に示します.

例)現在のシーンをレンダリングするコマンドです
 レンダリング後に[F11]キーでレンダリング画像を確認できます.
#現在のシーンをレンダリングする
bpy.ops.render.render()
		

例)選択オブジェクトの移動
#選択オブジェクトをx方向に2動かす
bpy.ops.transform.translate(value=(2, 0, 0))
		


テキストエディタからスクリプトを実行する

 以下,操作手順です.
  1. ウィンドウ切り替えボタンをクリックします(各ウィンドウの左上部)
  2. [テキストエディター]ウィンドウを開く


  3. スクリプトを入力,または外部ファイルから取り込む
  4.  テキストを新規で入力する場合は,最初にテキストをBlender内で新規作成します.このテキストはBlendファイル内に保存されます. 外部のテキストファイルとして出力するときは[テキスト]>[名前をつけて保存]から出力できます.

     既にスクリプトのテキストファイルが用意されているときは,フォルダマークのボタンからテキストを取り込んでください.

     テキストエディタでBPYモジュールを使用する場合は必ず冒頭に"import bpy"と記述する必要があります. これを最初に記述しておくことでbpyと名のついた関数を実行できるようになります.

     例として以下にスクリプトを用意してみました.選択オブジェクトを適当に並べながらコピーしていくスクリプトです.
    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
    			

  5. [スクリプト実行]ボタンをクリックして実行する
  6.  ボタンが右端の方にあるので,隠れている場合は[マウスホイール中ボタン]ドラッグで表示範囲を移動してください. または,[テキストエディター]ウィンドウにマウスカーソルを乗せた状態で[Alt]+[P]でも実行できます

     ※上記のスクリプト実行時は必ず何かオブジェクトを選択してください.



エラーが出たときは

 プログラミングには必ずつきまとうエラーとの遭遇ですが,とりあえずエラーが出たときはシステムコンソール画面を確認してみましょう.
 [ウィンドウ]タブ>[システムコンソール切替]から表示させることができます.コンソール画面にはどの行で引っかかっているか等の情報が表示されます. 基本的にはエラーが出たときに,エラーの原因となっている行数を確認しておかしいところを直すといった作業になります.特にタイプミスは多いですね,ホントに



 一つ注意点ですが,システムコンソールウィンドウの×印はクリックしないように注意してくださいね(Blenderが終了します).ですが最近のBlenderはこの辺が改善されて大丈夫っぽいですね.

BPYコマンドの調べ方

 BPYを使うことで「なんか色々できそう」ってことはなんとなく分かってもらえたとは思いますが,「実際にどんなコマンドを入力すればいいの」っていう話をしたいと思います.
 普通にググって調べてももちろん情報は集まりますが,実はかなりお手軽な方法があります.まずは,[情報]ウィンドウを開いてみましょう.
 そして,自分が知りたいコマンドの操作を手動で実行します.操作をすると[情報]ウィンドウに履歴が残っていくので,あとはこれを真似してスクリプトを作成するだけでOKです.



 コマンドはある程度名前から想像がつくように作られているので,ほとんどのコマンドはこの方法で知ることができます.あとは適当にコマンドを並べたりするだけで結構色々できるようになります. このほか変数の代入if文for文といった基礎的なプログラムの書き方を知っているだけでかなり幅は広がってくると思います.

 以上,Blender Python超入門編でした.

こちらもおすすめ