アーマチュア
公式サイト:
Armature | Blender Python API [Official]
ボーンを編集する (edit_bones)
スクリプトを使用してボーンの構造を編集する場合は、アーマチュアデータが持つ編集ボーンコレクションを用いる。
bpy.ops.object.mode_set(mode='EDIT')
bones = bpy.data.objects["Armature"].data.edit_bones
Code language: Python (python)
※ edit_bones
のアクセスはアーマチュア編集モードでのみ可能である。
ドキュメント:
bpy.types.Armature.edit_bones | Blender Python API [Official]
EditBone | Blender Python API [Official]
ArmatureEditBones | Blender Python API [Official]
参考:
How can I select a bone by name using python in blender 2.8 – Blender Stack Exchange
ボーンを追加する
dest = bpy.data.objects["Armature"]
bpy.ops.object.mode_set(mode='EDIT')
new_bone = dest.data.edit_bones.new("New Bone")
new_bone.head = (0, 0, 0)
new_bone.tail = (0, 0, 1)
Code language: Python (python)
ドキュメント:
bpy.types.Armature.edit_bones | Blender Python API [Official]
bpy.types.ArmatureEditBones.new | Blender Python API [Official]
bpy.types.ArmatureEditBones.remove | Blender Python API [Official]
参考:
既存ボーンにスクリプトで補助ボーンを生やしてみる – Qiita
Add new bones to armature? – Blender Developer Talk
アーマチュアボーン (ArmatureBones)
アーマチュアがデータとして持つボーンを扱う。
ドキュメント:
bpy.types.Armature.bones | Blender Python API [Official]
ArmatureBones | Blender Python API [Official]
Bone | Blender Python API [Official]
bpy.types.ArmatureBones.active | Blender Python API [Official]
参考:
Python Script to Rename Bones in Armature – Blender Stack Exchange
Set active bone in pose mode from Python script – Blender Stack Exchange
ポーズボーン (PoseBone)
アーマチュアのポーズを設定/編集するために、ボーズモードでボーンを扱う。
使い方
ポーズボーンにアクセスするには、アーマチュアオブジェクトのポーズデータが持つボーンコレクションを使用する。
pose_bones = bpy.data.objects["Armature"].pose.bones
Code language: Python (python)
ドキュメント:
PoseBone | Blender Python API [Official]
bpy.types.Pose.bones | Blender Python API [Official]
bpy.types.Object.pose | Blender Python API [Official]
参考:
How to get an armature by name and get access to its bones? – Blender Stack Exchange
ポーズを操作する
クリア
- bpy.ops.pose.loc_clear
- bpy.ops.pose.rot_clear
- bpy.ops.pose.scale_clear
- bpy.ops.pose.transforms_clear
ドキュメント:
Pose Operators | Blender Python API [Official]
アーマチュアデータ
オブジェクト名でアクセスする。
arma = bpy.data.objects["Armature"].data
Code language: Python (python)
データ名でアクセスする。
arma = bpy.data.armatures["Armature_Data"]
Code language: Python (python)
ドキュメント:
bpy.types.Object.data | Blender Python API [Official]
bpy.types.BlendData.armatures | Blender Python API [Official]
Data Access (bpy.data) | Blender Python API [Official]
Armature | Blender Python API [Official]
参考:
How to get an armature by name in Python and get access to its bones? – Blender Stack Exchange
アーマチュアデータの名前を変更する
参考:
How to synch armature name with object name? – Blender Artists Community
コンストレイントを追加する
- bpy.ops.pose.constraint_add
- bpy.ops.pose.constraint_add_with_targets
- bpy.types.PoseBoneConstraints.new
- bpy.types.PoseBone.constraints
ドキュメント:
bpy.ops.pose.constraint_add | Blender Python API [Official]
bpy.ops.pose.constraint_add_with_targets | Blender Python API [Official]
bpy.types.PoseBoneConstraints.new | Blender Python API [Official]
bpy.types.PoseBone.constraints | Blender Python API [Official]
Constraint | Blender Python API [Official]
PoseBoneConstraints | Blender Python API [Official]
参考:
every pose bone add a constraint not working – Stack Overflow
loop to attach empty to each bone in Armature – Blender Stack Exchange
コンストレイントを操作する
- bpy.ops.pose.constraints_clear:コンストレイントを除去する
- bpy.ops.pose.constraints_copy:選択したポーズボーンにコンストレイントをコピーする
ドキュメント:
Pose Operators | Blender Python API [Official]
ボーンを選択する
参考:
How to assign active bone? – Blender Artists Community
Set active bone in pose mode – Blender Stack Exchange
ペアレントを設定/変更/解消する
ドキュメント:
bpy.types.EditBone.parent | Blender Python API [Official]
参考:
How to set bone parent? – Blender Stack Exchange
parent bone – Blender Stack Exchange
Using API to get parent bone names – Blender Stack Exchange
ボーングループ (BoneGroup)
ドキュメント:
BoneGroup | Blender Python API [Official]
BoneGroups | Blender Python API [Official]
bpy.types.PoseBone.bone_group | Blender Python API [Official]
bpy.types.Pose.bone_groups | Blender Python API [Official]
ボーンコレクション (Bone Collections)
ドキュメント:
Bone Collections & Colors | Blender Developer Documentation [Official]
親あるいは子を辿る
参考:
ボーンをツリー形式で表示する
参考:
データ構造
参考:
ボーンを指定した点に向ける
参考:
How to make pose bone rotation toward a point? – Blender Stack Exchange
ボーンからメッシュを生成する
参考:
ボーンからメッシュ形状を作成するアドオン | Blender とかとか
オブジェクトの親としてボーンを設定する
ドキュメント:
bpy.ops.object.parent_set | Blender Python API [Official]
参考:
How to Link a Mesh to an Armature Bone with Maintaining its Current Position | Interplanety
bpy.ops.object.parent_set Example | Program Talk
How to bone parent an object – Blender Artists Community
How to parent an object to a bone without transformation? – Blender Stack Exchange
How do I prevent object from moving when parenting object to a bone? – Blender Stack Exchange
parent an object to a bone – Blender Stack Exchange
How to set parent of mesh to a bone – Blender Stack Exchange
How do I set parent to armature? – Blender Stack Exchange
アーマチュアのスケールを変更する
参考:
Modifying FCurve values on armature bones – Blender Stack Exchange
How do I resize an armature without ruining its poses? – Blender Stack Exchange
update_from_editmode
メッシュ編集では、編集モードに入る時にメッシュのスナップショットが取られ、編集モードを抜ける時に編集の結果が書き戻される。編集モード内で編集の状態をメッシュデータに反映させたい場合には、update_from_editmode
を実行する。
ドキュメント:
bpy.types.Object.update_from_editmode | Blender Python API [Official]
参考:
選択物のリストを取る方法 – Blender.jp フォーラム
.data.vertices returns an empty collection in Edit Mode – Blender Stack Exchange
ポーズ (Pose)
オブジェクトが持つポーズデータにアクセスする。
ドキュメント:
Pose | Blender Python API [Official]
bpy.types.Object.pose | Blender Python API [Official]
ポーズオペレーター
- bpy.ops.pose.select_all:ポーズボーンを全て選択/解除する/選択状態を切り替える
- bpy.ops.pose.select_parent:親ボーンを選択する
- bpy.ops.pose.visual_transform_apply:ビジュアルトランスフォームを適用する
ドキュメント:
Pose Operators | Blender Python API [Official]
コンテキストアクセス (bpy.context)
- bpy.context.active_bone
- bpy.context.active_pose_bone
- bpy.context.armature
- bpy.context.bone
- bpy.context.editable_bones
- bpy.context.edit_bone
- bpy.context.pose_bone
- bpy.context.selected_bones
- bpy.context.selected_editable_bones
- bpy.context.selected_pose_bones
- bpy.context.selected_pose_bones_from_active_object
- bpy.context.visible_bones
- bpy.context.visible_pose_bones
ドキュメント:
Context Access (bpy.context) | Blender Python API [Official]
仕組み
参考:
How does Blender compute local rotation axes for pose bones? – Blender Stack Exchange
まとめ/Tips
ボーン関連 | mato.sus304 Blender Notes
Connect Bones
リポジトリ:
参考:
Head と Tail の座標と適当なフィルター条件でボーンの親子関係を自動構築する Connect Bones の作り方と Add-on 化の方法 | C++ ときどきごはん、わりとてぃーぶれいく
Bone to Mesh
リポジトリ:
kurotori4423/BoneToMesh_Blender: ボーンから動作検証用のメッシュを作成する Blender 2.79 アドオン – GitHub
Generate Bone Tail Mesh
リポジトリ:
generateBoneTailMesh.py – 選択ボーンの位置にちょうど頂点を持つメッシュを生成するコマンド (green224) – GitHub Gist