※ Blenderのバージョンは2.81aで検証しています
Blenderでリグ制作をしていた時に手動ですべて設定するのが手間だったのである程度スクリプト化しました。
ただ、あくまで「ある程度」「ゲーム用」ですのでご注意を。
何ができる?
選択したボーンと同じ座標にボーンを作成する。
生成したボーンは以下の事を自動で設定します。
- ボーンの階層はTOP(誰かの子にしない)
- ボーンの変形をOFFにする
- ボーンの向きを真下にする
- ボーンレイヤーを1番に設定する
- ボーン名に「ctrl_」を先頭につける(prefix)
- ボーングループを「Rig」に設定する
- ※あらかじめRigというボーングループは作ってください
やり方
- 編集モードに移行
- リグをつけたいボーンを選択(複数可)
- スクリプトを実行
コード
不要な機能や番号、グループ名称を変更したい場合は
手動で直してください。
import bpy # variable boneLayer = 1 bpy.ops.object.mode_set(mode='EDIT', toggle=False) # duplicate bpy.ops.armature.duplicate() bpy.ops.armature.parent_clear(type='CLEAR') for armature in bpy.data.armatures: for bone in armature.edit_bones: if bone.select_head: bone.tail[0] = bone.head[0] bone.tail[1] = bone.head[1] bone.tail[2] = bone.head[2] - 10 bone.use_deform = False bone.name = "ctrl_" + bone.name.split(".")[0] bone.layers[boneLayer] = True for index,layer in enumerate(bone.layers): if index != boneLayer: bone.layers[index] = False bpy.ops.object.mode_set(mode='POSE', toggle=False) for bone in bpy.context.selected_pose_bones: bone.bone_group = bpy.context.active_object.pose.bone_groups["Rig"] bpy.context.object.data.layers[boneLayer] = True