【Unity】軽くて簡単な残像エフェクト表現
やあ G-Childだよ
新作の方は目に見える進捗は少ないけど、土台部分は着々進んでいるよ。
だから今回も単なる作業進捗ではなく、Unityの技術寄りのお話をしようかな。
とはいえ、前回はちょっと小難しい事を書きすぎたと思うので、もう少し解りやすさを重視して書こうと思う。
というわけで、今回は残像エフェクトについてのお話だよ。
古今東西、様々なゲームで使われている残像表現。
素早い動きを視覚的にフォローするという機能面以外にも、単純にカッコイイから使いたくなるよね。
そんな残像表現なんだけど、Unity上で実現するにはいくつかの方法があるんだ。
思いついた方法をまとめると、以下の3つが挙げられるよ。
①ポストエフェクトのモーションブラーを使用する
②Skinning Mesh Renderを複製して配置する
③パーティクルシステムのレンダーモード、Meshを利用する
これらは素晴らしい表現を生み出す事ができるんだけど、使い勝手に一長一短があるんだ。
ポストエフェクトのモーションブラーを使用する
Univarsal Render Pipeline を使用している場合、Volume設定にmotionBlurを追加するだけで、モーションブラー機能を使用する事ができるんだ。
Intensityを上げると、素早い動きに強いブラーを掛けることができるぞ。
ただ、ブラーのかかり具合を個別に設定する方法が分からないし、強くかけすぎてしまうと画面がボケボケになってしまうから、今回の残像表現にはあまり向いていないかもしれないね。
Skinning Mesh Renderを複製して配置する
これは残像表現を模索している時にweb上で見つけた方法の一つなんだけど、以下のサイトが参考になると思う。
UnityでSkinnedMeshRenderer残像表現
この方法は、現在のskin meshを焼き付けて複製し、複数フレームにわたって使いまわすという理屈だね。
直前のポーズが複製されるから、表現力の高い残像表現が実現できるね。
ただ、リンク先にも書かれている通り、メッシュを毎フレームインスタンス化しているので、今回紹介している中では一番重い方法になると思う。
あと、自分で検証しようとしたところ、modelのリグがHumanoidではなく、Originalだったからか、思ったようにインスタンス化してくれなかったんだ。
だから、これに関する画像は無しってことで……
パーティクルシステムのレンダーモード、Meshを利用する
で、最後に残ったのがこの方法。
UnityのパーティクルシステムShurikenの基本機能を使ったお手軽な残像表現だ。
以下の手順で実装できるぞ。
1.まず残像で使用するメッシュを用意する
2.Hierarchy上で右クリックからEffects -> Partilcle System でエフェクトを作成
3.以下の点に注意して、Particle Systemを設定
Simulation Space: World
Emission: Rate over Distance
Renderer: Render Mode: Mesh
4.あとは必要に応じてスクリプトで残像エフェクトを呼び出すだけだ
この方法の良い点は、基本機能を使っているので、バージョンに左右されない事と、色々と応用が利くこと。
難点は残像に使うメッシュを自前で用意しなければならない事かな。
最後に完成した残像表現を動画化したので、それを添付してこの記事を締めるね。
最後まで読んでくれてありがとう。