ポリゴン・ピクチュアズが現場で実践しているリグおよびアニメーション制作の手法を、Maya用リグ・アニメーション開発ツール「eST3」を中心に紹介していく本連載。今回は、eSTのストランドシミュレーション機能を使用した髪のシミュレーションについて解説します。

記事の目次

    Information

    eST3

    eST3 は、リギングとアニメーションのフレームワークです。Maya で動作し、様々なツールを提供します。

    動作環境:Windows 10(Maya 2020〜2024/Python 2.7, 3.7, 3.9, 3.10)、Linux(Maya 2020〜2023/Python 2.7, 3.7, 3.9)
    価格:無料(※利用規約とプライバシーポリシーへの同意が必要)

    est3.jp

    Topic 01:ストランドシミュレーションとは?

    「strand」ユニットは、eSTリグを構成する骨構造プリセットのひとつで、根元が固定された1本のジョイントチェーンを基本とし、複数のチェーンを定義できます。ここでは、髪の毛にセットアップされた「strand」ユニットの既定の「standard」コントローラを使用し、簡易的にシミュレーションを行う手順を紹介します。

    アニメーターがあらかじめ付けたアニメーションをゴールとし、アニメーターの作業の範囲で簡易的なシミュレーションを行うことで、意味のあるポーズや動きに対して物理的なニュアンスを効率よく足すことを目的としています。

    Topic 02:ゴールとなる形状を作成する

    まず、シミュレーションのゴールとなる動きを、IK/FKコントロールを使用して設定します。今回は体全体の動きを利用するため特別な設定は行いませんが、必要に応じて手付けでアニメーションを追加します。

    ▲ベースの走り。髪の毛は動いていません

    Topic 03:シミュレーションを実行する

    走っている女の子の髪を、ストランドシミュレーションで動かします。

    まず、シミュレーションを正確に計算させるため、Mayaの再生設定を「Play every frame」に変更します。

    ▲[Time Slider→Playback speed→Play every frame]を選択

    各strandコントローラの simulationParams にある mode アトリビュートを変更することで、シミュレーションの状態を切り替えることができます。ここでは、複数のstrandユニットコントローラの設定を一度に変更する方法をご紹介します。

    「リグビュー」の Hair タブを開き、[Simulation→グローバルストランドエディター]から「strand: Standard コントローラーエディター」を起動します。

    • ▲部位ごとにシミュレーションが適用できるリストが並びます

    シミュレーションを適用したい部位を選択し、[選択]メニューの[編集]をクリックして[シミュレーション]モードに切り替えます。

    設定が完了したら、実際に再生して挙動を確認してみます。

    ▲ モードを切り替えるだけ!
    ▲髪の毛に動きはつきましたが、全体的に動きすぎていて調整が必要です

    キャラクターのデザインやモーションによっては、初期設定のままで最適な結果が得られるケースもありますが、今回は個別の調整が必要です。

    ストランドシミュレーションは、各種パラメータを操作することで、動きの質感を細かく調整することができます。

    Topic 04:パラメータで動きを調整する

    特に動きが大きい前髪と横髪については、動きの幅を抑えるよう調整します。

    [選択]メニューから[パラメータ]をクリックし、[Simulation Weight]0.5 に設定します。

    ▲ Simulaton Weight は  0 ~ 1 の数値で制御します。0 にすると動かなくなります
    ▲左:デフォルトの値、右:調整後。動き幅を半分に抑えるだけで一気に良い感じ!

    全体の動きの雰囲気が決まったら、次に部位ごとに気になる部分を調整していきます。

    前髪/HairFront

    肌への相貫を抑えるために、硬さを出しつつも動きの幅は維持するように調整します。 

    調整するパラメータ:
    Simulation Start Crv Attract

    横髪/HairSide

    動きを抑えつつ、硬い印象にならないよう、毛先には柔らかさを残す調整を行います。

    調整するパラメータ:
    Simulation Weight
    Simulation Blend Bias

    後ろ髪/HairBack

    前髪や横髪の挙動に比べ、動きが緩やかになってしまっています。衝突の精度を上げることで、動きに統一感をもたせます。

    調整するパラメータ:
    Iterarions

    一部に相貫している箇所もありますが、アニメーションとしては理想に近いかたちになったため、パラメータの調整はこれで完了です。

    ▲方向性が決まりました

    動きが定まったら、シミュレーション結果をキャッシュとしてベイクします。

    シミュレーションによる動きは、開始フレームから全てのフレームを順に再生することで再現されますが、そうでなくても再現できるよう、最終的には必ずアニメーションカーブにベイクし、シミュレーションモードを「キャッシュ」に変更しましょう。

    また、FKコントローラにベイクしておくことで、手付けによる細かな調整を行なったり、それをゴールとして再度シミュレーションを行なったりすることも可能です。

    Topic 05:シミュレーションをベイクする

    キャッシュをベイクする

    ベイクしたい部位を選択し、[編集→キャッシュにベイク]を実行します。

    キャッシュ専用ノードのアトリビュートにベイクされ、処理が完了すると再生モードは「シミュレーション」から「キャッシュから再生」へ自動的に切り替わります。

    ▲ グラフエディターからアニメーションカーブを編集することができます

    キャッシュをFKコントローラにベイクする

    ベイクしたい部位を選択し、[編集→変換:FKへ]を実行します。

    処理が完了すると、FKコントローラにアニメーションキーがベイクされます。

    ▲コントローラとメッシュの動きがリンクするので、直感的にアニメーションを調整することができます

    まとめ

    1:リグビューの「ストランドコントローラーエディター」からシミュレーションを実行する。
    2:パラメータを調整して動きの質感を整える。
    3:キャッシュをベイクする。必要に応じてFKコントローラーにベイクし、最終調整を行う。

    Topic 06:シミュレーションの精度を上げるコツ

    シミュレーションの精度を高めたい場合や、期待どおりの結果が得られない場合は、以下のポイントを確認してみてください。

    スピードとポーズの変化量

    短時間で大きくポーズが変化するアニメーションでは、シミュレーションが安定しないことがあります。そのため、シミュレーションを扱う際は、誇張したカートゥーン調の動きよりも、リアル寄りのアニメーションスタイルの方が精度の高い結果を得やすくなります。

    開始フレームにのりしろをつける

    シミュレーションのスタートフレームには、あらかじめ約30フレームほどののりしろを設けておくと挙動が安定します。例えば、キャラクターのアニメーションが1fから始まる場合は、-30fをスタートフレームに設定します。

    各パラメータの目安

    全てのパラメータをアニメーションごとに調整するのは手間がかかります。

    ベースとなる数値は、理想より少し大きく動く設定にしておき、「Simulation Weight」で全体の動き幅を調整する方法が効率的です。また、パラメータの設定値は「eSTシェルフ」や「ライブラリアン」に登録することで、チーム内で共有することも可能です。

    Topic 07:今回登場したツール

    strandユニット Standardコントローラー

    「strand」ユニットは、eSTリグを構成する骨構造プリセットのひとつで、根元が固定された1本のジョイントチェーンを基本とし、1本以上のジョイントチェーン構造で定義されます。

    strandユニットの既定の「standard」コントローラでは、作成時にどのコントロールを使用するかを選択できます。以下のコントロールを必要に応じて追加でき、各コントロールは次の順序で結果に影響します。

    ・IK
    ・プレコントロール※
    ・FK
    ・シミュレーションコントロール※
    ・ポストコントロール※

    ※詳細は別途指定します。手作業でセットアップ可能なプリセットが用意されているほか、拡張スクリプトを記述することで、ユーザーが独自のコントロールを追加することも可能です。

    シミュレーションコントロールは、上記のFKまでのコントロールによって付けられたアニメーション結果を参照します。これにより、アニメーターが付けた動きに対して、物理的なニュアンスを効率的に追加することができます。

    今回は、IK、FK、およびnHairによるシミュレーションを適用できるコントローラを使用しました。以下に、今回作成したシミュレーションコントロールの主なパラメータ属性を紹介します。

    params: simulationWeight

    シミュレーション結果を出力する割合を指定します。0 にすると影響がなくなり、1 が最大値です。キャッシュベイク後も調整可能です。

    params: simulationBlendBias

    シミュレーション結果を出力する割合が、ジョイントチェーンの根元から先へどのように変化するのかを指定します。0 のときはどのジョイントも同じだけ影響を受けます。数値を大きくすると根本より影響が少なくなります。キャッシュベイク後も調整可能です。

    simulationParams: startCrvAttract

    シミュレーション時に、ゴールとなる姿勢の影響をどの程度受けるかを指定します。数値を上げるとゴールの形状に近づき、動きが硬くなりますが、動きの幅自体は維持されます。キャッシュベイク後は調整できません。

    simulationParams: iterarions

    シミュレーション計算の繰り返し回数を指定します。数値を上げるほど衝突判定の精度は向上しますが、その分計算負荷も高くなります。そのため、当社では最大値を 4 に設定しています。キャッシュベイク後は調整できません。

    シミュレーション結果は最終的にベイクして使用するため、上記以外のシミュレーションソルバのパラメータについても、必要に応じて自由に変更しながらシミュレーションを行なって構いません。

    ストランドコントローラエディター

    指定したリグに含まれる複数の「strand」ユニットコントローラを対象に、一括で編集を行うツールです。

    特にシミュレーションコントロールが設定されている場合は、シミュレーションモードの切り替えやベイク処理を同時に実行できるため便利です。

    次回予告:コマ落としの方法

    次回は、劇場版『ヒプノシスマイク -Division Rap Battle-』でも活用されたコマ落としの手法をご紹介します。

    ポリゴン・ピクチュアズ

    ポリゴン・ピクチュアズは、1983年7月設立の国内最大手のデジタルアニメーションスタジオです。設立以来、「誰もやっていないことを 圧倒的なクオリティで 世界に向けて発信していく」ことをミッションとし、マレーシアとインドの制作拠点を含め300名以上のクリエイターが集結。最新技術を駆使し情熱をもって先端的なエンタテインメント映像の製作に力を注いでいます。代表作は『シドニアの騎士』『トランスフォーマー』シリーズ、『スター・ウォーズ レジスタンス』『ピングー in ザ・シティ』、劇場版『ヒプノシスマイク -Division Rap Battle-』など。 

    詳細につきましては、www.ppi.co.jp をご覧ください。

    公式X(旧Twitter):@POLYGONPICTURES(日本語)/@PPI_CG_anime(英語)
    公式Instagram : @polygonpicturesinc

    TEXT_ポリゴン・ピクチュアズ連載企画チーム
    EDIT_小村仁美 / Hitomi Komura(CGWORLD)