今まで異方性反射というのがなんなのか・必要性をあまり理解してなかったが、磨かれた金属といった質感表現に必要らしい。 以前PBRマテリアルを試したときはラフネスとメタリックだけしか扱わなかったが、追加してみた。
異方性反射
異方性反射がどういうものかはプリンシプルBSDFで異方性反射の使い方(1)/旋盤加工の作り方 - Blenderであそんでみたがわかりやすい。
実現方法はどうするのか調べてもなかなか要領をつかめなくて悩んだがなんのことはない、単に法線に直交する2方向を別々にスケールしてやればいいだけだった。 でその方向を指定する必要があるため、法線とは別に溝方向を指定する接ベクトルが必要になる。
マイクロファセットの凸凹が一様ではなく、溝と直交方向に偏っていることになる。
実装
ナイーブなパストレに組み込むにはimportanceSampleGGXでマイクロファセット法線をブラす際に考慮すればよい:
Vec importanceSampleGGXAniso(unsigned short *Xi, double Roughness, const Vec& N, double anisotropy, const Vec& T) { |
anisotropyパラメータで異方性の度合いを制御(0.0〜1.0)aspect = sqrt(1.0 - anisotropy * 0.9)で計算し、xy方向をそれぞれ除算と乗算する0.9という係数によってxyの比率は10倍までとなる- 等方性の場合半球状の法線分布だったのに対して、異方性では半楕円体になる
- 完全な円柱形も指定したい気もするがこの計算方法ではできない
- 接ベクトル
Tで溝の方向を指定
結果
上段:異方性1.0でラフネス0.0→0.5、下段:ラフネス0.3で異方性0.0→1.0
リンク
- Physically Based Shading At Disney パラメータはあるがあまり内容は触れられてない
- AgendaのAnisotropic specular detailsにaspectに関する式が示されているが、
axにroughness^2が掛かっていてそれをブラす法線に掛けてしまって悩むことになった…
- AgendaのAnisotropic specular detailsにaspectに関する式が示されているが、
- 過去記事:PBRマテリアルでパストレーシングしてみた!(Disney Principled BRDF)