概要
KenJin IK Symmetry Limit Editor は、Blenderの左右対称ボーンに対して、IK制限、Limit Rotation制約、IK Pole Angleを比較・編集するためのNメニュー用アドオンです。
(2026/05/04現在,未アップなまで,説明のみ)
最小手順
1. Object modeにする
- Armatureの選択
2. Pose Modeにする
- 左側のboneを選択
- Bone constraint > IK constraintのpole angleを調整
- Bone constraint > Limit Rotation constraintの角度(その関節に適した)とowner(Local Space)を調整
- Bone > Inverse Kinetics > Limit X, Y, Z (稼働範囲のガイドが現れる)を設定する
3. Add-onの操作パネルに移動
- Add-onのScan Pairボタンを押す

4. Add-onのルールを図の様に設定する.

5. 左側boneの設定を右側のboneの設定にtemp領域に変換する
- 変換値をtemp領域に書き込む

- 実際に書き込む

6. 繰り返す
| 対象 | Blender上の場所 | 主な編集内容 |
|---|---|---|
| IK Limit | Bone > Inverse Kinematics | Lock IK X/Y/Z、IK Min/Max |
| Limit Rotation | Bone Constraint > Limit Rotation | Owner Space、Euler Order、Use Limit、Min/Max |
| IK Constraint | Bone Constraint > Inverse Kinematics | Pole Angle、Target/Pole Target表示 |
| IK Reset | Bone Constraint > Inverse Kinematics | IK Constraintの再構築 |
このアドオンは、左右ボーンの設定を直接まとめて編集するだけでなく、Preview機能で片側の値をもう片側へ変換してからApplyする流れを想定しています。
対応バージョン
| 項目 | 内容 |
|---|---|
| アドオン名 | KenJin IK Symmetry Limit Editor |
| バージョン | v1.2.6d |
| 対象Blender | Blender 5.1 / 5.1.1 |
| Nメニュータブ | IK Symmetry |
| 主な用途 | 左右ボーンのIK制限・Limit Rotation・Pole Angleの比較と編集 |
添付コードのヘッダーでは、対象が Blender 5.1 / 5.1.1 と記載されています。
Nメニューでの表示場所
インストール後、対象Armatureを選択すると、3D Viewportの右側Nメニューに以下のタブが表示されます。
IK Symmetry
パネル名は以下です。
IK Symmetry Limit Editor
Nメニュータブ名は、コード上で bl_category = "IK Symmetry" と定義されています。
基本的な操作の流れ
このアドオンの基本操作は、次の順番です。
- Pose ModeでArmatureを選択する
- 左右どちらかのボーンを選択する
- Scan Pair を押す
- 左右ボーンの設定値が読み込まれる
- 必要に応じてIK Limit / Limit Rotation / Pole Angleを編集する
- Preview L → R または Preview R → L で変換結果を確認する
- 問題なければ Apply Edited L / R / Both を押す
重要なのは、Previewはテーブル値だけを変更し、実際のBlenderデータは変更しないという点です。実データへ反映するにはApplyが必要です。
Pair Scan / Active Pair
Scan Pair
Scan Pair は、現在選択しているボーン名から左右ペアを自動検出します。
対応している左右名の例は以下です。
| 左 | 右 |
|---|---|
.L | .R |
_L | _R |
-L | -R |
Left | Right |
left | right |
たとえば、upper_arm.L を選択してScan Pairを押すと、upper_arm.R を探します。
コード上では、.L/.R、_L/_R、-L/-R、Left/Right などのパターンが定義されています。
Reload Pair
Reload Pair は、現在読み込まれている左右ペアを、実際のBlenderデータから再読み込みします。
手動でBlender側のBone設定やConstraint設定を変更した後に、アドオン表示を更新したい場合に使用します。
Bone > Inverse Kinematics パネル
このパネルでは、Pose Bone側のIK制限を編集します。
対象は以下です。
| 項目 | 内容 |
|---|---|
| Lock IK X/Y/Z | 各軸のIK制限を有効化する設定 |
| IK Min X/Y/Z | 各軸の最小角度 |
| IK Max X/Y/Z | 各軸の最大角度 |
Apply時には、lock_ik_x/y/z、ik_min_x/y/z、ik_max_x/y/z が実際のPose Boneへ書き込まれます。
Bone Constraint > Limit Rotation パネル
このパネルでは、各ボーンに設定されている Limit Rotation Constraint を編集します。
対象は以下です。
| 項目 | 内容 |
|---|---|
| Exists | Limit Rotation Constraintが存在するか |
| Constraint Name | 対象Constraint名 |
| Owner Space | 制限を評価する空間 |
| Euler Order | Euler回転順 |
| Affect Transform | Transform Limitを有効にする設定 |
| Legacy Behavior | Legacy Behavior設定 |
| Use Limit X/Y/Z | 各軸制限の有効化 |
| Min X/Y/Z | 各軸の最小角度 |
| Max X/Y/Z | 各軸の最大角度 |
Apply時には、Limit Rotationの owner_space、euler_order、use_transform_limit、use_legacy_behavior、use_limit_x/y/z、min_x/y/z、max_x/y/z が書き込み対象になります。
注意:Limit Rotationは新規作成されない
現在のv1.2.6dでは、Applyは既存のLimit Rotation Constraintを編集する処理です。
つまり、Limit Rotation Constraintが存在しない場合、Applyを押しても新規作成はされません。
内部処理では、既存のLimit Rotation Constraintを検索し、lr_exists and lr の条件を満たす場合だけ値を書き込む構造になっています。
Bone Constraint > Inverse Kinematics パネル
このパネルでは、IK Constraintの情報を表示し、Pole Angleを編集できます。
表示・編集対象は以下です。
| 項目 | 内容 |
|---|---|
| IK Constraint Exists | IK Constraintが存在するか |
| IK Constraint Name | 対象IK Constraint名 |
| Target | IK Target |
| Subtarget | IK Target Bone |
| Pole Target | Pole Target |
| Pole Subtarget | Pole Target Bone |
| Pole Angle | IK Pole Angle |
| Chain Count | IK Chain Count |
Apply時に実際に書き込まれるのは、主に Pole Angle です。
target、subtarget、pole_target、chain_count などは表示対象であり、通常のApplyでは直接変更されません。
Mirror / Offset / Preview / Apply パネル
このパネルは、左右反映の中心になる操作パネルです。
IK Limit Axis Rules
IK LimitのMin/Maxを左右へ変換するルールです。
| ルール | 意味 |
|---|---|
| Same | Min/Maxをそのままコピー |
| Invert + Swap | 符号反転し、Min/Maxを入れ替える |
| Offset | Min/Maxにオフセットを加える |
| Invert + Swap + Offset | 符号反転・Min/Max入れ替え・オフセット加算 |
Limit Rotation Axis Rules
Limit RotationのMin/Maxにも、IK Limitと同様の変換ルールが用意されています。
v1.2.6dでは、IK Limit用ルールとLimit Rotation用ルールが別々に管理されています。コード上でも、IK用は ik_rule_x/y/z、Limit Rotation用は lr_rule_x/y/z として分けられています。
IK Pole Angle Rule
Pole Angleには、Min/Maxではなく単一角度用の変換ルールが使われます。
| ルール | 意味 |
|---|---|
| Same | 同じ角度をコピー |
| Invert | 符号反転 |
| Offset | オフセット加算 |
| Invert + Offset | 符号反転後にオフセット加算 |
| Signed 180° Complement | 180°補完ルール |
Signed 180° Complementは、たとえば以下のような変換を想定しています。
| 元の角度 | 変換後 |
|---|---|
| 169° | 11° |
| -136° | -44° |
このルールは、Pole Angle専用の変換としてコード上に定義されています。
Preview L → R / Preview R → L
Preview L → R
左側のテーブル値をもとに、右側のテーブル値を計算します。
対象は以下です。
| 対象 | Previewで反映される内容 |
|---|---|
| IK Limit | Min/Max、Lock IK |
| Limit Rotation | Min/Max、Use Limit、Owner Space、Euler Order、Affect Transform、Legacy Behavior |
| IK Pole Angle | Pole Angle |
Previewは、実際のBlenderデータを直接変更しません。あくまでアドオン上の表示テーブルを書き換えるだけです。
Preview R → L
右側のテーブル値をもとに、左側のテーブル値を計算します。
こちらも、実データは変更されません。
Apply Edited L / R / Both
Applyは、テーブル上の編集値を実際のBlenderデータへ書き込む操作です。
| ボタン | 内容 |
|---|---|
| Apply Edited L | 左ボーンだけに書き込む |
| Apply Edited R | 右ボーンだけに書き込む |
| Apply Edited Both | 左右両方へ書き込む |
Applyの対象は以下です。
| 対象 | Applyされるか |
|---|---|
| IK Limit | される |
| Limit Rotation | される |
| Limit Rotation Owner Space | される |
| Limit Rotation Euler Order | される |
| Limit Rotation Use Limit | される |
| Limit Rotation Min/Max | される |
| IK Pole Angle | される |
| IK Target / Pole Target | 通常Applyでは変更されない |
| IK Chain Count | 通常Applyでは変更されない |
Applyボタンは、内部的に kjik_apply_edited_side() を呼び出し、IK Limit、Limit Rotation、Pole Angleを書き込みます。
IK Constraint Reset / Rebuild
このパネルでは、IK Constraintを再構築できます。
| ボタン | 内容 |
|---|---|
| Reset Selected IK | 選択中のPose BoneのIK Constraintを再構築 |
| Reset Loaded L/R IK Pair | 読み込み済み左右ペアのIK Constraintを再構築 |
再構築時には、既存のIK Constraintから以下の情報を保持します。
| 保持される主な情報 |
|---|
| Constraint名 |
| Target |
| Subtarget |
| Pole Target |
| Pole Subtarget |
| Pole Angle |
| Chain Count |
| Owner Space |
| Target Space |
| Influence |
| IK関連の一般的な設定 |
コード上では、IK Constraintを一度削除し、新しく作成した後、保存していた情報を再適用する処理になっています。
Pole Angleの扱い
再構築時のPole Angleには、以下のモードがあります。
| モード | 内容 |
|---|---|
| Keep Current | 現在値を保持 |
| Set 0° | 0°に設定 |
| Set 180° | 180°に設定 |
| Use Table | アドオン上のテーブル値を使用 |
通常は Keep Current が安全です。0°や180°に変更すると、IK姿勢が変わる可能性があります。
Global Symmetry Audit
Global Symmetry Auditは、Armature内の左右ペアをスキャンし、差分を一覧表示する機能です。
監査対象は以下から選択できます。
| 監査対象 | 内容 |
|---|---|
| Edit Bone | Head、Tail、Length、Roll、Parent、Connect |
| Pose | Location、Rotation、Scale、Rotation Mode |
| IK Limit | Lock IK、IK Min/Max |
| Limit Rotation | Constraint有無、Owner Space、Min/Maxなど |
| IK Constraint | Target、Pole Target、Chain Count、Pole Angle |
v1.2.5以降では、大きなArmatureでのフリーズを避けるため、Edit BoneとPose Transformの監査は初期状態でOFFになっています。
Mirror Rule Modeの自動保存
v1.2.6dでは、IK LimitとLimit RotationのMirror Rule Modeが、左右ペア単位で自動保存されます。
| 操作 | 動作 |
|---|---|
| Scan Pair | 保存済みルールを自動ロード |
| Reload Pair | 保存済みルールを自動ロード |
| Load Audit Pair | 保存済みルールを自動ロード |
| Apply | 現在のIK/LRルールを左右ペアへ自動保存 |
手動のSave / Load / Clearボタンは削除され、Apply時に自動保存される設計になっています。
ただし、保存されるのはMirror Rule Modeのみです。
| 保存される | 保存されない |
|---|---|
| IK Limit Axis Rule Mode | Offset値 |
| Limit Rotation Axis Rule Mode | 角度値 |
| 左右ペア共有のルール | Min/Maxの実値 |
Offset値や角度値は保存されないため、必要な場合は都度確認してください。
実務上の推奨操作
1. まずScan Pairする
対象ボーンを選択したら、最初に Scan Pair を押します。
左右ボーン名が正しく検出されない場合、ボーン名の末尾が .L/.R、_L/_R などになっているか確認します。
2. Previewで確認してからApplyする
直接Applyするのではなく、まずPreviewを使って、右側または左側の値が意図通りに変換されるか確認します。
3. Limit Rotationが存在するか確認する
Limit RotationをApplyしたい場合は、対象ボーンにLimit Rotation Constraintが存在する必要があります。
ExistsがFalseの場合、現在のアドオンでは新規作成されません。
4. Owner Spaceを必ず確認する
Limit Rotationでは、角度Min/Maxだけでなく、Owner Spaceの違いが結果に大きく影響します。
左右のLimit Rotationが同じ数値でも、Owner Spaceが異なると挙動が変わる可能性があります。
5. IK Resetは慎重に使う
IK Constraint Resetは、IK Constraintを削除して再作成する処理です。
保持される項目は多いですが、Rigの構造によっては姿勢が変わる可能性があるため、実行前に保存しておくことを推奨します。
よくある疑問
Q1. ApplyボタンでLimit Rotationも反映されますか?
はい。反映されます。
Apply対象には、Limit RotationのOwner Space、Euler Order、Use Limit、Min/Maxなどが含まれています。
Q2. Limit RotationのOwner SpaceもApply対象ですか?
はい。対象です。
コード上では、次のように owner_space が書き込まれます。
kjik_safe_setattr(lr, "owner_space", getattr(settings, f"{prefix}_lr_owner_space"))
このため、Nメニュー上のL Space / R Spaceは、Apply時に実際のLimit Rotation Constraintへ反映されます。
Q3. Limit Rotation Constraintがない場合、Applyで作成されますか?
いいえ。現在のv1.2.6dでは作成されません。
既存のLimit Rotation Constraintがある場合だけ、その値を編集します。
Q4. Previewを押すとBlenderの実データが変わりますか?
いいえ。Previewはテーブル値だけを変更します。
実際のボーンやConstraintに反映するには、Applyが必要です。
Q5. IK TargetやPole TargetもApplyで変更されますか?
通常のApplyでは変更されません。
表示はされますが、Applyで主に反映されるIK Constraint関連値はPole Angleです。
Q6. Nメニュータブ名は変更されていますか?
変更されていません。
v1.2.6dでもNメニュータブは IK Symmetry です。
まとめ
KenJin IK Symmetry Limit Editor v1.2.6dは、左右ボーンのIK関連設定を比較・編集するための実用的なBlender 5.1向けアドオンです。
特に重要なポイントは以下です。
| ポイント | 内容 |
|---|---|
| Preview | 実データを変更せず、左右変換結果を確認 |
| Apply | テーブル値を実際のBone / Constraintへ書き込み |
| Limit Rotation | Owner Spaceを含めてApply対象 |
| IK Pole Angle | 左右変換ルールを使って調整可能 |
| IK Reset | IK Constraintを保持情報付きで再構築 |
| Mirror Rule | Apply時に左右ペアへ自動保存 |
| Nメニュー | IK Symmetryタブ、変更なし |
このアドオンは、左右対称RigのIK Limit、Limit Rotation、Pole Angleを整理する際に有効です。
一方で、Limit Rotation Constraintの新規作成は行わないため、必要なConstraintは事前にBlender側で作成しておく必要があります。
注意点・例外
この取説は、添付された KenJin-IK-Symmetry-Limit-Editor-126d.py のコード内容をもとに整理したものです。
実際のBlender 5.1 / 5.1.1での挙動は、使用しているRig構造、Constraintの順序、Owner Space、Bone Roll、親子関係、IK Target / Pole Targetの配置によって変わる可能性があります。
Rigが複雑な場合や、商用・公開用モデルに適用する場合は、専門家に確認が必要です。
参考文献・出典
- 添付ファイル:KenJin IK Symmetry Limit Editor v1.2.6d(KenJin-IK-Symmetry-Limit-Editor-126d.py)
