「パストレーシング」の版間の差分
Administrator (トーク | 投稿記録) (→応用1) |
Administrator (トーク | 投稿記録) |
||
17行目: | 17行目: | ||
[[ファイル:パストレーシング.png|none|640px]] | [[ファイル:パストレーシング.png|none|640px]] | ||
− | 無尽蔵にレイを撃つと永遠に処理が終わらないので、一般的には「[[ランダム]]な16方向に飛ばす」などといった[[乱数]] | + | 無尽蔵にレイを撃つと永遠に処理が終わらないので、一般的には「[[ランダム]]な16方向に飛ばす」などといった[[乱数]]を用いて計算量を一定量に抑えるという手法が用いられる。いわゆる[[モンテカルロ法]]だ。 |
==画質== | ==画質== | ||
25行目: | 25行目: | ||
レイを飛ばす数は、そこそこな画像で「1ピクセル100レイ」、[[ラスタライズ法]]より明らかに高画質な画像で「1ピクセル5000レイ」と言われている。ハリウッド映画などではそれ以上の病的な数のレイを飛ばしていると言われている。 | レイを飛ばす数は、そこそこな画像で「1ピクセル100レイ」、[[ラスタライズ法]]より明らかに高画質な画像で「1ピクセル5000レイ」と言われている。ハリウッド映画などではそれ以上の病的な数のレイを飛ばしていると言われている。 | ||
− | == | + | == ノイズ == |
レイトレーシングやパストレーシングの欠点として「レイが1回も反射しない部分(背景)にノイズが発生しやすい」という問題がある。 | レイトレーシングやパストレーシングの欠点として「レイが1回も反射しない部分(背景)にノイズが発生しやすい」という問題がある。 | ||
− | + | === 解決策1 === | |
+ | 1ピクセルあたりの「飛ばすレイの数」を単純に増やすという手法である。 | ||
+ | 当然ながら計算量が激増する。 | ||
+ | [[力こそパワー]]である。 | ||
+ | |||
+ | === 解決策2 === | ||
+ | 「そこそこ高速」かつ「そこそこな画質」を得る方法として以下のような手法もある。 | ||
* [[ゲーム]]などで一般的な[[ポリゴン]]のレンダリング([[ラスタライズ法]])を事前に行い、 | * [[ゲーム]]などで一般的な[[ポリゴン]]のレンダリング([[ラスタライズ法]])を事前に行い、 | ||
* それを視点から真正面の範囲外に1枚の巨大な[[テクスチャ]]として配置しておき、 | * それを視点から真正面の範囲外に1枚の巨大な[[テクスチャ]]として配置しておき、 | ||
* レイがモデルと衝突せずに範囲外に突き抜けた場合はそのテクスチャと衝突した箇所の色をサンプリングする | * レイがモデルと衝突せずに範囲外に突き抜けた場合はそのテクスチャと衝突した箇所の色をサンプリングする | ||
− | |||
− | |||
− | |||
− | |||
− | |||
==応用2== | ==応用2== |
2021年7月2日 (金) 05:45時点における版
パストレーシング(英語:Path Tracing)とは、3DCGのレンダリング手法のひとつである。レイトレーシングの発展型のひとつである。
「分散レイトレーシング」や「モンテカルロレイトレーシング」とも呼ばれる。
概要
- 出力画像のピクセルと視点からレイのベクトル(方向)を計算し、レイを飛ばす。
- レイはモデルに衝突するとブロック崩しのように反射する。
- レイが光源と衝突したらピクセルに照度を加算する。
- この照度は双方向反射率分布関数( BRDF )によって低下する。
- レイが範囲外に飛び出したら計算しない。
これを出力画像の全ピクセルに対して行う。ここまでは古典的なレイトレーシングである。
レイトレーシングでは1ピクセルを生成するのに1個のレイを飛ばしているが、パストレーシングではより高画質を得るために、1ピクセルを生成するのに「進行方向を微妙にずらしたレイを大量に飛ばして、その結果を集計する」という方法を用いる。
無尽蔵にレイを撃つと永遠に処理が終わらないので、一般的には「ランダムな16方向に飛ばす」などといった乱数を用いて計算量を一定量に抑えるという手法が用いられる。いわゆるモンテカルロ法だ。
画質
レイを飛ばす数を増やすと画質は向上するが、ねずみ算的に計算量が増える。 しかも一定量を超えるとあんまり違いはわからない。
レイを飛ばす数は、そこそこな画像で「1ピクセル100レイ」、ラスタライズ法より明らかに高画質な画像で「1ピクセル5000レイ」と言われている。ハリウッド映画などではそれ以上の病的な数のレイを飛ばしていると言われている。
ノイズ
レイトレーシングやパストレーシングの欠点として「レイが1回も反射しない部分(背景)にノイズが発生しやすい」という問題がある。
解決策1
1ピクセルあたりの「飛ばすレイの数」を単純に増やすという手法である。 当然ながら計算量が激増する。 力こそパワーである。
解決策2
「そこそこ高速」かつ「そこそこな画質」を得る方法として以下のような手法もある。
- ゲームなどで一般的なポリゴンのレンダリング(ラスタライズ法)を事前に行い、
- それを視点から真正面の範囲外に1枚の巨大なテクスチャとして配置しておき、
- レイがモデルと衝突せずに範囲外に突き抜けた場合はそのテクスチャと衝突した箇所の色をサンプリングする
応用2
光散乱を考慮したものは「ボリュメトリックパストレース」と呼ばれる。 レイが反射するたびにレイが分裂する感じである。
パストレーシングとボリュームパストレーシングの違いは大雑把にいえば、 レイの分裂が「最初だけ」か「反射したときも」かの違いであるが、 後者はアホみたいに計算量が激増するので完全に別物扱いである。