本記事内で公開している全ての情報について、その完全性、正確性、適用性、有用性等いかなる保証も行っておりません。
これらの情報のご利用により、何らかの不都合や損害が発生したとしても、当社は何らの責任を負うものではありません。
自己責任でご使用ください。
関隆史様
2018/08/13
はじめまして。
BACKBONEの田淵です。
今回は、PoseSpaceDeformationを使ったリグのご紹介です。
リグを設計する際にデフォームのクォリティを上げるため、
各関節に補助骨やBlendShapeを設定することがありますが、
私は、大量のキャラに対して同じセットアップが必要な場合は、
補助骨でリグを設計するようにしています。
補助骨とウェイトを流用することで、効率的に他のキャラへ移植が出来ますし、
デフォームのクォリティも保つことが出来ます。
形状が大きく異なるモデルでも、ウェイト調整用の共通のCageモデルを使用することで、
効率よく移植出来ることも利点として考えられます。
一方、BlendShapeで設計する場合は、各キャラごとにターゲットモデルの修正が発生する恐れがあります。
効率の観点から、これまで必要な個所のみでしかBlendShpaeを使用して来なかったのですが、
maya2017から搭載されたPoseSpaceDeformationを使用することで、
これらの問題を気にせずにBlendShapeを使用することが可能となりました。
では、作成方法からご紹介します。
① Deform > Pose Space Deformation > Pose Editorでエディターを開きます。
角度を取得したいJointを選択して、Create Pose Interpolatorボタンをクリックすると、
JointのposeInterpolator(ポーズ補間ノード)が作成されます。
② モデルの形状を修正したいポーズに設定し、Meshを選択して、
Pose EditorのAdd Poseボタンをクリックします。
Name:にBlendShape名を設定し(今回はarm_BS)、BaseMesh:のSelectedにチェックを入れて、
Create Pose Shapeをクリックします。
③これで、MeshにBlendShapeが追加され、poseInterpolatorに上記ポーズが追加設定されました。
作成後はEditボタンが赤く表示され、エディットモード状態なのでモデル修正が行えます。
モデル修正後、Editボタンをクリックすると、Editボタンが灰色となりShapeが確定します。
モードを切り替えることで、何度でもモデルの修正が行えますので、
確認しながら修正を行ってください。
TypeをSwing and Twistに切り替えると、Poseの判定にTwist回転も加わります。
①Pose Editorで上記で作成したposeInterpolatorを選択し、右クリックでMirrorを実行すると
Jointの名前のSource(検索する文字)とTarget(置き換える文字)を設定するUIが立ち上がります。
② OKをクリックすると、反対側のposeInterpolatorが作成されます。
Mirror実行後にL側に別のPoseを追加しても、再度Mirrorを実行すると、
何度でもR側に反映させることが出来ます。
Pose EditorのFile > Export AllでPoseとShape情報が書き出せます。
Pose EditorのFile > ImportでPoseとShape情報が読み込めます。
同じトポロジーのMeshで作成された、プロポーションが異なるモデルを2つ用意しました。
右側のモデルがPoseSpaceDeformationを設定したベースモデル、左側のモデルが新規モデルです。
モデルの名前は同じ名前に設定しておかないと、移植出来ません。
この程度の体格差であれば、問題無く移植出来ます。
①PoseSpaceDeformationを設定したベースモデルを選択し、
Pose EditorのFile > Export SelectionでPoseとShape情報を書き出します。
②新規モデルを選択し、
Pose EditorのFile > ImportでPoseとShape情報を読み込みます。
Importを行うとこのような感じになります。
ほとんどターゲットの修正は必要無いくらいですね。
最後にPose Space Deformationを使った小ネタをご紹介します。
①上腕の捻り曲げ成分を分解したJointを設定し、Tシャツの袖部分をこのJointにバインドします。
Twist成分を抜いたJointなので、Tシャツは上腕のTwistの影響を受けません。
肘を曲げるとTシャツの袖が素体と干渉しています。
② 素体との干渉を避けるために、肘のJointをドライバーとして補助骨を設定してみます。
一見よさげですが、上腕をTwistすると補助骨が残ってしまいます。
上腕のTwistも考慮にいれたJointをドライバーにする必要がありそうです。
③ 別途、上腕にJointを作成し常に手首を見るように設定します。
作成したJointは、捻り曲げ成分のJoint階層へ格納しておきます。
※手法は色々ありますが、今回はJointにIKを設定し、手首にコンストレインしています。
④ ③で作成したJointに対し、poseInterpolatorを作成します。
肘を曲げた際のPoseを作成し、素体との干渉を避けるようにモデルを修正します。
このままだと、上腕をTwistした際に、補助骨と同じような結果になります。
上腕をTwistして肘を曲げた際のPoseで、モデル修正が必要です。
⑤ 上腕をTwistして肘を曲げた際のPoseを作成し、モデルを修正して完成です。
※モデル形状は詰めておりませんが、ご了承ください!
PoseSpaceDeformationを用いて移植する際の注意点としては、下記となります。
クロスシミュレーションで作成したターゲットを使用すると、
よりリアルな表現にすることも可能です。
是非試してみてください。
ではまた!