見出し画像

#5【備忘録】Vroidの表情を動かして、スカートの挙動をMagicaClothで自然にする【無謀にも3D東方二次創作ゲーム作成】

<前回の記事>

1.Vroidの表情について

Unity上で順調に動いてくれてるVroidですが、これを見てください。

こいつ瞬きしてないぜ!

霊夢さん、瞬きしてません。これでは生きてる感じがしませんね…。
でもVroidはUnity上で表情を制御することができるので、その延長線上で瞬きも実装できます。
まず、以下の記事を参考にVroidの表情の調整をします。

霊夢の「O」

上の画像は霊夢の「O」という表情です。右下にプレビューが映っていますが、特に問題なさそうですね。調整したい場合はプレビューの上のFaceから調整します。

霊夢の「Surprised」。顔がキョンシーにみたいになっている。

これでは主人公ではなく、神霊廟3面のボスですね…。
Fcl_ALL_Surprisedの値を生気が戻るまで下げます。

生気は戻ったが、驚き具合は減った。

その後、Fcl_EYE_Surprised、Fcl_BRW_Surprised、Fcl_MTH_Surprisedの値を上げて、必要があれば他の数値も調整します。

いい感じに驚いてくれてます

他のおかしい表情も、Fcl_ALL_〇〇の値を下げる→Fcl_BRW_〇〇、Fcl_MTH_〇〇、Fcl_EYE_〇〇の値を上げる→微調整で改善できます。

これには霊夢さんもご満悦

下の記事のとおり、「><」や肌の色の変化を加えることもできます。

2.瞬きさせるぞ!

さて、瞬きを実装する方法ですが、Blinkが両目を瞑った表情なので、これを一定間隔で呼び出します。

霊夢のBlink

以下のサイトを参考に「AutoBlink」「FaceController」スクリプトを作成し、PlayerArmatureの子オブジェクトにしているVroidにアタッチします。

インスペクター上の「Proxy」「FaceController」ではアタッチしているVroidを指定します。

お目々ぱちくり

成功ですね!
そしてAutoBlinkを以下のように少しいじってみます。

//AutoBlinkの以下の部分で瞬き(Blink)を実装
faceController.ChangeFace(VRM.BlendShapePreset.Blink, 0, 1, blinkDuration);
//BlinkをFunに変更
faceController.ChangeFace(VRM.BlendShapePreset.Fun, 0, 1, blinkDuration);
//インスペクター上で、BlinkDuration(瞬きの長さ)、BlinkInterval(瞬きと瞬きの間隔)を調整
何か嬉しいことがあった霊夢さん

3.MagicaClothでスカートを自然に揺らすぞ!

今度はスカートの挙動が不自然なのを改善します。

スカートがめくれあがったり、貫通している

MagicaClothはスカートやオッπなどを自然に揺らせるアセットです。
Vroidも適当に選んだわけじゃなく、このアセットの動作検証にも調度よさそうという理由で霊夢と魔理沙を選んでます。

↓たまにセールになっています。セールだと1400円くらいで買えます。

導入方法は以下の2つの記事か、公式リファレンスを読んでください。
日本製アセットなので、公式リファレンスも日本語で安心です。
なお記事には、「Jobs」というパッケージを導入するように書いてありますが、これは少し古い情報で、Unity2021以降は「Collection」というパッケージを導入する必要があります。

↓公式リファレンス

2023.5.5日追記

MagicaCloth2が発売されています!
まだ購入しただけで触れていませんが、大幅な改善が行われているようなので、1ではなく2の購入をおすすめします。


咲夜さんのナイフが全部命中したのかな

スカートの揺れ方を自然になるように調整しましたが、突き抜け防止用のコライダーを設定しないと以下のようなります。

結構すぐ脱げるんだね

注意点ですが、下の図の右上黄色の部分「ギズモメニュー」がオンになっていないと、MagicaClothのコライダーやメッシュは表示されません。
自分はこれで2日くらい詰まりました…。作者さんに連絡をとって教えてもらうことができました。作者さんが日本人かつ親切な方で助かりました。

ワイヤーフレーム表示は赤枠の部分から可能

自分の調整が適当で申し訳ないですが、始めよりはスカートの揺れが自然になっていると思います。髪やおっπなんかにも使えるみたいなので、これからどんどん使っていきたいですね。

なんか間違ってお城消しちゃった

unity1Weekが2022年12月12日(月) 0時 〜 2022年12月18日(日) 20時で開催されますので、東方3Dゲームの開発はしばらくお休みです。
W杯も佳境で、18日にはM-1の決勝もあり、色々楽しみです。ではまた。

<次回の記事>

<その他・参考記事>

この記事が気に入ったらサポートをしてみませんか?