「ボリュームレンダリング」の版間の差分
imported>Administrator |
imported>Administrator |
||
1行目: | 1行目: | ||
'''ボリュームレンダリング'''([[英語]]:volume rendering)とは、3次元の[[ピクセル]]の集まり([[ボクセル]]という)から強引に3次元映像を作り出す力技のことである。 | '''ボリュームレンダリング'''([[英語]]:volume rendering)とは、3次元の[[ピクセル]]の集まり([[ボクセル]]という)から強引に3次元映像を作り出す力技のことである。 | ||
− | == 概要 == | + | ==概要== |
ボリュームレンダリングは主に[[放射線]]の吸収量を[[コンピューターグラフィックス]]として表現する[[医用画像]]や[[非破壊検査]]などの領域で使用されている手法である。ボリュームレンダリングでは[[モデル]]の表面だけの[[ポリゴン]]と異なり、[[モデル]]の中身まで描き出すことができる。大雑把に言えば[[マインクラフト]]で「何か」を作り上げたような感じである。 | ボリュームレンダリングは主に[[放射線]]の吸収量を[[コンピューターグラフィックス]]として表現する[[医用画像]]や[[非破壊検査]]などの領域で使用されている手法である。ボリュームレンダリングでは[[モデル]]の表面だけの[[ポリゴン]]と異なり、[[モデル]]の中身まで描き出すことができる。大雑把に言えば[[マインクラフト]]で「何か」を作り上げたような感じである。 | ||
11行目: | 11行目: | ||
ただしボリュームレンダリングでは3次元の点の集まりである[[ボクセル]]を扱う関係上、非常に多くの[[メモリ]]を必要とする。 | ただしボリュームレンダリングでは3次元の点の集まりである[[ボクセル]]を扱う関係上、非常に多くの[[メモリ]]を必要とする。 | ||
− | : メモリ消費量 | + | |
− | :* 512 * 512 * 512 * 2バイト = 256MB | + | :メモリ消費量 |
− | :* 1024 * 1024 * 1024 * 2バイト = 2GB | + | :*512 * 512 * 512 * 2バイト = 256MB |
+ | :*1024 * 1024 * 1024 * 2バイト = 2GB | ||
+ | |||
上記は単純に[[ボクセル]]を保持するために必要な最低限のメモリ容量であり、実際にはここから計算した値を確保しておくための[[メモリ]]なども必要になる。このような巨大な[[データ]]は[[メインメモリ]]から[[VRAM]]への転送なども大きな負担となる。[[ゲーム]]などに最適化された[[グラフィックボード]]は[[VRAM]]上に一度[[データ]]を転送したらシーンが変わるまで使い回す前提となっていることが多いため、[[メインメモリ]]と[[VRAM]]の間で大量の転送を行うような用途では[[シェーダー]]が遊んでしまうのである。このためボリュームレンダリングでは[[シェーダー]]の性能よりも[[メモリ]]の容量や速度が[[ボトルネック]]となることが多く、安物の[[オンボードGPU]]では厳しかったりする。なお、[[オンボードGPU]]でも[[PlayStation 4]]のように[[GDDR5]]と[[hUMA]]のような技術を組み合わせればボリュームレンダリングも大きく前進する可能性がある。 | 上記は単純に[[ボクセル]]を保持するために必要な最低限のメモリ容量であり、実際にはここから計算した値を確保しておくための[[メモリ]]なども必要になる。このような巨大な[[データ]]は[[メインメモリ]]から[[VRAM]]への転送なども大きな負担となる。[[ゲーム]]などに最適化された[[グラフィックボード]]は[[VRAM]]上に一度[[データ]]を転送したらシーンが変わるまで使い回す前提となっていることが多いため、[[メインメモリ]]と[[VRAM]]の間で大量の転送を行うような用途では[[シェーダー]]が遊んでしまうのである。このためボリュームレンダリングでは[[シェーダー]]の性能よりも[[メモリ]]の容量や速度が[[ボトルネック]]となることが多く、安物の[[オンボードGPU]]では厳しかったりする。なお、[[オンボードGPU]]でも[[PlayStation 4]]のように[[GDDR5]]と[[hUMA]]のような技術を組み合わせればボリュームレンダリングも大きく前進する可能性がある。 | ||
− | == 関連項目 == | + | ==関連項目== |
− | * [[ポリゴン]] | + | |
− | * [[医用画像]] | + | *[[ポリゴン]] |
− | * [[非破壊検査]] | + | *[[医用画像]] |
+ | *[[非破壊検査]] | ||
− | == 参考文献 == | + | ==参考文献== |
{{reflist}} | {{reflist}} | ||
{{stub}} | {{stub}} | ||
+ | [[カテゴリ:画像処理]] |
2019年5月16日 (木) 04:30時点における版
ボリュームレンダリング(英語: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のようにGDDR5とhUMAのような技術を組み合わせればボリュームレンダリングも大きく前進する可能性がある。