こんちゃんの目3.0

※注意!

こちらの記事はVRCがUnity2018ビルドだった時代に書かれた記事です。2019ではステートマシンの中の「Normalized Time」の名称が「Moion Time」に変わっている(名前だけの変更)ため、2019ビルドで参考にする際はそこだけ読み替えて実践してください。

 あけそうなのでおめでとうございます。Najikoです。皆さんはロポリこん、使っていますか? わたくしは使っています。実はこのこんちゃん、標準ではAvatars2.0向けのPrefabのみ同梱されているため、3.0で使うには前回記事に書いたような手順で設定を行う必要があるのですが、それでもなおそのままではわずかながら不具合が発生します。一体何がダメなのか?

 早速ですがこちらをご覧ください。

 みんな大好きこんちゃんことロポリこんです。そして……

 はい、こんちゃんです。上と下の画像の違いがおわかりいただけたでしょうか。上はAvatars2.0、下が3.0です。まあ、静止画ではわかるはずがないので……

 Gifにすればおわかりいただけるでしょう。こんちゃんの目を見て下さい。うるうるしているのが見えるはずです。かわいいね。こちらはAvatars2.0こんちゃんです。表情としては、デフォルトではHand Openに割り当てられているものになります。

 実は、これがAvatars3.0にするとHand Openしていてもうるうるしなくなってしまいます。上の二つの画像のうち、下の方の画像の状態のままになるわけですね。わたくしは数か月、ずっとこの問題に悩みつつ諦めて放っておいていたのですが、先日Discordで、VRCUnity勉強会の管理人であり現在はあまなつちゃんの衣装製作及びあまなつちゃんのアイドルグループ「SummerSweet!」の理事長も行っているIstriaさんからこの修正方法を直接教えていただきました。その方法とは、

 「アニメーションのLoop Timeにチェックを入れて、Normalized Timeのチェックを外せばいい」

ということでした。どういうことか、早速見ていきましょう。

 こちらは前回の記事でも一部設定したこんちゃんのFXレイヤーに設定されているアニメーションコントローラーの中身です。現在選択しているのはRight HandレイヤーのHand Openのステートマシンです。右上のMotionのところに「H_KindSmile.h」というアニメーションファイルが入っているのを見て下さい。まあ、要するに「Hand Openの時はH_KindSmile.hという表情にしますからね」という設定がここに含まれているわけです。

 そして、そのアニメーションファイルをダブルクリックしてInspector欄を見てみると、既にLoop Timeにチェックが入っているのが分かります。これは要するに、このアニメーションは再生後ループする、というただそれだけです。

 ところが、今の設定ではここにチェックが入っているだけでは表情アニメーションはループしません。「Normalized Timeのチェックを外す」までやらなければいけません。では、そちらを見てみましょう。

 先ほどの画像の当該箇所をアップで見てみます。ありましたね、Normalized Time。今はチェックが入っています。そしてParameterとしてGestureRightWeightという変数が入っています。チェックを外す前にこの意味を教えて頂いた通りにざっくり解説します。

 まずNormalized Timeとは、アニメーションの再生時間を特定の位置で固定するものです。そして、この場合右手なので「GestureRightWeightの値に従ってその位置でアニメーションを固定する」ということになっています。GestureRightWerightはFloat変数で、条件によって0から1までの値を浮動小数の範囲で行き来するようになっています。この条件とは、ここではボタンの押し具合……具体的には、オキュラスコンでいうところのトリガーの引き具合で変動するようになっています。つまり……

 「トリガーをどのくらい引いたかに応じて表情が段階的に変化する」

という仕組みが出来上がっているわけです。ところが、これがHand Openにも最初から設定されてしまっています。Hand Openはトリガーを引かないで出す表情ですから、Hand Open状態の時はGestureRightWeightは全く変動しません。0のままです。そしてNormalized Timeの設定に従い、再生個所は0の地点で固定され、変化しません。その結果、

 「うるうるするアニメーションの再生が0の地点で固定される」

という現象が起こるわけです。これではいくらアニメーションそのものはLoop Timeが有効になっていても、そもそも0のところから進んでないわけですから、うるうるするわけないですよね。ということでここのチェックを外します。ついでに、Thumbs upのステートマシンも同様にNormlized Timeのチェックを外しておきましょう。ここにはしいたけ目がキラキラする表情が入っているからです。Left Handのところも忘れずに行いましょう。

 完成!! なんか、デスクトップに表示されてるVRCの画面に劇場版みたいな帯が入ってますけど。画面サイズ変更しても直らなくなってしまいました。ちなみにこんちゃんの表情はNormalized Timeにチェックが入っていてもトリガーの引き具合でほぼ調整できないので、この2つ以外の表情もチェック外しちゃっても別に問題はありません。また、こんちゃん以外にも2.0前提の設定になってるアバターで表情アニメーションがループする仕様になっているアバターはこの方法で修正できるはずです。

 ぶっちゃけこんな簡単な方法でさえ、Unityのアニメーション及びステートマシンの仕組みを理解していないばっかりに、教えていただくまで全く気付くことが出来ませんでした。Istriaさんありがとうございました。

 現状Avatars3.0用のPrefabが用意されていない販売アバターも多くある中、様々なギミックの為に3.0用の設定を行う機会は多くあると思いますので、こうしたちょっとした躓きが少しでも減ればいいな……と思います。怱々。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です