「レイトレーシング」を編集中
ナビゲーションに移動
検索に移動
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
'''レイトレーシング'''([[英語]]:raytracing)とは、[[3DCG]]を描画する[[アルゴリズム]]のひとつである。 | '''レイトレーシング'''([[英語]]:raytracing)とは、[[3DCG]]を描画する[[アルゴリズム]]のひとつである。 | ||
− | ==概要== | + | == 概要 == |
現実の世界では太陽などの光源から光が出て、その光が物体に当たることで反射を繰り返し、最終的に人間の目に入った場合に物体が見える。 | 現実の世界では太陽などの光源から光が出て、その光が物体に当たることで反射を繰り返し、最終的に人間の目に入った場合に物体が見える。 | ||
一方、レイトレーシングではそれとは逆に目から視線が出て、その視線が物体に当たることで反射を繰り返し、最終的に光源に到達した場合に、光の強さを計算して色を算出し物体を描くというものである。ようするに現実の世界とは逆方向に光をシュミレーションしているのである。 | 一方、レイトレーシングではそれとは逆に目から視線が出て、その視線が物体に当たることで反射を繰り返し、最終的に光源に到達した場合に、光の強さを計算して色を算出し物体を描くというものである。ようするに現実の世界とは逆方向に光をシュミレーションしているのである。 | ||
− | 大雑把にいえばレイトレーシングは[[レイキャスティング]] | + | 大雑把にいえばレイトレーシングは[[レイキャスティング]]の発展系であり、[[レイキャスティング]]では最短で最速でまっすぐに一直線に接触があれば単純に色を拾うというものであったが、レイトレーシングでは物体と接触した際に「反射」や「拡散」の処理が入り、さらに光源に到達するまでの距離なども考慮される。 |
− | |||
+ | レイトレーシングは次のような特徴がある。 | ||
− | + | ;長所 | |
− | + | *反射や透過、屈折、影の効果をシンプルな[[アルゴリズム]]で実装できる | |
− | |||
− | + | ;短所 | |
− | + | *計算量が桁違いに多い | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | 「レイトレーシングは重い」というイメージがあるが、[[レイキャスティング]]に反射などの処理を加えても1回あたりの処理はそんなに重たいものではない。ただレイトレーシングでは画面の解像度と同じだけレイを飛ばさなければならない。たとえば画面の[[解像度]]が[[フルHD]](1920x1080)であれば約200万[[画素]]([[ピクセル]])もの[[レイ]]を投げることになる。これで秒間60フレームを出そうと思ったら1秒間に1億2000万回もレイを飛ばさなければならない(計算しなければならない)。さすがに1回の計算量が少なくてもこれだけあると重くなる。[[C言語]]で単純にforループを空回しただけでも重たいね。 | ||
==アルゴリズム== | ==アルゴリズム== | ||
そのうち書く | そのうち書く | ||
34行目: | 24行目: | ||
*[[レイキャスティング]] | *[[レイキャスティング]] | ||
− | |||
*[[DirectX Raytracing]] | *[[DirectX Raytracing]] | ||
50行目: | 39行目: | ||
;3D | ;3D | ||
− | * [[ボリュームレンダリング | + | |
− | + | *[[ボリュームレンダリング]] |