デフォルトキューブをz方向に1動かす
Pythonを使ってBlenderでできる事をまとめています。解説もあります。
はじめに
レシピ一覧
Pythonの難易度: ★☆☆☆☆
サンプルコード
例1
import bpy
obj = bpy.data.objects["Cube"]
obj.location.z = obj.location.z + 1
例2(Pythonの難易度: ★★★☆☆)
import bpy, mathutils
obj = bpy.data.objects["Cube"]
obj.location += mathutils.Vector((0,0,1))
上記サンプルコードを、Blender内蔵のテキストエディタに貼り付けた後、Alt-Pを実行してください。
その他、bpy.ops.transform.tranlateを使う方法もあります。
解説
bpy.data.objects["Cube"]
PythonからBlenderを使うにはbpyというライブラリを使います。
例えば、bpy.dataにはBlender内の様々な変数(オブジェクトのインスタンス)が格納されています。
例えば、オブジェクト一覧はbpy.data.objectsから、マテリアル一覧はbpy.data.materialsからアクセスできます。
この一覧の型はbpy.types.bpy_collectionsであり、この型は辞書とリストを合わせたようなものです。1
今回はCubeという名のオブジェクトにアクセスします。
obj.location
obj.locationは3次元ベクトルで、オブジェクトの位置を表します。
これのz座標を使うには.zを使ってください。
mathutils.Vector
PythonからBlenderを使うには基本的にbpyを使いますが、それ以外にもいくつかのライブラリがあります。
例えば、bmeshはメッシュを扱うための、mathutilsは数学を扱うためのライブラリです。
mathutils.Vectorはベクトルを扱うためのクラスであり、クラスのコンストラクタです。
したがって、mathutils.Vector((0,0,1))というのは(0,0,1)のベクトルを指します。
これらのベクトルは足し算が可能です。
-
bpy.data.objectsの型が
bpy_collectionsと説明しましたし、typeやisinstanceを使ってもその通りですが、実際にはbpy.types.BlendDataObjectsです。この辺りはどうやってるんだろう…… ↩