I simply made up the anisotropic function out of my head. However, there's
considerable research about how to capture BRDFs from materials, and how to
make functions to compactly represent them. BRDFs are just the start. There's
also the BSDF, the Beet Sugar Development Foundation. We're more interested in
the Bi-Directional Scattering Distribution Function. This type of function
captures both how light reflects from and transmits through material. There's
also the BSSRDFs which stands for Bidirectional Surface Scattering Reflectance
Distribution Function. Say that one three times fast. This function is
important for materials like marble and milk. For these materials in
particular, the light enters one location on the surface, bounces around inside
the material, and comes out somewhere nearby. One other extremely important
material that has this sort of scattering is skin. Getting skin to look good
for interactive rendering can be quite involved. But the results are more
convincing than using some simple reflection model. See the additional course
materials for more information. That said, the key factor here is scale. The
effect of subsurface scattering lessens as the viewer's distance from the
object increases. Close up, a photon might exit at a location that's a fair
number of pixels away from where it entered the surface. From farther away,
they may be no change in pixel location. In fact the diffuse component for all
non-metallic materials comes from subsurface scattering. It's just that in many
cases this scattering is over an imperceptably small distance. Metals
themselves are essentially all specular. Let me say that again, because all
this time we've been living a lie. Metallic objects have no lambertian diffuse
term. Well, not a lie, I just like being dramatic. Really, diffuse is simply an
approximation of which we should be aware. Using it's fine, even high-quality
applications do so. It's quick to compute and looks plausible. In reality,
metals can indeed be given a roughened surface to give them a glossier, diffuse
look. So, a diffuse term is fine. However, on a an atomic level, metallic
objects have a free floating soup of electrons on the surface which absorbs and
reemits incoming photons. If your surface represents a shiny metal, you
probably don't want a diffuse term. Insulators have a diffuse term because the
photons undergo subsurface scattering. Most of the time the entry and exit
points are so close together it doesn't matter. But the direction of exit
certainly does. Materials such as that in an unglazed clay pot, concrete, and
even the moon itself, are rough enough that the lambertian reflection model
doesn't capture them fully. This again turns out to be a matter of scale,
having to do with the relationship of surface roughness with subsurface
scattering. Admittedly, trying to capture all of these effects leads to a lot
of work and possibly inefficient shaders. These subsurface scattering
renderings are from 3D Studio Max and rendered offline, not at interactive
rates. The main thing is to realize we don't have to stick with illumination
models from the 1970's because of inertia or ignorance. Using reflection models
based on how the real world works has a number of advantages. First and
foremost, if everything is properly modeled, your virtual world acts like the
real world. Change lighting conditions, and you don't have to tweak material
settings to look good. For design software, this assurance can mean that you
can trust what you see on the screen to have some relationship to what you
manufacture. Physically based rendering is also a great help to virtual world
content creators, such as game and film makers. It's a time saver to have
predictable illumination models, as the artist does not have to learn obscure
sliders that have no real world counterparts. It's vastly reassuring, knowing
that materials won't show some glitch from a certain angle, and knowing that
lighting can be changed without destroying the sense of realism. Rather than
limit creativity, a well-designed system makes for a more productive and
unrestrictive environment.
今のは私独自の異方性関数ですが
現在 いかにマテリアルからBRDF関数を作るかや
簡潔にまとめるかの研究が行われています
BRDF関数はほんの始まりです
ほかにもBSDF関数
双方向散乱分布関数というのがあります
この関数はいかにライトがマテリアルから
反射したかやマテリアル内を伝わるかを表します
また双方向散乱面反射率分布関数の略語である
BSSRDFもあります
この関数は大理石やミルクといったマテリアルの時に
とても重要になります
これらのマテリアルはライトが表面のある地点から入り
跳ね回って入射地点の近くから出ていきます
似たような散乱性を持つ重要なマテリアルに
人の皮膚があります
現実に近い皮膚を作る双方向性のレンダリングは
かなり複雑ですが本物らしい画像が得られます
詳細は補足の資料をご覧ください
ここで重要なのはスケーリングです
視点が遠くにいくほど表面下の散乱効果は弱まります
接近すると光子が出て行く場所は
大抵の場合 入射したピクセル位置から離れています
視点が遠い時 ピクセル位置は同じです
実は非金属の拡散反射成分は
表面下の散乱によってもたらされます
ただ多くの場合 この散乱はごくわずかしかありません
金属は基本的にどれも鏡面反射を起こします
重大な告白をします
金属はランバート拡散反射項を持ちません
ちょっと劇的に演出しましたが 要するに拡散反射は
認識すべき近似値ということです
高品質のアプリケーションでも使われていますし
計算が早くて本物らしくなります
実際 金属をピカピカに見せるため粗い面を
与えたりもするので拡散反射項は使用可能です
原子レベルで言えば 金属表面の電子の波が
入射してくる光子を吸収し
再放射しています
普通 輝きのある金属面を作る時に
拡散反射項は使わないでしょう
絶縁体のものが拡散反射項を持つのは
粒子の散乱が起きるからです
大抵 入口と出口は近いため
値は同じで大丈夫ですが 方向は違ってきます
素焼きの土器、コンクリート、月でさえも表面は粗く
ランバート反射モデルで
正確には表せません
原因は先程も言ったスケーリングです
これは表面の粗さや
表面下の散乱の関係と関わっています
ただ すべての効果を捕らえるのは大変ですし
非効率的なシェーダになってしまいます
散乱のレンダリングはインタラクティブレートでなく
3D Studio Maxなどのソフトから来ています
でも惰性や無知のために1970年代から続く
照度モデルに固執する必要はありません
実世界の仕組みを元に
反射モデルを使うことは多くの利点があります
最もいい点は完璧なモデルができれば
本物のように見えることです
あとは照明条件を変えるだけです
デザイン系ソフトにこうした確実性があれば
画面上のものが自分の作ったとおりだと信頼できます
物理ベースレンダリングも
ゲーム制作者には大きな助けとなります
予測可能な照度モデルは時間の節約になり
作者が不確実かつ
実世界にはないスライダを学ぶ必要がなくなるからです
どの角度からも問題がないことや
本物らしさを壊さずに照明が変更できることは
大きな安心です
よくデザインされたシステムは
生産性や自由度をより高めるのです