コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
最近の更新
未作成ページ
おまかせ表示
ヘルプ
MonoBook
検索
検索
ログイン
個人用ツール
ログイン
ログアウトした編集者のページ
もっと詳しく
投稿記録
トーク
「
ボリュームレイキャスティング
」を編集中
ページ
議論
日本語
閲覧
編集
ソースを編集
履歴表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
編集
ソースを編集
履歴表示
全般
リンク元
関連ページの更新状況
特別ページ
ページ情報
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
'''ボリュームレイキャスティング'''([[英語]]:volume ray casting)とは、[[ボリュームレンダリング]]の[[アルゴリズム]]の一種で、主要処理に[[レイキャスティング]]を使用するものをいう。 ==概要== [[レイキャスティング]]は「[[ゲーム]]の当たり判定」などのにも使われる汎用的な[[アルゴリズム]]である。これを[[ボリュームレンダリング]]に応用したものがボリュームレイキャスティングである。 [[レイキャスティング]]は「[[ボクセル]]」と呼ばれる3次元の[[ビットマップ]]のような[[データ]]([[配列]])からデータを抽出する処理に使われる。まず視点位置と描画対象ピクセルのベクトル(レイを伸ばす角度、方向)を求める。これが「レイ」であり、このレイをまっすぐ伸ばし、ボクセルを貫通した位置にあるデータが抽出対象となる。 この[[レイキャスティング]]で得られた[[データ]]([[配列]])をもとに、[[最大値]]や[[最小値]]、[[平均値]]、[[中央値]]、単純に[[加算]]など、様々な方法により加工することで最終的な映像(1つの[[ピクセル]])を取得する。この加工方法が重要であり「加工方法≒アルゴリズム名」となっている。 *MIP (Maximum Intensity Projection) = 最大値 *MinIP (Minimum Intensity Projection) = 最小値 *RaySum (Ray Summation) = 単純加算、CT値などは相対値なので足し合わせると勝手に平均値になる *Surface Rendering = 特定範囲の値、かつ最初に出現したもの *Volume Rendering = 特定範囲の値、かつ不透明度マップを掛けたもの これをひたすら繰り返す。すると最終的に1枚の画像になる。 [[ファイル:Volume-raycasting.png|なし|サムネイル|640x640ピクセル]] ===並列処理=== ボリュームレイキャスティングではアプリの表示領域の[[ピクセル]]単位で[[レイキャスティング]]を行う。たとえば縦512x横512の解像度の画像を生成しようと思った場合、「512x512=262144回」のレイキャスティングを行うことになる。ちなみに「より高画質に」という要望の場合には目的の解像度の2倍から16倍程度の解像度の画像を一旦生成し、目的の解像度に縮小するという手法が用いられる。 いわゆる「[[MSAA]]」だね。 話は逸れたが「512x512=262144回」は凄い数だ。 ただこの処理は一方的なデータの「取得」である。データの「変更」は伴わない。出力先の画像も1ピクセル毎に処理しているので同じメモリ番地に重複して書き込まれることもない。つまり排他制御も何も考えずに並列化できる。 昨今の[[マルチコア]]な[[CPU]]が簡単に活かせる。また、[[GPU]]に搭載される[[ピクセルシェーダー]]([[宗教上の理由]]により[[OpenGL]]の世界では[[フラグメントシェーダー]]と呼ばれる)とも非常に相性がよく、近年の壮大な[[GPU]]ではそこそこ高速に処理できる。なお、GPUで処理する方法は後述のメモリ消費量が問題になることが多いので注意すること。一般的に[[メインメモリ]]と異なり[[VRAM]]は[[仮想メモリ]]をサポートしない。 ===メモリ消費量=== ボリュームレンダリングでは3次元の点の集まりである[[ボクセル]]を扱う関係上、非常に多くの[[メモリ]]を必要とする。 :メモリ消費量 :*512 * 512 * 512 * 2バイト = 256MB :*1024 * 1024 * 1024 * 2バイト = 2GB 上記は単純に[[ボクセル]]を保持するために必要な最低限のメモリ容量であり、実際にはここから計算した値を確保しておくための[[メモリ]]なども必要になる。このような巨大な[[データ]]は[[メインメモリ]]から[[VRAM]]への転送なども大きな負担となる。 [[ゲーム]]などに最適化された[[グラフィックボード]]は[[VRAM]]上に一度[[データ]]を転送したらシーンが変わるまで使い回す前提となっていることが多いため、[[メインメモリ]]と[[VRAM]]の間で大量の転送を行うような用途では[[シェーダー]]が遊んでしまうのである。 このためボリュームレンダリングでは[[シェーダー]]の性能よりも[[メモリ]]の容量や速度が[[ボトルネック]]となることが多く、安物の[[オンボードGPU]]では厳しかったりする。なお、[[オンボードGPU]]でも[[PlayStation 4]]のように[[GDDR5]]と[[hUMA]]のような技術を組み合わせればボリュームレンダリングも大きく前進する可能性がある。 ==レイトレーシング== ボリュームレイキャスティングは「光が突き抜ける」というものである。 これを「光が反射する」という処理に置き換えると「[[レイトレーシング]]」となる。 一見同じようなものに見えるが、「反射」と「反射時の光の拡散」で計算量は桁違いに増える。 ==関連項目== *[[ポリゴン]] *[[医用画像]] *[[非破壊検査]] [[category: 画像処理]] [[category: 3DCG]]
編集内容の要約:
MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MonoBook:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の確認用の質問に回答してください (
詳細
):
1たす1は?(全角で入力してください)
キャンセル
編集の仕方
(新しいウィンドウで開きます)
本文の横幅制限を有効化/無効化