ボーンのミラー ポーズ
「ファイル」メニューの「開く…」から、「mikoto_bone11_mir.toy」を開きます。タイムライン バーでフレーム番号を「1」に移動すると、以下のようなポーズになります。このポーズを左右対称にしてみます。
ツール バーで「ブランチ選択 モード」(Shift+B)にして、
「ヒップ」ジョイントを選択すると、以下のように子ジョイント以下が全て選択されます。(オブジェクト パネルの右クリック メニューから、「以下を設定」→「選択する」でも同様の選択ができます。)
ルート ボーンである「ヒップ」ジョイントはこのポーズでは少し傾いていますが、バインド ポーズにおいてX軸方向が左右方向となっていることに注意してください。
ここで、「オブジェクト」メニューの「ミラー ポーズ」をクリックすると、以下の「ミラー ポーズ」ダイアログが表示されます。「対称の基準となる親オブジェクト」として「ヒップ」、「対称方向」として「X方向」が選択されていることを確認します。また、このボーン セットでは左右の対称相手がいるジョイントは名前の「左」、「右」の違いで判別できるので、「文字列セット2」がONになっていることを確認し、「OK」ボタンをクリックします。
すると、以下のようにボーン セット全体がミラー ポーズになりました。
今回はボーン セット全体をミラー ポーズにしましたが、両腕のボーンを選択してコマンドを実行すれば両腕のみ、右腕のボーンを選択して実行すれば右腕のみをミラー ポーズにすることが出来ます。左右のミラー ポーズなので、いずれも「ヒップ」ジョイントのX方向が対称方向となります。
IKハンドルのミラー ポーズ
IKハンドルのミラー ポーズでは、通常のオブジェクトにおける位置や角度などのパラメータに加えて、ツイスト角や極ベクトルもミラー化されます。「ファイル」メニューの「開く…」をクリックし、「mikoto_ik_anim1_mirror.toy」を開きます。このモデルでは、左右の腕のIKハンドルの位置、ツイスト角、極ベクトルは異なっており、左足の脚のIKハンドルの位置、角度も異なっています。
また、このモデルのルートで原点位置にあるヌル オブジェクト「Skeleton」においては、X軸方向が左右方向になっていることに注意してください。
ツール バーで「ブランチ選択 モード」(Shift+B)にして、
キーボードの「SHIFT」キー(複数選択)を押しながら、両腕両脚のIKハンドルを全て選択します。脚のIKハンドルは階層化されているので注意してください。
ここで、「オブジェクト」メニューの「ミラー ポーズ」をクリックすると、「ミラー ポーズ」ダイアログが表示されます。「対称の基準となる親オブジェクト」として「Skeleton」、「対称方向」として「X方向」が選択されていることを確認します。また、このモデルでは左右の対称相手がいるIKハンドルは名前の「Left」、「Right」の違いで判別できるので、「文字列セット1」がONになっていることを確認し、「OK」ボタンをクリックします。
すると、以下のように全てのIKハンドルについて、ミラー ポーズになりました。IKハンドルのツイスト角や極ベクトルもミラー対称化されています。
ボーンのミラー ポーズと同じく、必要なIKハンドルのみを選択してミラー ポーズにすることができます。左右のミラー ポーズなので、いずれも「Skeleton」ジョイントのX方向が対称方向となります。
ミラー ポーズに対応するボーン
スキニングされているボーンに対して「ミラー ポーズ」コマンドを実行する場合、正確に実行するためにはバインド ポーズにおける各ジョイントの角度が下記の条件を満たしている必要があります。
ミラー対称になっているボーンは、頭や背骨などの中央部のジョイントと、腕や脚などの対称相手がいるジョイントに分けられます。
- 中央部のジョイントは、対称軸以外の角度が0か180の倍数であること。
- 対称相手がいるジョイントは、相手のジョイントに対してミラー対称の角度になっていること。
例えば、X軸方向ミラーにおいて、中央部の「頭」ジョイントの角度は(0, 0, 0)、(90, 0, 180)、(30, -180, 0)等であればよく、対称相手がいる「右脚」ジョイントは「左脚」ジョイントをX軸方向にミラー複製で作成します。
なお、全てのジョイントの角度が(0, 0, 0)のボーン セットも1. 2.の条件を満たしています。
ミラー ポーズに対応していない例
「ファイル」メニューの「開く…」から、「mikoto_bone8.toy」を開きます。このモデルのルート ボーンである「ヒップ」ジョイントはZ軸方向が対称方向になっており、
オブジェクト ウィンドウを参照すると、回転の角度は(-90,-180, 88.755)となっています。「ヒップ」ジョイントは中央部のジョイントなので、Z軸以外の角度は0か180の倍数である必要がありますが、X軸の角度が条件を外れているため、正確にミラー ポーズ コマンドを実行することができません。