見出し画像

🎡P5.jsでフォンシェーディング(つるつる表現ざらざら表現) ディフューズ(DIFFUSE)とは一体なんですか?オーレン・ネイヤー反射モデル

AMBIENT + DIFFUSE + SPECULAR = PHONG SHADING ということで、すでにフォンシェーディングは我々のソースの中にあった

https://p5js.org/reference/#/p5/specularMaterial
アンビエントもスペキュラーもわかったが、これのどこらへんがDIFFUSEなのか?

拡散反射(Diffuse reflection)とは、光などの波や粒子が表面で反射することで、表面に入射した光線は、鏡面反射のように1つの角度だけでなく、多くの角度で散乱されることである。理想的な拡散反射面はランバート反射と呼ばれ、表面に隣接する半空間内のあらゆる方向から見たときに輝度が等しいことを意味する。
石膏のような非吸収性の粉体、紙のような繊維、白大理石のような多結晶体からなる表面は、光を効率よく乱反射させることができる。一般的な材料は、鏡面反射と拡散反射が混在しているものが多い


https://en.wikipedia.org/wiki/Diffuse_reflection

固体からの乱反射は、一般に表面の粗さに起因するものではありません。鏡面反射をさせるには、確かに表面が平らであることが必要ですが、乱反射を防ぐことはできません。よく磨かれた白い大理石は、いくら磨いても鏡のようにならない。磨いても鏡面反射は起こりますが、残った光は乱反射し続けるのです。(略)このメカニズムは非常に一般的なもので、一般的な物質のほとんどが「小さなもの」をつなぎ合わせてできているからです

ほとんどの材料は、表面を研磨して光の波長と同程度(1マイクロメートルの数分の1)の凹凸をなくせば、ある程度の鏡面反射をすることができます。

DIFFUSE=ざらさら感と覚えれば良いか?

サーフェスの粗さ; 0.0は標準のランバート反射(Lambertian reflectance
)で、高い値はオーレン・ネイヤーBSDF(Oren–Nayar reflectance)を有効にします。

https://docs.blender.org/manual/ja/2.90/render/shader_nodes/shader/diffuse.html

このマテリアルは、反射率の計算に非物理的なBlinn-Phongモデルを使用しています。MeshLambertMaterialで使用されているLambertianモデルとは異なり、これはスペキュラハイライトを持つ光沢のある表面(ニスを塗った木材など)をシミュレートすることができます。

https://threejs.org/docs/#api/en/materials/MeshPhongMaterial

反射率とは、入射した光をどのように反射するかを表す、物質の物理的性質のことである。様々な材料の外観は、その反射率特性によって大きく左右される。ほとんどの反射率モデルは、拡散反射と鏡面反射の2つに大別される。コンピュータビジョンやコンピュータグラフィックスでは、拡散成分はランバートリアンであると仮定されることが多い。ランバートの法則に従った表面は、どの方向から見ても同じように明るく見える。この拡散反射のモデルは1760年にJohann Heinrich Lambertによって提案され、おそらくコンピュータビジョンとグラフィックスにおいて最も広く使われている反射率モデルである。しかし、コンクリート、石膏、砂などの多くの実世界の表面では、Lambertianモデルは拡散成分の不十分な近似である。これは主に、Lambertianモデルが表面の粗さを考慮に入れていないためである

https://en.wikipedia.org/wiki/Oren%E2%80%93Nayar_reflectance_model

オーレン-ネイヤー反射モデルは、コンピュータグラフィックスにおいて、表面の粗さに基づいて拡散反射をシミュレートするためのモデルです。このモデルは、Michael OrenとShree K. Nayarによって1994年に提案されました。
トラディショナルなランバート反射モデルは、表面が完全に平滑であると仮定して、すべての方向に均等に光を散乱するという特性を持っています。しかし、実際の物体の表面は微細な構造や粗さを持っていることが多く、このランバートモデルだけではリアルなレンダリングを行うのが難しい場合があります。
オーレン-ネイヤー反射モデルは、この問題を解決するために、表面の粗さを考慮に入れたモデルを提案しました。このモデルでは、表面の粗さが与えられたとき、それに基づいて光の散乱の方向性を変更することができます。その結果、よりリアルなマテリアルのレンダリングが可能になりました。

お願い致します