【コラム】

3Dグラフィックス・マニアックス

74 3Dモデルの変形までが可能な動的PRT(3)~帯域調和関数(Zonal Harmonics)の導入

74/99

帯域調和関数(Zonal Harmonics)の導入

SHEXP技法では、球のShadow Fieldsの取り扱いについてさらなる最適化を推し進める。

球の形状はどこから見ても同じ"円"だ。

まじめに全天周分のShadow Fieldsを保持すれば確かに実行面で有利だが、メモリの消費量が大きくなってしまう。どのみち、どこから見ても同じ円にしかみえないのであれば、ある一軸方向の一定距離の各地点のShadow Fieldsを算出しておき、これをリアルタイムレンダリング時にSH Rotationにて変移させる処理を実装してやればメモリ消費量をかなり少なくできるはずだ。しかし、SH Rotationの計算自体の負荷が高いので実際にはパフォーマンス面で不利になる。

球のShadow Fieldsの取り扱いについての3つの実装案

そこで、高い処理速度とメモリ消費量のいいとこ取り的なテクニックであるZonal Harmonics(帯域調和関数)という概念を導入する。

Zonal Harmonicsでは、前述したSH Rotationで変移させる実装案のように、一方向のみのZonal Harmonics係数を保持しておけばよいのでメモリの消費量は小さいうえに、計算負荷はそれほど高くはない。

Zonal Harmonicsには回転対称な情報にしか適用できないという制約があるのだが、取り扱う対象がどこから見ても同一形状の球の遮蔽構造データなので問題はない。

Zonal Harmonicsの要点

取り扱う対象がどこから見ても同一形状の球の遮蔽構造データなのでZonal Harmonicsが適用できる

Zonal Harmonicsにおいて保持する一方向の決定の仕方にはコツがいる。ある条件(図参照)を満たす方向で決定し、遮蔽構造を算出し球面調和関数にて近似して遮蔽係数ベクトルを得ると、m=0以外の係数は全てゼロになってしまう。この特性に着目すれば、m=0の時の遮蔽係数ベクトルだけを保持しておけばよいことになる。

この特性は、その特殊条件を満たす方向を選択した場合の効果だ。そして、このm=0の時の遮蔽係数ベクトルにZonal Harmonicsの補正係数を掛けて算出したものがZornal Harmonics係数(ZH係数)になる。

言い換えれば、ZH係数は、特殊条件下におけるm=0の球面調和関数の遮蔽係数ベクトルの小細工(=Zonal Harmonics)導入版ということができる。

Zornal Harmonics利用のための特殊条件

Zonal Harmonics係数の計算の流れ。l=3までの球面調和関数の遮蔽係数ベクトルは本来ならば16個保存しなければならないのだが、特殊条件下の恩恵によってm=0以外の係数は全部ゼロになってしまうのでそれらが不要となる。ここがポイント

結局、欲しいのは任意の方向の遮蔽係数ベクトルだ。これは、その任意の角度の球面調和関数と、先ほどの基準軸で求めたZH係数の積算から求められる。このあたりの数学的な理論と証明は省略するが、この技法を利用する側はそういうものだということで使うことができる。ポイントとなるのは、SH Rotationではベクトルと行列の積算が5回も必要なのに対し、ZHを用いるとベクトル同士の積算一回で任意の方向の遮蔽係数ベクトルが求まるという点だ。

Zonal Harmonicsの導入で任意の方向の遮蔽係数ベクトルが比較的低負荷に計算可能となった

実際の実装では球の中心から異なる一定間隔距離ごとのZH係数を求め、これをテーブル化して保持することになる。この"一定距離"とは「球の中心からの一定距離」ではなく、球の中心へ向けた直線と、球の面に対する接線が織りなす角度の変化(球に対して最も遠い=0°~球に対して最も近い=90°)単位で与える。これは後述する遮蔽係数ベクトルの統合計算を効率よく行うためのテクニックになる。(続く)

ZH係数テーブルの概念

ZH係数を求めるポイントは距離ではなく角度をキーにして作成するのがあとで便利にきいてくる

球のShadow Fieldsのまとめ。ZH係数を利用することで省メモリ、高速実行が実現される

(トライゼット西川善司)

74/99

インデックス

連載目次
第99回 3D立体視の解体新書 - 立体視という知覚(4)~単眼立体視と両眼立体視の有効範囲の考察
第98回 3D立体視の解体新書 - 立体視という知覚(3)~両眼立体視
第97回 3D立体視の解体新書 - 立体視という知覚(2)~単眼立体視(2)
第96回 3D立体視の解体新書 - 立体視という知覚(1)~単眼立体視(1)
第95回 人工知性でコンテンツを生成するプロシージャル技術(19)
第94回 人工知性でコンテンツを生成するプロシージャル技術(18)
第93回 人工知性でコンテンツを生成するプロシージャル技術(17)
第92回 人工知性でコンテンツを生成するプロシージャル技術(16)
第91回 人工知性でコンテンツを生成するプロシージャル技術(15)
第90回 人工知性でコンテンツを生成するプロシージャル技術(14)
第89回 人工知性でコンテンツを生成するプロシージャル技術(13)
第88回 人工知性でコンテンツを生成するプロシージャル技術(12)
第87回 人工知性でコンテンツを生成するプロシージャル技術(11)
第86回 人工知性でコンテンツを生成するプロシージャル技術(10)
第85回 人工知性でコンテンツを生成するプロシージャル技術(9)
第84回 人工知性でコンテンツを生成するプロシージャル技術(8)
第83回 人工知性でコンテンツを生成するプロシージャル技術(7)
第82回 人工知性でコンテンツを生成するプロシージャル技術(6)
第81回 人工知性でコンテンツを生成するプロシージャル技術(5)
第80回 人工知性でコンテンツを生成するプロシージャル技術(4)
第79回 人工知性でコンテンツを生成するプロシージャル技術(3)
第78回 人工知性でコンテンツを生成するプロシージャル技術(2)
第77回 人工知性でコンテンツを生成するプロシージャル技術(1)
第76回 3Dモデルの変形までが可能な動的PRT(5)~SH Exp演算の大胆な近似による高速化
第75回 3Dモデルの変形までが可能な動的PRT(4)~SH Log演算とSH Log次元における遮蔽の統合
第74回 3Dモデルの変形までが可能な動的PRT(3)~帯域調和関数(Zonal Harmonics)の導入
第73回 3Dモデルの変形までが可能な動的PRT(2)~SH LogとSH Expとは?
第72回 3Dモデルの変形までが可能な動的PRT(1)~3Dモデルの変形に対応した動的PRT技術の台頭
第71回 限定条件付き動的PRT(2)~PSF技法におけるライティング
第70回 限定条件付き動的PRT(1)~動的PRT第一段階PSF技法とは?
第69回 事前計算放射輝度伝搬(PRT)~PRTの基本。静的PRT(4)
第68回 事前計算放射輝度伝搬(PRT)~PRTの基本。静的PRT(3)
第67回 事前計算放射輝度伝搬(PRT)~PRTの基本。静的PRT(2)
第66回 事前計算放射輝度伝搬(PRT)~PRTの基本。静的PRT(1)
第65回 事前計算放射輝度伝搬(PRT)~PRTとは?
第64回 表面下散乱によるスキンシェーダ(8)~表面下散乱とスキンシェーダ(6)
第63回 表面下散乱によるスキンシェーダ(7)~表面下散乱とスキンシェーダ(5)
第62回 表面下散乱によるスキンシェーダ(6)~表面下散乱とスキンシェーダ(4)
第61回 表面下散乱によるスキンシェーダ(5)~表面下散乱とスキンシェーダ(3)
第60回 表面下散乱によるスキンシェーダ(4)~表面下散乱とスキンシェーダ(2)
第59回 表面下散乱によるスキンシェーダ(3)~表面下散乱とスキンシェーダ(1)
第58回 表面下散乱によるスキンシェーダ(2)~ハーフライフ2で採用の疑似ラジオシティライティング(2)
第57回 表面下散乱によるスキンシェーダ(1)~ハーフライフ2で採用の疑似ラジオシティライティング(1)
第56回 水面の表現(5)~大きな波
第55回 水面の表現(4)~水面のライティング(2)
第54回 水面の表現(3)~水面のライティング(1)
第53回 水面の表現(2)~動的なさざ波
第52回 水面の表現(1)~水面表現の歴史
第51回 HDRレンダリング(11)~トーンマッピング
第50回 HDRレンダリング(10)~HDRブルーム/グレア処理
第49回 HDRレンダリング(9)~HDRテクスチャ
第48回 HDRレンダリング(8)~HDRレンダーターゲット
第47回 HDRレンダリング(7)~HDRレンダリングのプロセス
第46回 HDRレンダリング(6)~HDRレンダリングの歴史と動向(2)
第45回 HDRレンダリング(5)~HDRレンダリングの歴史と動向(1)
第44回 HDRレンダリング(4)~HDRレンダリングの第三の効能
第43回 HDRレンダリング(3)~HDRレンダリングの第二の効能
第42回 HDRレンダリング(2)~HDRレンダリングの第一の効能
第41回 HDRレンダリング(1)~HDRレンダリングとは?
第40回 ジオメトリシェーダ(11)~ジオメトリシェーダを活用した新表現(7)
第39回 ジオメトリシェーダ(10)~ジオメトリシェーダを活用した新表現(6)
第38回 ジオメトリシェーダ(9)~ジオメトリシェーダを活用した新表現(5)
第37回 ジオメトリシェーダ(8)~ジオメトリシェーダを活用した新表現(4)
第36回 ジオメトリシェーダ(7)~ジオメトリシェーダを活用した新表現(3)
第35回 ジオメトリシェーダ(6)~ジオメトリシェーダを活用した新表現(2)
第34回 ジオメトリシェーダ(5)~ジオメトリシェーダを活用した新表現(1)
第33回 ジオメトリシェーダ(4)~ジオメトリシェーダのアクセラレーション的活用(4)
第32回 ジオメトリシェーダ(3)~ジオメトリシェーダのアクセラレーション的活用(3)
第31回 ジオメトリシェーダ(2)~ジオメトリシェーダのアクセラレーション的活用(2)
第30回 ジオメトリシェーダ(1)~ジオメトリシェーダのアクセラレーション的活用・ステンシルシャドウボリューム技法の影生成を加速する
第29回 影の生成(10)~改良型デプスシャドウ技法(5)
第28回 影の生成(9)~改良型デプスシャドウ技法(4)
第27回 影の生成(8)~改良型デプスシャドウ技法(3)
第26回 影の生成(7)~改良型デプスシャドウ技法(2)
第25回 影の生成(6)~改良型デプスシャドウ技法(1)
第24回 影の生成(5)~デプスシャドウ技法
第23回 影の生成(4)~ステンシルシャドウボリューム技法(2)
第22回 影の生成(3)~ステンシルシャドウボリューム技法(1)
第21回 影の生成(2)~投射テクスチャマッピング技法
第20回 影の生成(1)~3Dグラフィックスにおける2つのカゲの存在
第19回 バンプマッピングの先にあるもの(3)~セルフシャドウ付き視差遮蔽マッピング
第18回 バンプマッピングの先にあるもの(2)~視差遮蔽マッピング
第17回 バンプマッピングの先にあるもの(1)~視差マッピング
第16回 微細凹凸表現の基本形「法線マップ」(3)
第15回 微細凹凸表現の基本形「法線マップ」(2)
第14回 微細凹凸表現の基本形「法線マップ」(1)
第13回 3Dグラフィックスの概念とレンダリングパイプライン(5)
第12回 3Dグラフィックスの概念とレンダリングパイプライン(4)
第11回 3Dグラフィックスの概念とレンダリングパイプライン(3)
第10回 3Dグラフィックスの概念とレンダリングパイプライン(2)
第9回 3Dグラフィックスの概念とレンダリングパイプライン(1)
第8回 GPUとシェーダ技術の基礎知識(8)
第7回 GPUとシェーダ技術の基礎知識(7)
第6回 GPUとシェーダ技術の基礎知識(6)
第5回 GPUとシェーダ技術の基礎知識(5)
第4回 GPUとシェーダ技術の基礎知識(4)
第3回 GPUとシェーダ技術の基礎知識(3)
第2回 GPUとシェーダ技術の基礎知識(2)
第1回 GPUとシェーダ技術の基礎知識(1)

もっと見る

関連キーワード

人気記事

一覧

新着記事