アーマチュア

公式サイト:

Armature | Blender Python API [Official]

ボーンを編集する (edit_bones)

スクリプトを使用してボーンの構造を編集する場合は、アーマチュアデータが持つ編集ボーンコレクションを用いる。

bpy.ops.object.mode_set(mode='EDIT')
bones = bpy.data.objects["Armature"].data.edit_bonesCode 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]

参考:

ボーンアクセスチートシート | dskjal

既存ボーンにスクリプトで補助ボーンを生やしてみる – 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.bonesCode 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

ポーズを操作する

クリア

ドキュメント:

Pose Operators | Blender Python API [Official]

アーマチュアデータ

オブジェクト名でアクセスする。

arma = bpy.data.objects["Armature"].dataCode 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 | 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

コンストレイントを操作する

ドキュメント:

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]

親あるいは子を辿る

参考:

指定ボーンの親または子ボーンを参照する | MR が楽しい

ボーンをツリー形式で表示する

参考:

ボーンを階層表示するサンプルスクリプト | 忘却まとめ

データ構造

参考:

ボーンのデータ構造 | nikogoli

ボーンを指定した点に向ける

参考:

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]

ポーズオペレーター

ドキュメント:

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 can I manually calculate bpy.types.PoseBone.matrix using Blender’s Python API? – Blender Stack Exchange

How does Blender compute local rotation axes for pose bones? – Blender Stack Exchange

まとめ/Tips

ボーンアクセスチートシート | dskjal

ボーン関連 | mato.sus304 Blender Notes

Bone | Daizyu.com

Connect Bones

リポジトリ:

usagi/blender-connect-bones: Connect Bones If it Find a Bone Pair that Has a Same Position of a Head and a Tail – GitHub

参考:

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

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA