Onoty3D

Unityに関するメモとか

プロ生ちゃんに瞬きさせる

小ネタ。

ユニティちゃんの静止画を撮ろうと、いいアングルを探している時、突然ユニティちゃんが瞬きしてビビったりした経験はないでしょうか。
自分は多々あります。 

この瞬き。ユニティちゃんはAutoBlinkというスクリプトでそれを再現しておりますが、プロ生ちゃんにはそのようなスクリプトがありません。ドライアイまっしぐらです。

ならばユニティちゃんのAutoBlinkを参考にスクリプトを書けば、瞬きが簡単に実装できるのでは、と思いやってみたところ、予想以上に簡単に実装できました。

過去に投稿した

onoty3d.hatenablog.com

という記事の中で書きましたが、プロ生ちゃんの表情はSkinnedMeshRendererのBlendShapesの各数値を変えることで変更できます。
これはユニティちゃんも同じ仕組みです。

AutoBlinkのスクリプトでは、BlendShapeの値を変更し、ある瞬間だけ目を閉じる→再び目を開けるとやることで、瞬きを再現しています。
また、ユニティちゃんは目とアイラインが別々のメッシュになっているので、スクリプト内でふたつのメッシュに対してBlendShapeの値を変えていますが、プロ生ちゃんはひとつのメッシュなので、より簡単です。

以上を踏まえて

元々のAutoBlinkのスクリプトを複製する

SkinnedMeshRendererは一つだけでいいので、ref_SMR_EYE_DEFとref_SMR_EL_DEFとふたつあるうち、ref_SMR_EL_DEFとそれを参照している箇所のソースを消す。

プロ生ちゃんの瞬きのBlendShapeは8番目(インデックスでいうと7)なので、3箇所あるSetBlendShapeWeightメソッド呼出の第1引数を6から7に変える。

と処理を施し、スクリプトを保存してプロ生ちゃんに設定し、インスペクタにてref_SMR_EYE_DEFにプロ生ちゃんのSkinnedMeshRendererをセットしましょう。

これだけで、ユニティちゃんと同じように瞬きできるようになります。

 

f:id:onoty3d:20150324210821g:plain