見出し画像

こんなことまで出来る!?Live2Dの裏技的物理演算活用法【Live2Dアドカレ2021】

【はじめに】

皆さんこんにちは。バーチャルYouTuber兼Live2Dモデラーの乾物ひものと申します。

眼鏡っ娘です

今回は、同じくLive2Dモデラーのナナメさん(https://twitter.com/7name_)主催の「Live2Dアドベントカレンダー」に参加しております!

「アドベントカレンダーとはなんぞや?」という、この記事から読み始めた方に簡単に説明すると、アドベントカレンダーとは「特定テーマで個人または複数人でブログを書いてクリスマス当日までバトンをつなげていく」という大型企画です。

我々が参加しているテーマはズバリ「Live2D」ですので、他にも色々なモデラーさん執筆による沢山の記事が投稿予定ですよ!楽しみですね♪

本日は11日目、わたくし乾物ひものが解説するのは

「Live2Dの裏技的物理演算活用法」です!

以前noteでは、Live2D社からご依頼をいただきまして、「高可動域モデリングにおける顔の角度の作り方」を解説しているのですが↓↓

今回はその時紹介できなかった「物理演算」に焦点を当て、

「こんな活用方法があるんだ!?」という少し裏技的な使い方をご紹介したいと思います。

応用的な話ですので、どちらかといえば中級者・上級者向けの記事になりますが、なるべく嚙み砕いて説明するつもりです。

【物理演算について】

そもそものおさらいとして、Live2Dにおける物理演算とは、髪の毛や服などの揺れを自動で計算し動かしてくれる機能のことです。

一般的な使い方は公式HPに詳しく載っているのでご参照ください。

ここでは詳しい解説は割愛しますが、

「位置X」と「角度」の種別の違いだけは以下の文章で頻出するので改めて記載します。

◆位置X

入力パラメータ(動きの元になるパラメータ)に合わせて振り子が横に動く。振り子はしばらく揺れた後にデフォルトの値に戻る。

◆角度

入力パラメータに合わせて振り子の角度が傾く。 振り子はしばらく揺れた後に角度に合わせた値で止まる。

本noteでは、この「位置X」「角度」を上手く使い分け、

〇リアルで生き生きとした顔と体の動き〇

を作る方法を解説します。

対応トラッキングアプリはVtubestudio(以下VTSと呼称)・nizimaLIVEです。

それでは早速見ていきましょう!

【入門編:トラッキングアプリだけで出来る工夫】

前提として、Live2D用フェイストラッキングアプリで読み取れるのは「顔の動き」のみです。(例外としてVTSは最近ハンドトラッキングも実装されました)

Live2Dのデフォルトパラメータには「顔の角度」と「体の角度」が存在しますが↓

実際のトラッキング時はどちらも顔の動きに合わせて同じ動作をします。

顔と体のパラメータの「スムージング」数値を弄ることで、体の動きが遅延し、ある程度動きの違いを出すことは可能です。

しかし、この方法だとどうしても体がもっさりとした動きになってしまいます。

みなさんはこんな感じのVTuberさんの動きを見たことはありませんか?

ぽよんぽよん!
ふわんふわん!

このように、顔と体の違いを出しつつ、生き生きと弾むような動きを付けるにはどうしたらいいのか…そこで使用するのが物理演算です!


【初級編:体の動きを顔の動きに追従させる】

まずは簡単な方法から。
そもそも体のパラメータが一切動かなかったFacerig時代に愛用していた方法です。割とメジャーなので知ってる方も多いと思います。

やり方は、入力パラメータに顔の角度を入れ、種別を角度にし、出力パラメータを体の角度にするだけです。

入力設定

影響度は100%でもいいのですが、後から色々応用することを考えて60%にしています。

出力設定

今回は角度Xで解説していますが、角度Yでも同様です。

デフォルトだとパラメータの数値の関係でまともに動かないので倍率を弄ってやりましょう

角度Xを最大限まで動かしても体Xは2%しか動いていない
その状態で「出力調整(アップ)」を押すと出力が100%になる倍率に自動で調節してくれる

振り子の値はお好みで弄ります

快活に動かしたかったら値を大きめに
ゆったりさせたかったら控えめにします。

先ほどのトラッキングアプリ側だけの設定と大きく違う部分は、
「体が一瞬大きく動いた後少し元に戻る」という動作が追加されることです。

手打ちアニメーションの時は手動で同じような動作を追加するといいよとLive2D公式Twitterもおススメしていたりする、人体の動きを生き生きとさせるテクニックです。

それを物理演算を使ってトラッキングでも再現してしまおう!という訳ですね。

ちなみにかなり変則的ですが、「顔と体のパラメータを逆にしてしまう」といった方法も使えます。より大人っぽくセクシーな動きになりますね。

△この方法の欠点△

とても簡単な半面、この方法にはある欠点があります。

それは「顔と体の動きをトラッキングアプリで調節出来ない」という事です。

トラッキングアプリでは、トラッキングより物理演算が優先されますので、「体の動きだけ小さくしたい」「顔の動きを控えめにしたい」「顔と体の動きを逆にしたい」といった細かい調整が一切できなくなります。

TPOによって動きを変えたいVtuberさんには大きなデメリットです。

顔の調整をすると強制的に体の動きも変わってしまう……

そこでご紹介するのが次の方法です。

【中級編:体のパラメータを2つ作り、顔と体を別々に管理する】

顔と体のパラメータを紐づけてしまったばっかりに体の調整が出来なくなった……ならば体は体で管理すればいいのさ!という方法です。

まずは体のパラメータを複製します。分かりやすいようにちょっと名前を変えときましょう。

物理演算用のパラメータには分かりやすいように★マークを付けています

そして、体のモデリングを後から作ったパラメータの方で行います。

元々あったパラメータには何も点を打ちません。

モデリングが終わったら、物理演算設定で
先ほど「顔の角度」を入れていた入力部分に「元々あった体のパラメータ」を入れます。

ここを…
こう!

恐らく顔と体のパラメータの数値の違いで動きがおかしくなるので倍率を適切な値に修正しましょう。

最大出力が100%を超えてしまっていますが、出力調整(ダウン)を押すと100%に収まる倍率に自動調節してくれます

するとどうでしょう、顔と体の動きが分離しました。

これで、生き生きとした動きはそのまま、トラッキングアプリ側で顔と体の動きを別々に調節することができます

体だけ一杯動かしたり…

顔と体の動きを反対にしたり…

可愛いね!

【上級編:弾む動きを追加する】

上記の方法で殆ど完璧なのですが、実際に設定してみると分かります

理想
現実

こんな弾まんのやけど!?

実は、一連の体追従で使っている「角度」という物理演算の種別は、「位置X」より圧倒的に揺れにくいです。

同じ値だけど位置Xのほうがめっちゃ揺れてる

「位置X」のグリングリン揺れる動きを角度に取り入れられたらなぁ……と思ったあなた、


★それ、実現可能なんです★


まず、新たにもう一つ、「弾ませる動き専用」のパラメータを追加します。名前とか設定はそのまま真似してOKです。

今回は体の角度Yを例に出します
パラメータは3種類になったよ

そして、「弾ませる動き専用」の新しい物理演算グループを、体追従用グループの上に(ここ重要)作ります。

▲グループ順が逆だと赤いエラーが出てちゃんと動かないよ

名前は「体Yバウンド」とでもしておきましょう。

入力パラメータには体のYをいれ、種別を位置Xにします

振り子はちょっと大げさに揺れるくらいが丁度いいです

そして出力に先ほど作った「体Yバウンド」を入れます。

これで下準備はOKです。体の角度を動かすと体Yバウンドがバウンドしてるのが分かりますね

ばうんばうん

そしたら、今度は既にある「体追従用グループ」の入力に、体Yバウンドを角度で追加し、「反転」にチェックをいれます

※反転にチェックを入れるかどうかは好みの問題なのでどっちでも大丈夫です。反転した方がキビキビした動きになりますし、反転しないとゆったりとしたうごきになります。

するとどうでしょう!

ぽよんぽよん!!

しなやかに弾みました!!

構造的にはこんな感じになってます

入力用と出力用、二つの体Yのパラメータの間にバウンド用のパラメータを挟むことで、通常では難しい動きを可能にしているんですね。

ちなみにこの方法は、海外Live2Dモデラーのシリアさん(https://twitter.com/cillia)の学習用モデルを参考に自分流にアレンジしたものです。

物理演算の数値等、恐ろしいほど参考になり過ぎるモデルなので気になる方は是非購入してみてください!!


【応用編:パラメータの分離とブレンド】

さて。この「入力専用パラメータを作る」「中継用パラメータを作る」という考え方は色々な所で応用が利きます

例えば、先ほど作った体Yバウンドパラメータを、今度は顔にも入れてみます。

まずは入力用と出力用パラメータを用意

すると、顔もふわふわと弾むような躍動感が得られます。

この時、顔用の追従グループの振り子は体用のものと数値を変え、「一切揺れない」設定にします。

そうすることで体と顔に動きの差が生まれ、よりケレン味のある動きになるんですね。


また、私は体の縦軸の動きは、

「上半身=体のY」

「下半身=位置Y」

の2種類を作り、それぞれを

「カメラとの距離(ガチ恋距離)=位置Z」

「顔の上下の動き=体のY」

に紐づけているのですが、
ここで更に一工夫を加えています。

①パラメータを4種類作る

全部 -10 0 10 の値だよ

②★体Yに上半身の動き、★位置Yに下半身の動きを付ける

③物理演算グループ「体Y」「位置Z」を作る

 それぞれの入力に「体Y」「位置Z」を種別角度で入れ、数値を弄る

入力は体Y 体Yバウンド 位置Z の3つ 位置Zは反転させる
出力は★位置Y
入力は位置Z 位置Zバウンド 体Y の3つ 力関係はさっきと逆転している。
こっちの体Yは反転させない。
位置Zバウンドの作り方はこれまでと同じだよ
出力は★体Y
入力にも出力にも体Yがあって凄いややこしくて申し訳ないけど、
私がこの命名規則で覚えてしまったので許してください…
覚えやすい名前を付けるといいよ

このように設定するとどうなるかというと、

「体Y=顔の上下の動き」
「カメラとの距離(ガチ恋距離)」

こうなります。

まず「体Y=顔の上下の動き」では
上半身が少し、下半身が沢山動きます。

顔の上下の動きで上半身を沢山動かしてしまうとバタバタと落ち着きのない印象になってしまいますが、かといって全く動かさないのも不自然ですからね。

そして、「カメラとの距離(ガチ恋距離)」の時は位置Yの動きを反転させることで、上半身が前かがみになっている時は足を延ばし、後ろに反ってる時は足を曲げるような動きになっています。

実際に同じような動きをしていただくと、足が自然にそうなるのが分かると思います。

人間のリアルな動きをトラッキングにも反映しようという試みですね。


この一連の工夫を物理演算を使わずにやろうとすると、上半身と下半身のパラメータが複雑に絡み合ったかなり難易度の高く工数の多い変形スキルが求められます。

しかし、入力と出力にパラメータを分け、出力でキッチリ分類した動きを物理演算でブレンドしてやることで、複雑な動きを比較的シンプルな工数で実現することが可能です。

トラッキングアプリ専用の、かなりトリッキーな使い方ではありますが、

物理演算はただモノを揺らすだけでなく、このようにある種プログラミング的な使い方も出来るんだよ~!という事が伝われば幸いです!


【最後に】

今、この後書きを書いているのは12/11当日の午後4時です


「前日に頑張ればなんとかなるやろ」

「noteに載せる動画用のモデル用意してないやん」
「仕事で作った方のモデル使うにも当日だから許可とる時間ねぇ!」
「やべぇ!!!!!」

「3年前に作った自分のモデル改造するか…」

~徹夜コース~


>>無茶なスケジュールを組むのはやめようね!!<<



有難いことに、私制作の色々な講座を「この内容、無料で見てしまっていいんですか!?」と言っていただける事が多いのですが、これにはちゃんと理由があります。

私が思いついた時には「60~80%」の完成度だった技法は、私が独り占めしたままでは「60~80%」のままです。

しかし、世の中に発信すれば、もっと専門的知識があったり技術力のある人の手によって「100%」の技法に洗練されていきます。

つまり、私が自分の技法を惜しみなく公開するのは、私が善人だから、等では決してなく、トータルでみれば自分とLive2D業界にめちゃくちゃメリットがあるからです。

だから、是非一杯技術を盗んでいただいて、色々な感想・フィードバックをお伝えいただけると嬉しいです!私もそれを更に参考にします。

それからもう一つ。

今回解説したのはあくまでも裏技的な使い方ですので、将来物理演算機能が強化されたらこんなまどろっこしい手法は不要になるかもしれません。

それでも私は、日々「今ある機能でこの動きを実現するにはどういう工夫が必要だろう?」という発想を大事にしています。

「発想」と「基礎」の掛け合わせから生まれる新しい技術が、やがて色々な人の手に渡って洗練されていき、もしかしたらLive2D自体のアップデートに繋がるかもしれません。

アプリのアップデートは即ち、更に出来ることの幅が増えるという意味です。

Live2Dを始めてからの4年で、「Live2D Cubism Editer」というアプリはまるで別物のように進化を続けています。

その進化を肌で感じ続けながら、日々新しい挑戦を続けられる今の環境が、私は心底幸せです。

今後も、基礎力・観察力・発想力を磨きつつ、Live2D業界・Vtuber業界に少しでも貢献できれば幸いです!


最後までお読みいただきありがとうございました!


乾物ひもの







記事が気に入りましたら、もしよろしければサポートを頂けますと、今後の記事執筆・作品制作活動の励みになります!