モーションブラーのかけ方

octiさんよりリクエストがあったのでザーッと書きます。
ブラーに関しては割と正確なものからいんちきな物まで実に様々な方法があります。

  • フィードバックブラー

これは前フレームバッファをクリアせずに、そのまま今のシーンを描画するレンダーターゲットとして指定して一定のブレンド率でブレンドするやりかたです。
割と一般的な手法でかつ複雑な処理を必要としないのでPS2等でよく使われています。
Direct3Dとかで前フレームの情報をClearしない設定にすれば半透明じゃなくてもたまに似たような絵は見れるかとおもいます。
前フレームの絵を縮小して合成するとぐんにゃりしていい感じです。

  • モデル引き伸ばしブラー

XBOX版のJSRFで使われてます。
頂点ごとに移動量を計算して、移動量に対して視線と垂直になる頂点のみを引き伸ばして半透明で描画する方法です。
エッジに伸ばす隠しポリゴンを仕込んでおくのもいいかもしれませんが、なんにせよモデル2体分の描画が必要です。後2パス必要です。


JSRF見ても分かるようにわりとマンガちっくな絵になります。
その原因はブラーがまっすぐになるからだと思います


Direct3Dに、玉のサンプルがありました。
あんまり好きなやり方ではないですが、例えばモーションブラー出したい奴が決まっているとかなら導入を考えてもいいかもしれません。


ちなみにモーションブラー全てに言えるのはフレームレートが下がる(離散的になる)ほど見た目がおかしくなるので、
正確に見せようとするなら描画フレームの間のフレームも計算する必要が出てきます。
必要とかいってるけどあんまり気にしなくてもいい部分ですが。

  • ポストエフェクトブラー

自分もよくわかってないんだけど、移動量ベクトルのフレームバッファを作って移動量は全てそこに描画するようにして、各方向にブラーさせて描いたシーンをそのベクトルバッファを使ってブレンドするとかいう方法があったようななかったような。


PS2かなんかの外国産ミリタリーFPSのすごい奴で使われてた手法のような。


もしかすると、テクスチャのUV環境マップを利用すればそれっぽい絵が作れるような気もしてきました。PS2ジャ無理ですけど。

正確な名前は知らないですけど、間のフレームを全て描画して時間軸に沿ってブレンド率を変えてブレンドする方法で、間に補完するフレームが多ければ多いほど正確な絵になったようなならないような。


PS2の発表時のパーティクルのデモが120frameで描画してブレンドしてるとか言ってました。
正直一番重い方法だと思います。内部計算全てを少なくとも倍で処理しなければならないわけですから。
多分ゲームで使ってるところは無いと思います。
逆にオブジェクトによってはフレームを間引きしてるゲームとかはたまに見かけます。
ブラーとは全く関係ないですけどw


こんな感じですかね。間違ってるかもしれないけど参考になれば幸いです。