「パストレーシング」の版間の差分

提供:MonoBook
編集の要約なし
 
(同じ利用者による、間の6版が非表示)
1行目: 1行目:
'''パストレーシング'''(英語:Path Tracing)とは、[[3DCG]]のレンダリング手法のひとつである。
'''パストレーシング'''(英語:Path Tracing)とは、[[3DCG]]のレンダリング手法のひとつである。[[レイトレーシング]]の発展型のひとつである。
[[レイトレーシング]]の発展型のひとつである。
 
「分散レイトレーシング」や「モンテカルロレイトレーシング」とも呼ばれる。


==概要==
==概要==
11行目: 12行目:


これを出力画像の全[[ピクセル]]に対して行う。ここまでは古典的な[[レイトレーシング]]である。
これを出力画像の全[[ピクセル]]に対して行う。ここまでは古典的な[[レイトレーシング]]である。
[[ファイル:レイトレーシング.png|なし|サムネイル]]
[[ファイル:レイトレーシング.png|none|640px]]


[[レイトレーシング]]では1[[ピクセル]]を生成するのに1個のレイを飛ばしているが、パストレーシングではより高画質を得るために、1[[ピクセル]]を生成するのに「進行方向を微妙にずらしたレイを大量に飛ばして、その結果を集計する」という方法を用いる。
[[ファイル:パストレーシング.png|none|640px]]


レイトレーシングでは1ピクセルを生成するのに1個のレイを飛ばしているが、パストレーシングではより高画質を得るために、1[[ピクセル]]を生成するのに「[[乱数]]で進行方向を微妙にずらしたレイを大量に飛ばして、その結果を集計する」という方法を用いる。
無尽蔵にレイを撃つと永遠に処理が終わらないので、一般的には「[[ランダム]]な16方向に飛ばす」などといった[[乱数]]を用いて計算量を一定量に抑えるという手法が用いられる。いわゆる[[モンテカルロ法]]だ。
[[ファイル:パストレーシング.png|なし|サムネイル]]
 


==画質==
==画質==
24行目: 25行目:
レイを飛ばす数は、そこそこな画像で「1ピクセル100レイ」、[[ラスタライズ法]]より明らかに高画質な画像で「1ピクセル5000レイ」と言われている。ハリウッド映画などではそれ以上の病的な数のレイを飛ばしていると言われている。
レイを飛ばす数は、そこそこな画像で「1ピクセル100レイ」、[[ラスタライズ法]]より明らかに高画質な画像で「1ピクセル5000レイ」と言われている。ハリウッド映画などではそれ以上の病的な数のレイを飛ばしていると言われている。


==応用1==
== ノイズ ==
レイトレーシングやパストレーシングの欠点として「背景にノイズが発生しやすい」という問題がある。
レイトレーシングやパストレーシングの欠点として「レイが1回も反射しない部分(背景)にノイズが発生しやすい」という問題がある。
 
より高速でそこそこな画像を得る方法として、
 
*[[ゲーム]]などで一般的な[[ポリゴン]]のレンダリング([[ラスタライズ法]])を事前に行い、
*それを視点から真正面の範囲外に1枚の巨大な[[テクスチャ]]として配置しておき、
*レイがモデルと衝突せずに範囲外に突き抜けた場合はそのテクスチャと衝突した箇所の色をサンプリングする


という技法もある。
=== 解決策1 ===
1ピクセルあたりの「飛ばすレイの数」を単純に増やすという手法である。
当然ながら計算量が激増する。
[[力こそパワー]]である。


この技法を使わずクソ真面目にやるとレイとモデルが衝突しなかった箇所にノイズが発生し、
=== 解決策2 ===
それを穴埋めるには大量のレイを飛ばして補完する必要があり計算量が激増する。
「そこそこ高速」かつ「そこそこな画質」を得る方法として以下のような手法もある。
* [[ゲーム]]などで一般的な[[ポリゴン]]のレンダリング([[ラスタライズ法]])を事前に行い、
* それを視点から真正面の範囲外に1枚の巨大な[[テクスチャ]]として配置しておき、
* レイがモデルと衝突せずに範囲外に突き抜けた場合はそのテクスチャと衝突した箇所の色をサンプリングする


==応用2==
==散乱==
光散乱を考慮したものは「[[ボリュメトリックパストレース]]」と呼ばれる。
光散乱を考慮したものは「[[ボリュメトリックパストレース]]」と呼ばれる。
レイが反射するたびにレイが分裂する感じである。
レイが反射するたびにレイが分裂する感じである。
計算量が激増するので完全に別物扱いである。
[[ファイル:ボリュメトリックパストレーシング.png|none|640px]]
[[モンテカルロ法]]の説明文で「パストレーシング」と書かれている場合はほぼ「[[ボリュメトリックパストレース]]」を指している。
 
パストレーシングとボリュームパストレーシングの違いは大雑把にいえば、
レイの分裂が「最初だけ」か「反射したときも」かの違いであるが、
後者はアホみたいに計算量が激増するので完全に別物扱いである。


==関連==
==関連==
*[[レイトレーシング]]
*[[レイトレーシング]]
*[[パストレーシング]]
*[[パストレーシング]]

2021年7月2日 (金) 05:46時点における最新版

パストレーシング(英語:Path Tracing)とは、3DCGのレンダリング手法のひとつである。レイトレーシングの発展型のひとつである。

「分散レイトレーシング」や「モンテカルロレイトレーシング」とも呼ばれる。

概要[編集 | ソースを編集]

  1. 出力画像のピクセルと視点からレイベクトル(方向)を計算し、レイを飛ばす。
  2. レイはモデルに衝突するとブロック崩しのように反射する。
  3. レイが光源と衝突したらピクセルに照度を加算する。
    この照度は双方向反射率分布関数BRDF )によって低下する。
  4. レイが範囲外に飛び出したら計算しない。

これを出力画像の全ピクセルに対して行う。ここまでは古典的なレイトレーシングである。

レイトレーシングでは1ピクセルを生成するのに1個のレイを飛ばしているが、パストレーシングではより高画質を得るために、1ピクセルを生成するのに「進行方向を微妙にずらしたレイを大量に飛ばして、その結果を集計する」という方法を用いる。

無尽蔵にレイを撃つと永遠に処理が終わらないので、一般的には「ランダムな16方向に飛ばす」などといった乱数を用いて計算量を一定量に抑えるという手法が用いられる。いわゆるモンテカルロ法だ。

画質[編集 | ソースを編集]

レイを飛ばす数を増やすと画質は向上するが、ねずみ算的に計算量が増える。 しかも一定量を超えるとあんまり違いはわからない。

レイを飛ばす数は、そこそこな画像で「1ピクセル100レイ」、ラスタライズ法より明らかに高画質な画像で「1ピクセル5000レイ」と言われている。ハリウッド映画などではそれ以上の病的な数のレイを飛ばしていると言われている。

ノイズ[編集 | ソースを編集]

レイトレーシングやパストレーシングの欠点として「レイが1回も反射しない部分(背景)にノイズが発生しやすい」という問題がある。

解決策1[編集 | ソースを編集]

1ピクセルあたりの「飛ばすレイの数」を単純に増やすという手法である。 当然ながら計算量が激増する。 力こそパワーである。

解決策2[編集 | ソースを編集]

「そこそこ高速」かつ「そこそこな画質」を得る方法として以下のような手法もある。

  • ゲームなどで一般的なポリゴンのレンダリング(ラスタライズ法)を事前に行い、
  • それを視点から真正面の範囲外に1枚の巨大なテクスチャとして配置しておき、
  • レイがモデルと衝突せずに範囲外に突き抜けた場合はそのテクスチャと衝突した箇所の色をサンプリングする

散乱[編集 | ソースを編集]

光散乱を考慮したものは「ボリュメトリックパストレース」と呼ばれる。 レイが反射するたびにレイが分裂する感じである。

パストレーシングとボリュームパストレーシングの違いは大雑把にいえば、 レイの分裂が「最初だけ」か「反射したときも」かの違いであるが、 後者はアホみたいに計算量が激増するので完全に別物扱いである。

関連[編集 | ソースを編集]