【プラグイン配布】シンメトリーなポーズを作成できるプラグイン「Pose Mirroring」を作りました。

VirtAMate(VaM)には関節の概念があるので、自然なポージングやアニメーションを作るのが非常に簡単です。

反面、細かいパラメータがたくさんあったり、関節の強さのせいで思い通りの場所に固定できないなど、わずらわしい思いをすることもあります。

ポージングとは、頭の中に思い描いているポーズを、キャラクターにとってもらうことですから、そのための作業は少なければ少ないほどよいです。

今回作成したプラグイン「Pose Mirroring」を使えば、腕や足などの対称化がショートカットできるようになります。これにより、作業が格段に軽くなります。

この記事は、VaMのポージングの基本を抑えた上で読むことをおすすめします。以下の記事が参考になります。

Virt A Mateの操作解説:ポーズと物理演算編

Pose Mirroring

どのようなプラグインか、まずは動画でご確認ください。

見ての通り、腕や足などの片方のポーズを、もう一方に転送(ミラーリング)するプラグインです。

これだけといえばこれだけなのですが、より詳しく解説していきます。

ミラーリングの仕組み・使い方

ミラーリングと一口にいっても、いろいろなミラーリングがあります。

まず、「どのパーツを、何を中心に、どの軸に対してミラーリングするのか」が決まっている必要があります。

Pose Mirroringでは、転送元になるポージング済みのパーツをSource Control、基準となる点をCenter Pointと命名しました。

Source Controlはもちろん、Center Pointも任意で決めることができます。標準では読み込んだ人物のRootCotnrolですが、いかなる点も基準点にできます。

Source Control

転送元のコントールを選択します。右手のポーズを左手にコピーしたい場合は、Source Controlは右手(rHandControl)になります。

当然、Source Controlとして選択できるのは、人間が左右対称にもっているパーツ(腕や手首や足など)のみです。

Center Point

Center Pointを中心としてミラーリングが行われます。軸設定もすべてCenter Pointを基準に行われます。

例えばCenter Pointを人物の「chest」にした場合、chestのオブジェクトの角度も含めてミラーリングを行います。

純粋にX軸ミラーリングするだけなら右手と左手の高さは一緒になるはずですが、上の動画では胸を中心にしているため、手が胸の向きに合わせて水平に揃っているのがおわかりいただけるかと思います。

選択メニューから、プラグインを読み込んだ人物のControlとObjectを選択できます。他のものをCenter Pointにしたい場合は、Select Center Point From Sceneボタンで選択モードに移行してください。こちらの場合は、別のAtomのControlやObject等を選択できます。

また、Select Center Point From Sceneで、プラグインを読み込んだ人物のcontrolを選択すると、選択メニューの名前がおかしくなります。使用上の問題は特にありません。

Center PointとしてのControlとObject

人体Atomは、各Control(chestControl,hipControl等)によって各Object(実際の体の部位)を制御しています。

Controlがその強度に応じて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軸でシンメトリーなので、もっとも一般的なミラーリングです。

ちょっと混乱するかもしれませんが、Center Pointが正しい向き(Position:0,0,0およびRotation:0,0,0)で存在しているものを正面から見たとき、左右対称がX、上下対称がY、前後対称がZです。

Axisで選択した軸によって、その下の設定項目も自動的に設定されます。これらの設定項目は個別で変更でき、変更した場合はAxisはCustomとなります。

それぞれのPositionやRotationは、Hold・Align・Mirrorが選べます。ここでのPositionやRotationとは、各ControlのMoveタブでの数値を意味します。

Holdの場合、転送先のPosition・Rotationは変更されません。Alignの場合、転送元の数値がそのまま転送されます。Mirrorであれば、転送元の数値を反転して転送します。

基本手にはAxisをいじるだけで事足りるでしょうが、パラメータの組み合わせ次第で上の動画のようなミラーリングも可能です。

Mirroring Parameter

このチェックボックスにチェックが入っている場合、転送元のパラメータを転送します。

パラメータとは、例えばPositionState(On, Off, ParentLink等)や、PhysicsタブのHold Position Spring等です。Joint Drive(関節の向きや強度)関連も、それぞれ適切にミラーリングされます。

いちいち両側をそれぞれ設定する煩わしさから解放されます。

親子付けしていた場合には親も転送しますが、これはそのまま転送されます。例えば、右手の親を右肘に設定している状態で右手を左手転送しても、左手の親は右肘になります。これは必ずしも左右反転する必要はないだろうという判断による仕様です。手動で変えてください。

その他

ショートカットキーを設定できます。デスクトップの場合に便利です。

SourceControlはプラグインUI内で選択可能ですが、ショートカットを使う場合、現在選択しているControlをSourceControlとして利用します。これにより、パラメータを設定してるときにすぐに転送できて便利です。

プラグインのダウンロードと適用方法

ダウンロード

Google Drive

VaMルートフォルダに解凍してください。

バージョンは1.18.1.4の時点で作成しました。

適用方法

ポージングを行いたい人物Atomに「VaMJapan/PoseMirroring.cslist」を読み込みます。

再配布について

当プラグイン利用者はプラグインをシーンに含んでアップロードすることが可能です。その際に特記すべき事項はありません。

このプラグインを改変して配布する場合、配布時にVaMJapan(MaF)による制作であることを明記し、この記事へリンクを貼ってください。

左右対称ポージングのコツ

人物AtomのControlのうち、対称性の無いものは、headControl・neckControl・chestControl・pelvisControl・hipControl・abdomenControl・abdomenControl2です。男性の場合これにpenis関連が加わります。

どんなポーズでも、これらのControlのうちいくつのPositionStateおよびRotationStateをOff以外にしているとおもいます。

Off以外の、対称性の無いContorlのPositionのXを0、RotationのYとZを0でロックした状態でポージング行うと、左右対称ポージングがはかどります。

対称性のあるパーツは、RootControlをCenter Pointに設定してミラーリングしていけば、厳密なシンメトリーポーズを作れます。

関節の影響でCycleForceやAnimationPatternの動きが思うように行かないときは、厳密なシンメトリーポーズにすれば問題が解決します。

まとめ

以上でプラグインの紹介は終わります。これでポージングがかなり楽になったね!

相変わらずザルコーディングなので、バグがあったら教えてくれると嬉しいです。