デフォルトキューブを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
です。この辺りはどうやってるんだろう…… ↩