ETERNITY

ポポスカートは実は…


2024/01/31 11:02:01
「Unreal Engineで開発するからスカートは当然風になびきますよね?」



こんにちは、開発者Kです。

今回は、衣装アニメーション(特にスカート類の衣装)で自然な動きを表現するために

アニメーション関連のR&D過程を紹介します。



ヘアアニメーション編で紹介した「キーアニメーション」、「リギングとスキニング」を思い出してみましょう。

キーアニメーション:フレームごとに骨格の位置を変えて「キー」を設定する。

リギングとスキニング:モデリングの各頂点と骨格を設定して(リギング)、

骨格に動きによる影響を受ける加重値を付与(スキニング)



ポポスカート(防弾ではない)

ポポスカートを例に挙げると、ポポスカートのスカート丈は脚の骨にリギングとスキニングが施されています。

そのため、キーアニメーションによって足が動くと設定されたスカートが一緒に動くようになります。


では、ポポスカートのスカート部分を別々に動かすにはどうすればいいのでしょうか?

はい、スカートを動かす骨格を追加で作って「キーアニメーション」を別途設定すればいいでしょう。

アニメーターの方にこの嬉しいニュースを伝え、私は退勤します…。

ヘアアニメーション過程をご覧になったミレシアンの方はすでにお気づきかもしれませんが、問題があります。

ちょっとおさらいすると…

ところで…
今回はツインテールが追加されました。(基本骨格にツインテール用の骨格を追加→すべてのアニメーションでフレームごとのキーを追加)

ところで…今回はポニーテールでも左に結んだポニーテールです。
(基本骨格に左ポニーテール用の骨格を追加→すべてのアニメーションでフレームごとのキーを追加)

ところで…今回は前髪が追加されました。
(基本骨格に前髪用の骨格を追加→すべてのアニメーションでフレームごとのキーを追加)

ところで…今回はボブヘアが追加されました。
(基本骨格にボブヘア用の骨格を追加→すべてのアニメーションでフレームごとのキーを追加)

このままヘア用の骨格を追加し続けると、ヘア用の骨だけで数百個になりますね。




このままだと、衣装ごとに形が違うので骨格がどんどん増えてしまいますね…。

しかし、すでにヘアアニメーションで一度経験した問題です。

ヘアアニメーションと同じソリューションを適用すればいいのです!!!

アニメーターの方にこの嬉しいニュースを伝え、私は退勤します…。



クロスシミュレーション

以前、ヘアアニメーションで紹介した物理ベースのアニメーションの一種で

服や織物などの柔らかい素材の動きを模倣する技術を指します。

ヘアアニメーションに適用された物理ベースのアニメーションと異なる点は、

クロスシミュレーションの動きに「骨格を必要としない」ことです。

もちろん、その代わりに頂点単位での物理演算が入るのでパフォーマンス面で重いのは仕方ありません。

織物の柔らかな動きを表現するのに優れた効果を発揮するクロスシミュレーションを

マビノギに取り入れてみてはと思いました。

歩くたびに着ているポポスカートがひらひらとなびく想像をしながらクロスシミュレーションの適用を開始しました。




問題は形

様々な形のスカート(短いスカート、長いスカート、幅の広いスカート、幅の狭いスカート…)で

テストを行う際に問題が発生しました。

リギングやスキニングによってモデリングの原形以上に伸びる部分が無くなり、頂点単位で物理演算を行うため、

足がスカートを貫通したり、スカート丈が巻き上がるなどの問題が生じました。

もちろん、物理プロパティを追加で設定し、演算量を増やせば改善の余地がありますが、長くて幅が狭い形の

スカートでは自然な動きが期待できませんでした。

従来のように骨格を設定し、

リギングやスキニング後にキーアニメーションで動きをつけると従来の形以上にメッシュが増えますが、

当初考えていたひらひらとなびくスカートの動きから遠のいてしまいます。





再び物理シミュレーション

以前、ヘアで適用したようにスカート用の骨格を別途製作して基本骨格と分離させ、スカート用の骨格に

物理シミュレーションを適用する方式を導入しました。

キャラクターの基本骨格はキャラクターの動きを制御するために使用され、この骨格はキャラクターの全体的な

動きを決定し、歩く、走る、ジャンプなどの基本的なアニメーションを処理します。

スカート用の骨格はスカート部分の物理シミュレーションを担当します。

(スカートの動きをよりリアルに表現するために使用)

物理ベースのアニメーションは重力、空気抵抗、外部からの干渉などの物理的要素を

考慮してスカートの動きを計算します。

例えば、キャラクターが素早く動くとスカートが風になびく現象が物理的にシミュレーションされます。

このような物理的な効果により、ゲームキャラクターのモーションをよりリアルに感じます。

このように分離された2つの骨格システムを組み合わせ、キャラクターの全体的な動きは伝統的な

アニメーション技術を活用しながらも、特定の部分であるスカートの動きは、物理ベースのアニメーションで

より自然に表現されます。



しかし、物理ベースのアニメーションの適用にも問題がありました。

小さな動きでは外部要素による反応が小さくて(スカートの動きが細かく表現されにくい)、

一方、大きな動きでは加速や衝突がシミュレーションを不安定にし、動きが不正確に見えることがあります。

これらの問題に対応するためには物理シミュレーションのパラメータを調整したり、

モーションの大きさや方向を調整する必要がありますが

すべての動きで物理シミュレーションの結果が自然に見えるには限界がありました。



キーアニメーションと物理シミュレーションの組み合わせ

この問題を解決するためにチェーンの形で構成されたスカートの骨格のチェーンの始まりの部分の骨格には

キーアニメーションを適用しました。

これにより、スカート上部での動きはキーアニメーションで安定して制御されます。

スカートの残りの骨格には物理ベースのアニメーションを適用し、

上部骨格のキーアニメーションの動きに基づいて物理的な動きを伝播します。

これにより、大きなモーションでの安定性と小さなモーションでの動きの両方を満足できる形になりました。

問題は全スカートの形のメッシュに骨格を分離し、

各メッシュの骨格ごとにキーアニメーションを設定する必要がありますが、

これを解決するためにUnreal Engineのリターゲティング機能を活用しました。



リターゲティングシステムの活用
効率を上げるために基本の胴体骨格にスカートのボーンを追加し、これを利用してスカート上部のボーンに

キーアニメーションを適用する過程でUnreal Engineのリターゲティングシステムを使用しました。

スカートの骨格を基本胴体の骨格に追加します。

これにより、スカートと胴体の骨格が統合されて一つの骨格になります。

基本胴体の骨格に追加したスカートボーンにキーアニメーションを適用します。

このアニメーションはスカートの上部の動きを制御します。

Unreal Engineのリターゲティングシステムを使用し、

様々な形のスカートが(長いスカート、短いスカート、片方だけ長いスカート、

ウエストラインのスタート地点がそれぞれ違う形のスカートなど)基本的な胴体骨格の動きに対応するようにします。



これにより、スカートの上部の動きは基本の胴体骨格のスカートボーンの「キーアニメーション」によって動き、

残りの部位は各スカートごとのメッシュに設定された骨格の物理シミュレーションによって動きます。

リターゲティングシステムは既存の胴体骨格と新たに追加したスカートボーンの構造を効率的に統合し、

キャラクターの骨格を柔軟に構成して様々な部分のアニメーションを組み合わせるのに効果的でした。


<リターゲティング結果(空色 - 基本骨格、青色 - スカートメッシュ骨格) >



合体!(キーアニメーション+物理アニメーション+リターゲティング)

すべての形に満足することはできませんが…私たちは答えを見つけるでしょう。いつものように。

以下は初期のR&D過程で使用されたテスト用の一時的なモデリングリソースです。

キーアニメーション(胴体骨格+スカート上部骨格)、物理アニメーション(スカート下部骨格)の組み合わせ結果





<移動モーション - キー+物理アニメーションの組み合わせ(スカート4種)



ポポスカートは実は…



ポポスカートは実は…ひらひらとなびくスカートでした!!

上記で紹介した内容は、すべてポポスカートの自然な動きを表現するための過程でした。

クロスシミュレーションはポポスカートに適用されていませんが、

マントや特定の形のメッシュに適用する研究が行われていて他にも、

衣装の自然な動きを実現するために様々な研究が進められています。

新しいエンジンという手段を使ってエリンでミレシアンの皆さんの衣装が生き生きと輝くその日まで頑張ります。

ありがとうございます。


『Writer 開発者K』