Blenderメモ : Pythonスクリプトで球を1000個配置する

BlenderでPythonコンソールを使った操作

 BlenderではPythonによるスクリプト処理が行えるようになっています。まだこの機能を使い始めたばかりで分からないことばかりですが、とりあえず基本的なオブジェクト配置とループ処理について出来た範囲で書いておきます。

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コマンドを取得

また、ここからコマンド取得の他にリファレンスも参照出来ます。


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個のレンダリング結果
球1000個のレンダリング結果

まとめ

  とりあえず、Pythonによるスクリプト処理の基本としてはこんなところでしょう。この段階ではまだ球がのっぺりしてたり色が単調だったりと味気ない感じが強いですが、もうちょっと処理をかけていけばおもしろいものが出来そうです。



コメント

スポンサーリンク


このブログの人気の投稿

gnuplotでプロットなどの色をcolornameの指定で変更する

catコマンドの出力を行番号付きにするためのコマンドラインオプション(-n, -b)

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

gnuplot : グラフにグリッド線を描く方法(set grid)

gnuplot : プロット画像のサイズ指定について(set sizeとの違い)