Motion Blur

98/04/11(土)  − Motion Blur − モーションブラー その本質と意義

 随分前から書こう書こうと思っていたのに、結局今日になってしまった。 とっても忙しかったの...(;_;)。という訳で更新は本当にマイペース。

 今回はモーションブラーのお話。
さて、最近ではモーションブラーという言葉も広く世間の知るところとなった。 では、このモーションブラーという奴は一体何者なのか?
 一口にモーションブラーと言っても、その手法にはさまざまな物がある。 大きく、 疑似的な手法を用いて速度を稼ぐものと、 速度は犠牲になるが、元々の原理に合わせてまじめに計算する ものに分けられるだろう。
 まず、疑似的な手法の方には、単純な残像効果がある。 これは、単に 1フレーム前のバッファの内容を薄く残した状態で、 新たな画像をレンダリングするだけでよい。 または、残像を残すオブジェクトのみを複数回、 α値と座標を変化させて描画しても良いだろう。 対象となるオブジェクトが少ない場合はこの方が全体的な無駄が少ないし、 これだけでもなかなかかっこよく見える。 ただ、これはあくまでもただの残像であり、 本当の意味でのモーションブラーではないのだ。 別にこの方法が悪いわけではない。 これでも充分かっこいいし、何よりスピード的にリアルタイムで使用可能であることは大きい。
 だが、今回ここで取り上げるのは、ちょっと目的の違うモーションブラーである。 それをこれから説明しよう。  まず、「モーションブラーとは何か?何故使うのか?」 について正確に理解する必要がある。 そのために簡単な例を示そう。 みなさんよく見る(見ない人ごめんなさい)映画などは、通常秒間24コマで映写される。 この程度のフレームレートがあれば、人間の眼には滑らかに映ることはよく知られている。 だが、例えばCGを24fpsで描画しても、映画ほど滑らかには感じられないのである。 今、バーチャファイター(元祖)を見ると、たいがいの人は動きが荒く感じるだろう。 しかし、それでも映画よりフレームレートは高い(30fps)。 この差は一体何なのだろうか? なぜフレームレートの低い映画の方が滑らかに見えるのだろうか?
 おそらく既にお気付きだと思うが、 これがモーションブラーの効果なのである。 一度、映画をビデオなどでコマ送りして見てみよう。 速く動いているモノが、想像以上にブレていることに気付くだろう。 これは、撮影する時のシャッタースピードの遅さが原因である。 つまり、 シャッターが開いている間はずーっと連続してフィルムが感光しているため、 実際には一定の連続時間の積分を撮影することになる。 こうすると1コマ1コマはぼやけてしまうが、 アニメーションさせた時にはあら不思議、フレーム間の 中間時間を補間する働きとなり、結果滑らかに見えるのである。
 逆にゲーム画像などの場合、 本来連続でつながっている時間のうち、 描画しているのは離散的な(つまり一瞬の)画像だけである1つ1つの画像はくっきりした綺麗なものとなるが、 アニメーションさせた時にはサンプリング不足のため、荒く感じるのだ。  もう一つ、オリンピックの競泳などで、映像が妙にカタく感じた経験はないだろうか?
これは、この映像には高速シャッターのカメラを使用するため、 モーションブラーがほとんどかからないからである。

 ここまでくれば、モーションブラーとは本来何のために使うものなのか、 その答えが分かったことと思う。 すなわち モーションブラーとは、時間方向に対する アンティエイリアシングなのである。 例えば60fpsで描画しても、それは1/60秒単位の離散的な画像でしかない。 だがディスプレイの物理的な問題でそれ以上フレームレートを上げることができないとしよう。 このような場合、 1/60以下の動きの成分を考慮に入れたモーションブラーを かけると、疑似的にさらに細かい時間間隔での動きを表現できることになるのだ
 これが目的なのである。そして、上で述べた残像による表現は 明らかに意味が違うことに気付くだろう。
 実際のレンダリング方法は極めて馬鹿正直である。 「完全な連続では描画できないなら、数で誤魔化せ!」って訳で、 前フレームから今回までの連続時間を例えば10回くらいに分け、 それぞれの瞬間をレンダリングする。そして最後に、それら全ての画像を平均化する。 注意!あくまで平均である。前回に近い所は薄くとか、現在の時間は濃くとか、 そんな重み付けはしなくて良い。 これは実際のカメラを考えれば理解できるだろう。 上の残像効果との差は、この辺にも現れる。
 当然そこそこの回数に分割しなければ不自然になるが、 多く分け過ぎると今度はレンダリングに気違いじみた時間がかかることになる。 この辺は妥協が難しいところである。

 glclockでは何も考えずに、このような方法をとっている。 そのため残像効果とは違い、なかなかリアルなモーションブラーにはなっているが、 いかせんせん遅すぎる...(;_;)
うまくやればもっと速くできるが、ちょっと時間が無くてやってられません。ひぃ。