見出し画像

複数のボーンに一括でコンストレイント設定【blender】【Rig】【誰得】

# bpyインポート
import bpy

# アーマチュアとボーンの名前を指定
armature_name = "@@@"
bone_prefix = "zx_"
bone_start = 
bone_end = 0
bone_suffix = "_1.L"

# コンストレイントのターゲットとインフルエンスを指定
constraint_target = "@@@"
constraint_influence = 0.3

# アーマチュアオブジェクトを取得
armature = bpy.data.objects.get(armature_name)

# ポーズモードに移行
bpy.ops.object.mode_set(mode="POSE")

# ボーンの範囲をループ
for i in range(bone_start, bone_end - 1, -1):
    # ボーンの名前を生成
    bone_name = bone_prefix + str(i) + bone_suffix
    # subtarget(一個前のやつ) name 
    sub_bone_name = bone_prefix + str(i + 1) + bone_suffix
    # ポーズボーンを取得
    pose_bone = armature.pose.bones.get(bone_name)
    # ポーズボーンが存在するか確認
    if pose_bone:
        # 減衰トラックコンストレイントを作成
        constraint = pose_bone.constraints.new("DAMPED_TRACK")
        # コンストレイントのターゲットとインフルエンスを設定
        constraint.target = bpy.data.objects.get(constraint_target)
        constraint.influence = constraint_influence
        constraint.subtarget = sub_bone_name

# オブジェクトモードに戻る
bpy.ops.object.mode_set(mode="OBJECT")

一括といっても再帰はしてないのでちょっと使いどころ選ぶかも
prefixとかは適当に
自分用のコードメモ

この記事が気に入ったらサポートをしてみませんか?