Blenderメモ : Pythonスクリプトで球を1000個配置する
BlenderでPythonコンソールを使った操作
BlenderではPythonによるスクリプト処理が行えるようになっています。まだこの機能を使い始めたばかりで分からないことばかりですが、とりあえず基本的なオブジェクト配置とループ処理について出来た範囲で書いておきます。画面を分割し、下画面でPythonコンソールを表示 |
Pythonによるスクリプト処理の実行
PythonコンソールとText Editor(Blender内部のエディタ)
BlenderでPythonを使った処理を行うとき、2つ方法があります。1つは上のスクリーンショットにあるようにPythonコンソールから行う方法。もう1つはText Editor(Blender内部のエディタ)に書いたスクリプトを実行する方法。他のファイルに書いたスクリプトを読み込むにはText Editorで開いて実行する方がやりやすいでしょう。ちょっと試したところ、Text Editorにスクリプトを書く場合はBlenderのモジュールを読み込む処理を描く必要があるようです。Pythonコンソールの場合は始めからそのモジュールを読み込んでいるようです。またPythonコンソールでは"Ctrl - Space"で補完入力が行えます。
どちらを使うのがいいかは状況によるので、必要に応じて使いやすい方を選択して使うのがいいかと思います。
Blenderで用いるPythonコマンドの取得
BlenderにどのようなPythonコマンドが用意されているかはドキュメントやリファレンスを読むのがいいのですが、簡単には使いたいメニュー項目上で右クリックメニューから取得するということも出来ます。メニュー項目から右クリックメニューでPythonコマンドを取得 |
また、ここからコマンド取得の他にリファレンスも参照出来ます。
Pythonスクリプト実行例 : 球を1000個配置する
オブジェクト配置とループ処理を合わせて球を1000個配置する簡単なスクリプト処理を行ってみます。bpy.ops.mesh.primitive_uv_sphere_add()
でsphere(球)を配置出来ます。ここに位置座標を"location"で指定。そして3重のループ処理で3次元空間に立体となるよう以下の処理を組みます。
for i in range(0,10,1):
for j in range(0,10,1):
for k in range(0,10,1):
bpy.ops.mesh.primitive_uv_sphere_add(location=(i*3,j*3,k*3))
このスクリプトを実行すると、10×10×10で球が1000個配置されます。スクリプト実行結果 |
さて、この後カメラ位置やカメラアングル、光源や背景の追加などしてレンダリング出力すると以下の画像が得られました。
(マウス操作をミスって右上の端の球1個がどこかに行ってしまった模様…)
球1000個のレンダリング結果 |
コメント
コメントを投稿