トップページ > 空即是色 > 2006年の記事 > モーションブラー

空即是色 モーションブラー

2006年 08月13日

NeheのRadial Blurを弄って、自前のモーションブラーを実装してみた。
フレームバッファをテクスチャバッファにコピーするには、glReadPixelsとglCopyTexImage2Dがあるのだが、両方試してみた結果、自分の環境ではglCopyTexImage2Dの方が速かったのでこちらを利用した。
glReadPixelsも調整次第でそれなりに高速になるらしいのだけど、チューニングが細かくて面倒だったので( `Д´)彡

アルゴリズム(と言っていいのか?)の流れは

  1. Blur用のテクスチャバッファを256×256×3Bytes(RGB)で確保
  2. Viewportを上記のテクスチャバッファのサイズ(0,0,256,256)に設定する
  3. カメラを平行投影にしてBlur用のテクスチャをViewportの領域全体に描画(これが残像になります)
  4. カメラを元に戻して、オブジェクトを描画
  5. glCopyTexImage2Dでフレームバッファをテクスチャバッファにコピー
  6. Viewportを1024×768にする(ここからが実際の描画)
  7. 画面の初期化
  8. カメラを平行投影にしてBlur用のテクスチャをViewportの領域全体に描画
  9. カメラを元に戻して、オブジェクトを描画

以上。

同じオブジェクトをViewportを変えて2度描画する必要があるのですが、テクスチャバッファのサイズを調整するとそれなりに高速に動作します。
当環境(PowerBookG4)では256×256×3Bytes(RGB)で限界の2歩3歩手前くらいなので、ブラーを奇麗に出したいのであればもっとサイズを大きくしてもいいかも。
あと、これは2次元平面でだましだまし通用するモーションブラーなので3次元空間で正確に再現したい場合はオブジェクトのZ軸座標や移動量によってブラーの掛かり方も違うほうが自然でしょうから、また違った方法が必要になります。
その辺の詳細は『3Dゲームファンのための「ワンダと巨像」グラフィックス講座』を見てね。

ページの先頭へ戻る

トラックバック

この記事のトラックバックURL:http://null-null.net/mt/mt-tb.cgi/457

ページの先頭へ戻る

コメント

ページの先頭へ戻る

iPhoneDev.null-null.net

コメントの一覧

特定のキーワードにマッチした内容の記事をTumblrやMovableTypeに自動的に投稿する
  • nogami
    (2008年03月18日)
  • プールデザイン菅沼
    (2008年03月25日)
  • yuiyui
    (2008年04月12日)
MacOSX環境のOpenGLで日本語文字列の描画
  • nogami
    (2007年10月08日)

  • (2007年10月08日)
  • nogami
    (2007年10月09日)
ウップス!
  • あるぱっか
    (2007年05月24日)
  • nogami
    (2007年05月28日)
  • あるぱっか
    (2007年05月30日)

RSSフィード

このブログの更新情報を、XML(ATOM)フォーマットで提供しています。
ご利用のRSSリーダーやアプリケーションにRSSフィードを登録してください。

ページの先頭へ戻る


Copyright(c) Daisuke Nogami. All Right Reserved.