PythonでBlender―オブジェクトをいじる

Pythonでオブジェクトの大きさや位置をいじる方法を知ったのでメモ。

今回は例として次の操作を行った。

>>>ob = bpy.context.object
>>>ob.scale = (2,6,5)
>>>bpy.ops.object.scale_apply()


1行目の操作を行ったあとの画像がこちら↓

選択(というか、フォーカスが当たっているというか)されているオブジェクトの情報がobに入る。


2行目の操作を行った後の画像がこちら↓

scaleに値を入れて大きさを変えることができる。画面右のパネルのScaleの値も変化している。


3行目の操作を行った後の画像がこちら↓

オブジェクトの形を維持しつつscaleを(1,1,1)に設定しなおす。画面右のパネルのScaleが全部1になっている。


こんな感じでPythonからコントロールすることができる。scaleに限らずlocationやrotationもいじれる。画面右側のパネルにある項目にマウスのっけてちょっと待って「Python:Object.〜」みたいなポップアップが出てきたらその項目は今回の操作と同じようにしていじれると思う。試してみましょう。


ちなみに、キーボードのGやRでもオブジェクトを動かしたり回転したりすることができるけど、この操作はPythonからは、例えばオブジェクトを動かすのなら

>>>bpy.ops.transform.translate(value=(x方向の移動量, y方向の移動量, z方向の移動量))

って感じの記述になる。こちらは今の状態からの変化量をvalueに入れる必要がある。

今回載せたAPIには色々なオプションを渡すことができるけど、詳しくはwikiを見たりBlenderのInfo画面を見たりしましょう。