レイトレーシング




レイ トレーシング(ray tracing, 光線追跡法)は、光線などを追跡することで、ある点において観測される像などをシミュレートする手法である。


光線の他、直線的に伝わる(回析などの影響が少ない)ものであれば任意の波に適用できる手法であり、たとえば光以外の波長の短い電磁波(電波)や音波など(地震波や超音波など)が挙げられる。「波線追跡法」「音線追跡法」などといった語もある。


ある点(ある人の視点・耳・電波観測装置など)に届く光線・波線(電波の仮想的な線)・音線(音波の仮想的な線)などを逆にたどることによって、その点における視像(画像)・音像などを描画する。たとえば光線であれば、物体の表面の反射率、また透明度・屈折率等々を細かく反映させた像を得られるのが特徴で、1画素ずつ光線の経路を計算するので、高い画質で描画することができるという特長がある、が反面、一般的に計算量は多くなる。


この手法では反射や屈折は忠実に再現できるが、回折は近似やモデリングを必要とする。対象が異なっても伝播経路を追跡する基本的な原則は共通であるが、計算手順はそれぞれで異なる。




目次






  • 1 光線


    • 1.1 歴史


    • 1.2 用途




  • 2 電波


  • 3 地震波・超音波


  • 4 関連項目


  • 5 出典





光線




レイトレーシングで描画された球


レイ トレーシングの基本は、ray レイ(=光線)を扱うものであり、これは3次元コンピュータグラフィックス画像を描くレンダリング工程での手法のひとつである。日本語では「光線追跡法」とも。


この手法は、カメラや観察者に相当する受信点を中心に画角となる2次元方向内の微小な角度ごとのそれぞれの方向から受け取るはずの光線(レイ)を、算術演算処理をそれぞれ行うことで仮想的に逆方向に追跡し、その方向に何が見えるかを判定する。透明な物体では境界面ごとに複数の屈折光と反射光に分かれるが、それぞれの伝播経路を計算する。わずかな吸収を除けばほとんどが反射光となる鏡面反射では演算量があまり増えないが、透明や鏡面でない物体の表面は周囲のあらゆる方向へ光を乱反射しているため、それらをすべて演算しようとすれば演算量が指数関数的に増えてしまい有限時間内には処理できなくなる。こういった拡散反射は乱数によってランダムに選ばれた方向のみに限定することで演算量を現実的な処理量に抑えた「モンテカルロ・レイ トレーシング」によってシミュレートされる。モンテカルロ・レイトレーシングの内でも「分散レイトレーシング」と呼ばれる手法では、ある程度のリアルさをシミュレートするために拡散反射する表面ごとに逆追跡が必要な経路が多数生じるため、複数の表面同士で反射する光まで再現しようとしてやはり演算処理量が爆発的に増加してしまう。拡散反射する表面での逆追跡が必要な経路をランダムに1つだけ生む手法は「パス・レイトレーシング」と呼ばれる。


レイ トレーシングに似た手法、又は最も広義のレイ トレーシング手法の1つとも考えられるものに「フォトン・マッピング」がある。レイ トレーシングが観察者やカメラ側から光線の経路を逆追跡するのに対して、フォトン・マッピングでは光源側から光線の経路を再現する[1]




歴史


レイトレーシングは1979年に3次元CG画像用レンダリング手法の1つとして考案された。この最初に考案された狭義のレイトレーシング手法は、単純な形状の透明な物体や鏡面を再現するには効果的であったが、ざらついた質感を持つ物体の表面を表現したり複雑な形状を再現するには当時のコンピュータの処理能力の制約もあって適していなかった。その後、表現力を広げるための新たな手法が「モンテカルロ・レイトレーシング」「分散レイトレーシング」「パス・レイトレーシング」として考案され、こういった広義でのレイトレーシング手法は、21世紀初頭現在、間接光を再現する大域照明技術の代表的なものとなっている。


20世紀末から2000年代最初の数年間までは、映画のような動画を作るにも1フレーム当たり数分や十時間ほどもその当時の最新のコンピュータで演算する必要があり、2009年現在では、大規模な高精細度の動画生成が求められる映画産業や工業デザイン産業ではレンダー・ファームと呼ばれる100-1,000台規模のクラスタ・サーバーを構築することで対応している。広義でのレイトレーシング手法だけを用いて動画を生成しようとすると、高精細で複雑な照明効果をリアルに再現した画像を短時間に生み出すにはさらに巨大なコンピュータ群を必要とするため、実際には一般的なコンピュータ・グラフィックス映像では間接光などの再現はレイトレーシングだけに頼らずに影の再現は「シャドウ・マッピング」に、光沢面への写り込みは「環境マップ」に、場合によっては人が描いた2次元画像を重ねるなど、人手を介した多様な手法によって製作されている。


2009年現在、マルチコア化したプロセッサ(マルチコア・マルチソケットCPUやGPU)に代表される高性能な処理能力が得られるようになりつつあり、映画や工業デザイン分野では人手を介した作業が廃されてすべてをレイトレーシングベースの処理に集約することや、また映画や工業デザインのみで作られていたリアルな画像が、今後は個人所有のPC上でもゲームのような用途で短時間で製作できるようになる可能性がある[1]


2018年現在、GPUベースのリアルタイムレイトレーシングを実現しているAPI(ライブラリ、レンダリングエンジン)としては、NVIDIA OptiX(英語版) [2][3]イマジネーションテクノロジーズ(英語版)OpenRL(英語版) [4]DirectX Raytracing(英語版) (DXR)、そしてMetal Ray Tracingが挙げられる。NVIDIA OptiXはAdobe After Effects CCに採用されている[5]。また、CPUベースのリアルタイムレイトレーシングを実現しているソフトウェアとしてはKeyShot [6][7]が挙げられる。



用途


広義のレイトレーシングは、実写では再現不可能な映画の特殊効果や、工業用・建築用のデザインで採用されている。ゲーム業界でも部分的に使用されている。



電波


電波のレイトレーシングでは発信点からの電波を仮想的に追跡し、受信点における伝播特性、特に電界密度を得る。多くの場合、これを格子状に、通常は一定の高度の水平面上に配置された受信点に対し繰り返し行い、電界密度マップを得る。このマップは、無線設備の配置の決定などに使われる。


与えられた発信点から与えられた受信点までの波線は一意に定まらないため、次の解法がある。



レイラウンチング法 (ray launching)

送信点から多数のレイを発射 (launch) し、受信点の近くを通るレイを選び出す。計算量は少ないが、厳密な結果を得るためにはテクニックが必要である。なお、正しくは「レイローンチング」だが、慣習的に「レイラウンチング」と呼ぶ。

イメージング法 (imaging)

「イメージ」は「鏡像」の意味。鏡像原理にもとづき送信点と受信点を結ぶ経路のみを計算するため、常に厳密な結果が得られるが、反射回数に対し計算量が指数関数的に増加するため、2-3回程度の反射しか追跡できない。



地震波・超音波


地震波や超音波での通常のレイトレーシングでは、反射・屈折などの条件から、受信点での受信波を計算するが、この場合は、実際に測定された受信波から反射・屈折などの条件(特に波速分布)を逆算し、トモグラフィー(断層画像)を得る。



関連項目







  • テクスチャマッピング

  • バンプマッピング

  • 透過マッピング

  • 法線マッピング

  • NVIDIA OptiX(英語版)

  • OpenRL(英語版)

  • レンダリング (コンピュータ)#3Dレンダリング



出典



  1. ^ ab進藤智則 『リアルタイム化でよみがえるレイトレーシング技術』 日経エレクトロニクス2009年10月5日号


  2. ^ NVIDIA® OptiX アプリケーション・エンジン | NVIDIA


  3. ^ NVIDIA® OptiX Application Acceleration Engine | NVIDIA


  4. ^ 4Gamer.net ― PowerVRのImaginationが“ハイエンドGPU”の設計に着手。ハイブリッドレンダリングハードウェア,そして新API「OpenRL」とは?


  5. ^ GPU changes (for CUDA and OpenGL) in After Effects CC (12.1) | After Effects region of interest


  6. ^ 主な機能 | KeyShot™総合サイト


  7. ^ Tech Specs - KeyShot





Popular posts from this blog

MongoDB - Not Authorized To Execute Command

How to fix TextFormField cause rebuild widget in Flutter

in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith