Virt A Mateには関節の概念があるので、自然なポージングやアニメーションを作るのが非常に簡単です。
反面、細かいパラメータがたくさんあったり、関節の強さのせいで思い通りの場所に固定できないなど、わずらわしい思いをすることもあります。
ポージングとは、頭の中に思い描いているポーズをキャラクターにとってもらうことですから、そのための作業は少なければ少ないほどよいです。
今回作成したPlugin「Pose Mirroring」を使えば、腕や足などの対称化がショートカットできるようになります。これにより、作業が格段に軽くなります。
目次
Pose Mirroring
どのようなPluginか、まずは動画でご確認ください。
見ての通り、腕や足などの片方のポーズを、もう一方に転送(ミラーリング)するPluginです。
これだけといえばこれだけなのですが、より詳しく解説していきます。
ミラーリングの仕組み・使い方
ミラーリングと一口にいっても、いろいろなミラーリングがあります。
まず、「どのパーツを、何を中心に、どの軸に対してミラーリングするのか」が決まっている必要があります。
Pose Mirroringでは、転送元になるポージング済みのパーツをSource Control、基準となる点をCenter Pointと命名しました。
Source Control
転送元のコントールを選択します。右手のポーズを左手にコピーしたい場合は、Source Controlは右手(rHandControl)になります。
当然、Source Controlとして選択できるのは、人間が左右対称にもっているパーツ(腕や手首や足など)のみです。
Center Point
Center Pointを中心としてミラーリングが行われます。軸設定もすべてCenter Pointを基準に行われます。
例えばCenter PointをPersonの「chest」にした場合、chestのオブジェクトの角度も含めてミラーリングを行います。
純粋にX軸ミラーリングするだけなら右手と左手の高さは一緒になるはずですが、上の動画では胸を中心にしているため、手が胸の向きに合わせて水平に揃っているのがおわかりいただけるかと思います。
チューザーから、Pluginを読み込んだPersonのControlとObjectを選択できます。他のものをCenter Pointにしたい場合は、Select Center Point From Sceneボタンで選択モードに移行してください。こちらの場合は、別のAtomのControlやObject等を選択できます。
Center PointとしてのControlとObject
Personは、jointControlによって対応するObjectを制御しています。
ControlがSpringに応じてObjectを引き寄せている仕様上、PositionやRotationと、ObjectのPositionやRotationは必ずしも一致しません。そのため、このCenter PointをControlにするかObjectにするかでミラーリングの挙動に違いが出てきます。
たとえば上の画像の左手を転送したいとき、Center Pointをchestにしていた場合……
なんかざっくりなシンメトリーじゃね?となることがあります。
上から見ると右手が前に出ているのがわかります。
これは、転送前にchestが少し正面右向きに傾いており、それを基準としたためです。転送前の画像を確認すると胸の向きが傾いていたのがわかります。
もし厳密なミラーリングを行いたい場合は、Center PointにObjectではなくControlを選択しましょう。Objectの実際の向きに関わらず、数値を基準にミラーリングできます。MoveタブでRotationをあらかじめミラーリングしたい軸に対してきれいな数字にします。完全に正面であれば(0,0,0)です。
ObjectをCenter Pointに設定すると、Controlが多少ズレていても、パーツの見た目通りの位置角度を基準にミラーリングできるので便利です。
また、Objectの場合はミラーリングするたびにObjectの位置角度にも関節の強度による影響がでるため、ミラーリングするたびに微妙に位置が変わってきます。最終的にはObjectは一つの位置に定まります。
Controlは厳密な、Objectは見た目どおりなミラーリングがそれぞれ得意ですので、使い分けましょう。
Axis
選択したAxis(軸)によって、ミラーリングする方向を変えることができます。
ここまでの動画で行っているミラーリングはX軸ミラーです。人間はX軸でシンメトリーなので、もっとも一般的なミラーリングです。
Axisで選択した軸によって、その下の設定項目も自動的に設定されます。これらの設定項目は個別で変更でき、変更した場合はAxisはCustomとなります。
それぞれのPositionやRotationは、Hold・Align・Mirrorが選べます。ここでのPositionやRotationとは、各ControlのMoveタブでの数値を意味します。
Holdの場合、転送先のPosition・Rotationは変更されません。Alignの場合、転送元の数値がそのまま転送されます。Mirrorであれば、転送元の数値を反転して転送します。
基本手にはAxisをいじるだけで事足りるでしょうが、パラメータの組み合わせ次第で上の動画のようなミラーリングも可能です。
Mirroring Parameter
このチェックボックスにチェックが入っている場合、転送元のパラメータを転送します。
パラメータとは、例えばPosition State(On, Off, ParentLink等)や、Physics(Tab)のHold Position Spring等です。Joint Drive(関節の向きや強度)関連も、それぞれ適切にミラーリングされます。
いちいち両側をそれぞれ設定する煩わしさから解放されます。
親子付けしていた場合には親も転送しますが、これはそのまま転送されます。例えば、右手の親を右肘に設定している状態で右手を左手転送しても、左手の親は右肘になります。これは必ずしも左右反転する必要はないだろうという判断による仕様です。手動で変えてください。
その他
ショートカットキーを設定できます。デスクトップの場合に便利です。
Source ControlはCustom UI内で選択可能ですが、ショートカットを使う場合、現在選択しているControlをSource Controlとして利用します。これにより、パラメータを設定してるときにすぐに転送できて便利です。
動画でlHandControlを選択した状態でショートカットキーを押すことで、rHandControlにミラーリングしています。
Pluginのダウンロードと適用方法
ダウンロード
ルートフォルダに解凍してください。
バージョンは1.18.1.4の時点で作成しました。
適用方法
ポージングを行いたいPersonに「PoseMirroring.cslist」を読み込みます。
再配布について
本コンテンツのライセンスはCC BYです。
左右対称ポージングのコツ
jointControlのうち、対称性の無いものは、headControl・neckControl・chestControl・pelvisControl・hipControl・abdomenControl・abdomenControl2です。男性の場合これにpenis関連が加わります。
どんなポーズでも、これらのControlのうちいくつかのPosition StateおよびRotation StateをOff以外にしているとおもいます。
Off以外の、対称性の無いControlのPositionのXを0、RotationのYとZを0でロックした状態でポージング行うと、左右対称ポージングがはかどります。
対称性のあるパーツは、RootControlをCenter Pointに設定してミラーリングしていけば、厳密なシンメトリーポーズを作れます。
関節の影響でCycleForceやAnimationPatternの動きが思うように行かないときは、厳密なシンメトリーポーズにすれば問題が解決します。
ミラーリングありがたいです。
関節可能なギズモに胸、首、膝等いろいろありますが、何か設定等されているでしょうか?
このサイトを見てvamを最近始めたのですがデフォルトのままなのか頭、両手、両足の5つしか表示されなくてちょっと困ってます。
こちらの記事の「PositionとRotationを制御するモードを選ぶチェックボックス(State)」の項を御覧ください。
https://vamjapan.com/pose/#Control-3
ありがとうございます。
見落としていた様でうまくいきました。ありがとうございます。
こちら、どうやら赤いターゲットを表示させるために初期設定が必要だったことを見落としていたので、ポージングの記事に追記させていただきました。