最近VRかまくらを作ったばかりですが、キャベツ鉢さん作の温泉宿が投稿された上に、JAKさんがMMDモデルの表情を変えるVR動画を投稿されていたので、作るしかないと思いキタキツネ第2弾を作ります。
完成がこちらです。
基本的にはこちらの動画でされていることを真似て、表情をコントローラーの動作で変えます。
また前作で、瞬きがなくて怖いというコメントがあったので瞬き機能も実装します。あと自分がギンギツネになる「憑依?」機能もつけます。
前作
お借りするもの
表情を変える
表情は、実行中にMorphに種類が表示されバーを動かすと変わります。私の環境では実行中しかバー表示されませんでした。
そして実行中にバーを変えると表情が変わります。
スクリプトで設定するにはMMD4 Moroh Helperスクリプトを使って、名前を指定して、weightにスライダーの値を入れておけば、その表情になります。
コントローラータッチで振動
コントローラーにInteractUse(ボタンが使える)とInteractTouch(触れる)をつける。そしてモデルにInteractableObjectとInteractHaptics(振動)をつける。
IntaractableObjectのIs Usableにチェック。
振動はstrengthの大きさを変えておく。
またrigidbodyとcolliderも必要。
コントローラーで表情を変化
「using VRTK;」で色々な関数が使えるようになっていました。
動画内で紹介していただいてたスクリプトを真似たら無事にできたので詳しいことは省略。
近づいたら目を閉じて、触ったらえーっていう顔をして、トリガーでニコってします。
瞬き
こちらのスクリプトをお借りしました。
Sizeに設定する個数を入れて、Skinned Mesh Renderにそのキャラの顔の部分のMeshを入れて、Indexにモーフの番号を入れたら瞬きしてくれました!
何番が瞬きかわからなかったのですが、数字を入れたら名前を表示してくれるので1番から順に入れていきました。
ちなみにユニティちゃんにはデフォルトで瞬きスクリプトがあるようだが、プロ生ちゃんやクエリちゃんは目などの作りが違うらしく、スクリプトを書き換える必要があるらしい。
憑依
自分がギンギツネちゃんになりました。まだ未完成なので詳しくは別記事で書きますが、以前使ったIKスクリプトでギンギツネの手の位置をコントローラーの位置にして、体の位置をヘッドセットの位置にしたらとりあえずは憑依できました。
本当はキャラクターの頭の位置にヘッドセットをつけないといけないのですが、よくわからなかったのでVRTK内のヘッドセットの少し下に空のゲームオブジェクトをつけ、それをbodyにつけました。(意味不明)
そのため頭を傾けると体ごと回転してしまいます。足元も見れない。
FinalIKという有料アセットを使ったらもう少し自然にできるらしいので、そこらへんも別記事でやりたい。