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

提供: MonoBook
ナビゲーションに移動 検索に移動
2行目: 2行目:
 
[[レイトレーシング]]の発展型のひとつである。
 
[[レイトレーシング]]の発展型のひとつである。
  
== 概要 ==
+
==概要==
# 出力画像の[[ピクセル]]と視点から[[レイ]]の[[ベクトル]](方向)を計算し、レイを飛ばす。
+
 
# レイはモデルに衝突すると[[ブロック崩し]]のように反射する。
+
#出力画像の[[ピクセル]]と視点から[[レイ]]の[[ベクトル]](方向)を計算し、レイを飛ばす。
# レイが光源と衝突したらピクセルに照度を加算する。
+
#レイはモデルに衝突すると[[ブロック崩し]]のように反射する。
#: この照度は[[双方向反射率分布関数]]( [[BRDF]] )によって低下する。
+
#レイが光源と衝突したらピクセルに照度を加算する。
 +
#:この照度は[[双方向反射率分布関数]]( [[BRDF]] )によって低下する。
 
#レイが範囲外に飛び出したら計算しない。
 
#レイが範囲外に飛び出したら計算しない。
  
これを出力画像の全ピクセルに対して行う。
+
これを出力画像の全[[ピクセル]]に対して行う。ここまでは古典的な[[レイトレーシング]]である。
ここまでは古典的な[[レイトレーシング]]である。
+
[[ファイル:レイトレーシング.png|なし|サムネイル]]
[[ファイル:レイトレーシング|none|640px]]
 
  
レイトレーシングでは1ピクセルを生成するのに1個のレイを飛ばしているが、
 
パストレーシングではより高画質を得るために、1[[ピクセル]]を生成するのに「乱数で進行方向を微妙にずらしたレイを大量に飛ばして、その結果を集計する」という方法を用いる。
 
  
 +
レイトレーシングでは1ピクセルを生成するのに1個のレイを飛ばしているが、パストレーシングではより高画質を得るために、1[[ピクセル]]を生成するのに「[[乱数]]で進行方向を微妙にずらしたレイを大量に飛ばして、その結果を集計する」という方法を用いる。
 +
[[ファイル:パストレーシング.png|なし|サムネイル]]
  
  
 
+
==画質==
== 画質 ==
 
 
レイを飛ばす数を増やすと画質は向上するが、[[ねずみ算]]的に計算量が増える。
 
レイを飛ばす数を増やすと画質は向上するが、[[ねずみ算]]的に計算量が増える。
 
しかも一定量を超えるとあんまり違いはわからない。
 
しかも一定量を超えるとあんまり違いはわからない。
25行目: 24行目:
 
レイを飛ばす数は、そこそこな画像で「1ピクセル100レイ」、[[ラスタライズ法]]より明らかに高画質な画像で「1ピクセル5000レイ」と言われている。ハリウッド映画などではそれ以上の病的な数のレイを飛ばしていると言われている。
 
レイを飛ばす数は、そこそこな画像で「1ピクセル100レイ」、[[ラスタライズ法]]より明らかに高画質な画像で「1ピクセル5000レイ」と言われている。ハリウッド映画などではそれ以上の病的な数のレイを飛ばしていると言われている。
  
== 応用1 ==
+
==応用1==
 
レイトレーシングやパストレーシングの欠点として「背景にノイズが発生しやすい」という問題がある。
 
レイトレーシングやパストレーシングの欠点として「背景にノイズが発生しやすい」という問題がある。
  
 
より高速でそこそこな画像を得る方法として、
 
より高速でそこそこな画像を得る方法として、
* [[ゲーム]]などで一般的な[[ポリゴン]]のレンダリング([[ラスタライズ法]])を事前に行い、
+
 
* それを視点から真正面の範囲外に1枚の巨大な[[テクスチャ]]として配置しておき、
+
*[[ゲーム]]などで一般的な[[ポリゴン]]のレンダリング([[ラスタライズ法]])を事前に行い、
* レイがモデルと衝突せずに範囲外に突き抜けた場合はそのテクスチャと衝突した箇所の色をサンプリングする
+
*それを視点から真正面の範囲外に1枚の巨大な[[テクスチャ]]として配置しておき、
 +
*レイがモデルと衝突せずに範囲外に突き抜けた場合はそのテクスチャと衝突した箇所の色をサンプリングする
 +
 
 
という技法もある。
 
という技法もある。
  
37行目: 38行目:
 
それを穴埋めるには大量のレイを飛ばして補完する必要があり計算量が激増する。
 
それを穴埋めるには大量のレイを飛ばして補完する必要があり計算量が激増する。
  
== 応用2==
+
==応用2==
 
光散乱を考慮したものは「[[ボリュメトリックパストレース]]」と呼ばれる。
 
光散乱を考慮したものは「[[ボリュメトリックパストレース]]」と呼ばれる。
 
レイが反射するたびにレイが分裂する感じである。
 
レイが反射するたびにレイが分裂する感じである。
43行目: 44行目:
 
[[モンテカルロ法]]の説明文で「パストレーシング」と書かれている場合はほぼ「[[ボリュメトリックパストレース]]」を指している。
 
[[モンテカルロ法]]の説明文で「パストレーシング」と書かれている場合はほぼ「[[ボリュメトリックパストレース]]」を指している。
  
== 関連 ==
+
==関連==
* [[レイトレーシング]]
+
 
* [[パストレーシング]]
+
*[[レイトレーシング]]
* [[ライトトレーシング]]
+
*[[パストレーシング]]
* [[双方向パストレーシング]]
+
*[[ライトトレーシング]]
* [[メトロポリス光輸送法]]
+
*[[双方向パストレーシング]]
* [[フォトンマップ]]
+
*[[メトロポリス光輸送法]]
* [[プログレッシブフォトンマップ]]
+
*[[フォトンマップ]]
 +
*[[プログレッシブフォトンマップ]]

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

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

概要

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

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

レイトレーシング.png


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

パストレーシング.png


画質

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

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

応用1

レイトレーシングやパストレーシングの欠点として「背景にノイズが発生しやすい」という問題がある。

より高速でそこそこな画像を得る方法として、

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

という技法もある。

この技法を使わずクソ真面目にやるとレイとモデルが衝突しなかった箇所にノイズが発生し、 それを穴埋めるには大量のレイを飛ばして補完する必要があり計算量が激増する。

応用2

光散乱を考慮したものは「ボリュメトリックパストレース」と呼ばれる。 レイが反射するたびにレイが分裂する感じである。 計算量が激増するので完全に別物扱いである。 モンテカルロ法の説明文で「パストレーシング」と書かれている場合はほぼ「ボリュメトリックパストレース」を指している。

関連