MEBIUSTOSのブログ

主にUnityに関する技術的な事を書いていきます。 Twitter @xflutexx

スクリプトで呼吸させる - 第1回 | Unity3D

ハァハァさせたい

AnimationClipに頼らず、スクリプトでHumanモデルに呼吸をさせたいんです。呼吸の長さとか深さとかを動的に弄りたいんです!眠ってるモーションのAnimationClipとか探したり作ったりしたくないんです!!IKで適当にポーズ付けて、呼吸用のスクリプトくっつけたら息してほしいんです!!!

立ちはだかる壁

正直、MMDのアニメーションも作ったことないし、もちろんUnityのAnimationClipでのアニメーションも作ったことないです。なので、基本的に人体モデルのどの骨をどのように回転させたら息しているようになるのかさっぱり理解していない状態。さらに、骨を回転させるということはオイラー角やらクォータニオンやらジンバルロックやらと戦うことになるの!?とか考えたら気分が沈む。ジンバルロックとか映画「アポロ13」でしか耳にしたことないよっ!
まぁ結局のところ、各骨毎に一方向のみの回転で且つ回転量も少量で実現できるはずなのでジンバルロックはあまり気にしないことにして、何も考えずオイラー角で操作することにしました。あまり考えると精神衛生上良くないので。

考えるよりもまずやってみようの心意気

と、カレイドスターになったあの人も言ってました。大事です。これ大事。
息を吸った時と吐いた時の各骨の回転量と回転時間を設定したらそれに従って骨を回転させるスクリプトを作成し、その数値を試行錯誤で調整していきました。Googleさんもフル稼働し、人間の呼吸について調べ、ハァハァしているMMD動画をニコニコで見まくり……

そんな作業の中、この動画の1:40~は本当に参考になった。ありがとうキュアパイン!色んな意味で!

できた試作版

そして出来た超試作版。ユニティちゃんのAnimationClip - Pose06(固定ポーズ)をプロ生ちゃんに設定。ついでなのでHeadLookControllerもセットアップしてみた。そして、今回作成した試作版BreathControllerをくっつける。まだ動きも調整中だけど、どうなるかな…

注意: 小さい画面だと分からないかもしれません

天 使 降 臨
かわええええw呼吸させるだけで破壊力がやばい!

今後の予定

  • 呼吸モーションをもっと自然にしたい。
  • 呼吸速度を早くすると不自然さが目立ってくるので、これも何とかしたい。
  • その後、スクリプトをブラッシュアップ。

最後に

ポーズにユニティちゃんのAssetを使っているのでライセンスを張っておきます。

ユニティちゃんライセンス

このコンテンツは、『ユニティちゃんライセンス』で提供されています