第21回 表情に干渉しないまばたき!~NoBlinkSetter解説~
表情に干渉しないまばたきを実装してよりリアリティを!
おしゃべりしているとき表情をうまく使いこなせている人は本当にアバターに感情がこもっているように錯覚してしまいますよね。
VRモードでプレイしているユーザーは目の前のアバターに気をとられてドライアイになりがちです、現実世界とバーチャル世界のドライアイをまばたきの実装で未然に防ぎましょう!
第21回はこんな流れで進めていきますよ
~STEP.1 NoBlinkSetterを準備しよう~
まずはこちらで配布されているNoBlinkSetterをダウンロードしましょう。
こちらのツールがないとまばたきが笑顔の表情などに干渉して顔面崩壊してしまいます。
余裕がある人は有料版を購入してあげるとまた便利なツールを作ってもらえるかもしれませんよ?
ダウンロードしたzipファイルを解凍してunityにインポートできるようにしておきましょう。
準備ができたらいつものようにインポートします。
画像のようにVRCDeveloperToolが追加されたら準備完了です。
ここで注意点が一つ。
アバターを着せ替えているunityが一定量できる人はまばたきさせる顔のメッシュをBone階層からアバター直下に移動させておきましょう。
ツール使用後はメッシュの位置が一部変更されるため、このひと手間を惜しむと表情を一から設定しなおさなければならなくなります。
そんな悲劇を回避するべく作者様はわざわざ解説画像を添付してくださっています、参考にしましょう。
インポート画面でお気づきかと思いますが今回まばたきを実装するのはユニティちゃんではありません。
解説に使用するモデルはこちらで販売されている響狐リクちゃん。なぜユニティちゃんではないのかは後述。
~STEP2.まばたきアニメーションを作ろう~
まばたきをするためには目を閉じるシェイプキーが必要になります。
実装したいアバターに両目を閉じるBlendShapesがあることを確認しましょう。
それとまばたきと同じメッシュ(今回であればBody)にリップシンクの口の形が用意されていることもチェックしておきましょう。
これは後で使用するツールの都合上まとめてあった方が設定が楽だからです。
さて、必要なものが揃っていることを確認したらアニメーションを作りましょう。
右クリックしてCreateからAnimationを選択します。
任意でわかりやすい名前に変更します。私は「mabataki」としました、英語はさっぱりなのです。
名前を変更したらさっき目を閉じるシェイプキーがあることを確認したメッシュにドラッグします。
ドラッグしたメッシュに自動的にAnimatorが作られます。
後は以前実装した表情の応用でまばたきを作ります。
画像だと3秒、7秒、12秒にまばたきするように設定しています。
わかりにくいので3秒のまばたきをアップにしました。
3つキーを用意して開く→閉じる→開くを再生することでまばたきを表現している、というわけです。
今回はきりが悪いため3秒からのまばたきで設定していますが3.1秒よりあとからまばたきさせることを推奨しています。
まばたきのアニメーションが完成したらLoop Timeにチェックを入れましょう。
このチェックを入れないとアニメーションが一周したら終わってしまいます。
ちなみにunity上で確認するとまばたきの間隔はこの程度。長いと感じたら間隔を短くするなどして調整しましょう。
そしてこのままだと笑顔にしてもまばたきアニメーションが再生されて干渉してしまいます。
仕上げにツールを使用して干渉しないようにしましょう。
~STEP3.NoBlinkSetterを設定しよう~
STEP1.でインポートしたVRCDeveloperToolからNoBlinkSetterを選択します。
新しくウィンドウが開かれるのでAvatar欄にまばたきを実装したモデルをドラッグします。
するとモデルに設定していた表情などが自動で反映されます。
Set NoBlinkをクリックしましょう。
一瞬読み込みがあり表情アニメーションがコピーされblink_resetと干渉防止が施され、モデルもコピーされます。
ここで筆者が詰まったポイント。
モデルが座標の原点(0,0,0)にいないときにツールを動作させるとアップロードしたときのアバターが座標分ずれてしまいます。
そんな時は画像のように階層のblink_resetの座標を0,0,0に変更しましょう。これで解決します。
~STEP?.なぜユニティちゃんではなかったのか~
さて、なぜ今回の紹介でユニティちゃんが使われなかったのか。
まばたきを実装することまではユニティちゃんでも問題なくできるのです。しかしそこからがいけなかった…
最初にお見せした解説画像のようにユニティちゃんはHeadの階層に顔のメッシュがあります。
しかしさらにそこからまつげ、目をメッシュが複数に分かれているのです。さらにリップシンクするための口のメッシュも別で分かれている…と他のアバターとはかなり仕様が異なるものでした。汎用性に欠けるため他のアバターを使用した、という事情でした。
~スペシャルサンクス~
NoBlinkSetter配布者 元怒様 @gend_VRchat
VRCDeveloperTool作者 がとーしょこら様 @gatosyocora_vrc
3Dモデル 響狐リク作者 Karakuri Power様 @karpo_tw