前回はUnityで走らせるところまで出来ました。
今回は目のパーツを追加し、瞬きをさせてみます。
目次
Mayaでの作業
目のパーツを追加し、ブレンドシェイプをつける
- 別パーツで目のパーツを追加します。
- 瞬きをさせたいので、ブレンドシェイプを追加します。
ブレンドシェイプの追加方法は下記の記事で説明しています。
【Maya】覚書:ブレンドシェイプ – モデリング覚書
0→1で目を閉じるようにしました。
目のパーツをバインド対象に追加
ここでUnityに送りたいところですが、目のパーツをバインド対象に追加しないといけません。
バインド対象に追加していないと、首を回転させた時にこうなります。
- ルートジョイント・ボディメッシュ・目メッシュ を選択。
[Skin]>[Bind Skin]のオプションパネルを開き、一度[Edit]>[Reset Settings]し、 Dropoff Rateを調整してApplyします。
※ ここの操作ですが、本当にこの方法が良いのか分かっておらず、他に良いやり方があるかもしれません。
5.0だと傾きによって目がボディにめり込んでしまったので、7.0にしました。
※ Dropoff rateは何度直して、このメッシュはたまたまこの数値に収まりましたが、他の設定値との兼ね合いやメッシュによっても違うと思います。
エクスポート
ボディと目のメッシュを選択し、Unityにエクスポートします。
Unityでの作業
目のパーツのInspectorを見ると、ブレンドシェイプがあるのが確認できます。
瞬きのScriptを追加する
一から作るの大変そうなので、Unity-Chanのアセットに入っていたAutoBlink.csを使用させていただきました。
(いつか一から書けるようになりたいな…)
コピーしてこのメッシュ用にちょこっと書き換えます。
以下、書き換え箇所を箇条書きします。
- AutoBlink.csをコピーし、namespaceとclass名・ファイル名を任意の名前に。
public SkinnedMeshRenderer ref_SMR_EL_DEF;
と、参照している箇所を削除。SetBlendShapeWeight
の第一引数をブレンドシェイプのインデックスに書き換え。
例えば、Unity-Chanの瞬きをするブレンドシェイプは下の画像の上から7つめにインデックスされているので、元の引数は6になっています。
今回作ったメッシュは1つ目にあるので、引数を0にしました。- コピーしたスクリプトを追加。
Ref_SMR_EYE_DEF
を目のメッシュに変更。
実行
以上の作業を行い、実行!
瞬きしました!
簡単な作業ですが、意外なところ(というかうっかり)でハマリ、結構時間がかかってしまいました(汗)
目のメッシュをバインド対象に入れてなかったのが原因でした😅
今は体の動きにちゃんとついてくるようになって、ブレンドシェイプも追加したので瞬きさせることが出来ました🙌 pic.twitter.com/BH0Te7szPD— タケ@3DCG勉強中 (@take_model) March 24, 2019
今回はここまでです。
これから髪の毛や服等を作ると思うと、中々終わりそうにないな~…(遠い目)