ボリュームレンダリング

提供: MonoBook
移動: 案内検索

ボリュームレンダリング英語:volume rendering)とは、3次元のピクセルの集まり(ボクセルという)から強引に3次元映像を作り出す力技のことである。

概要[編集]

ボリュームレンダリングは主に放射線の吸収量をコンピューターグラフィックスとして表現する医用画像非破壊検査などの領域で使用されている手法である。ボリュームレンダリングではモデルの表面だけのポリゴンと異なり、モデルの中身まで描き出すことができる。大雑把に言えばマインクラフトで「何か」を作り上げたような感じである。

コンピューターおよびグラフィックボードの高性能化により、ゲームなどのポリゴン主体の3Dにおいても、雲の表現などの古くからビルボードという手抜き手法が使われていた部分を高画質化する手法として採用され始めている。

ボリュームレンダリングにおいて最終的に出力する1つのピクセルの値を求めるため、ボクセルと呼ばれる3次元ビットマップのようなものから必要なデータ配列)を抽出することをレイキャスティングという。ボリュームレンダリングではレイキャスティングで得られたデータ配列)を最大値最小値平均値中央値、単純に加算などの様々な方法により加工することで最終的な映像(1つのピクセル)を取得する。ただし、レイキャスティングで得た値を即座にピクセルに変換する手法が一般的であるため、ボリュームレンダリングとレイキャスティングを同一として語られることも多い。

ボリュームレンダリングではピクセル単位でレイキャスティングを行い、その他の要素から影響を受けにくいため、GPUに搭載されるピクセルシェーダー宗教上の理由によりOpenGLの世界ではフラグメントシェーダーと呼ばれる)と非常に相性がよく、近年の壮大なGPUではそこそこ高速に処理できるようになりつつある。

ただしボリュームレンダリングでは3次元の点の集まりであるボクセルを扱う関係上、非常に多くのメモリを必要とする。

メモリ消費量
  • 512 * 512 * 512 * 2バイト = 256MB
  • 1024 * 1024 * 1024 * 2バイト = 2GB

上記は単純にボクセルを保持するために必要な最低限のメモリ容量であり、実際にはここから計算した値を確保しておくためのメモリなども必要になる。このような巨大なデータメインメモリからVRAMへの転送なども大きな負担となる。ゲームなどに最適化されたグラフィックボードVRAM上に一度データを転送したらシーンが変わるまで使い回す前提となっていることが多いため、メインメモリVRAMの間で大量の転送を行うような用途ではシェーダーが遊んでしまうのである。このためボリュームレンダリングではシェーダーの性能よりもメモリの容量や速度がボトルネックとなることが多く、安物のオンボードGPUでは厳しかったりする。なお、オンボードGPUでもPlayStation 4のようにGDDR5hUMAのような技術を組み合わせればボリュームレンダリングも大きく前進する可能性がある。

関連項目[編集]

参考文献[編集]