【Blender 】Blender API について
Blender は Ver.2.79 です。
よく使うものだけメモとして残しておきます。
間違っている場合など、ご指摘下さい。
公式は以下。 docs.blender.org
目次
よく使うデータアクセス系(bpy.data)
bpy.data は、Blender データへのアクセスに使用します。
オブジェクト(bpy.data.objects)
下記でオブジェクトを取得可能。
bpy.data.objects['オブジェクトの名前']
オブジェクトのプロパティ/メソッド
プロパティ名 | 内容 |
---|---|
name | オブジェクトの名前。 |
type | オブジェクトのタイプ。 'MESH','OBJECT','ARMATURE'等 |
parent | オブジェクトの親。存在しない場合は None が返る。 親を設定するときによく使う。 逆に親を設定したくない場合は、None を設定する。 |
parent_type | 親のタイプ。 Armatureを親にした場合は、'BONE'を設定出来る。 |
parent_bone | 上記の parent_type で 'BONE' を指定している場合に使用する。 どの BONE が親になるかを指定する。 指定する内容は BONE の名前。 |
constraints['名前'] constraints[index] |
名前やインデックス(何番目か)を指定することにより、コンストレイントを取得できる。 例えば 'IK' や 'Copy Rotation' 等。 存在しない場合はエラー。 |
constraints.find('名前') | 名前を指定することにより、指定したコンストレイントのインデックスが返る。 存在しない場合は -1 が返る。 |
select | 選択状態を表します。 True を設定した場合は選択状態。 False を設定した場合は非選択状態となります。 |
コード例
「全オブジェクト名を列挙したい!」とか。
for x in bpy.data.objects: print(x.name)
コンストレイント(bpy.data.objects.constraints)
下記でオブジェクトに設定しているコンストレイントを取得可能。
bpy.data.objects['オブジェクトの名前'].constraints['コンストレイントの名前']
コンストレイントのプロパティ/メソッド
基本のプロパティ
以下のプロパティは、大体、どのコンストレイントにもあるかと…。
プロパティ名 | 内容 |
---|---|
target | どのオブジェクトを対象にするか。 |
subtarget | どのボーンを対象にするか。 これは target が Armature の場合のみ指定可能です。 |
mute | Disable/Enable の切替。 Trueの場合、無効。Falseの場合、有効となります。 |
よく使うコンテキスト系(bpy.context)
bpy.context は、現在の状態に対してアクセスするのに使用します。
選択中のオブジェクトや、ボーンなどに対してアクセスする際に便利です。
選択中のオブジェクト
下記で選択中のオブジェクトを取得可能。
bpy.context.selected_objects
コード例
「選択中のオブジェクト名を列挙したい!」とか。
返ってくるのは、基本、bpy.data で取得したものと同様なので同じような感じですが…。
for x in bpy.context.selected_objects: print(x.name)
「選択中のオブジェクトでCopy Locationが設定されているもののみ列挙したい!」とか。
(※) コンストレイント名が"Copy Location"になっている場合のみ有効
for x in bpy.context.selected_objects: if x.constraints.find('Copy Location') != -1: print(x.name)
選択中のボーン
下記で選択中のボーンを取得可能。
ただし、Armature が ポーズモードになっている必要があります。
bpy.context.selected_pose_bones
コード例
「選択中のボーン名を列挙したい!」とか。
for x in bpy.context.selected_pose_bones: print(x.name)
「選択中のボーンでIKが設定されているもののみ列挙したい!」とか。
(※) ボーンコンストレイント名が"IK"になっている場合のみ有効
for x in bpy.context.selected_pose_bones: if x.constraints.find('IK') != -1: print(x.name)