元記事

その他の改良

Ton Roosendaal



Phong補間とレイトレースシャドウ


擬似的になめらかなサーフェスにするために、多くのレンダリングソフトウェアは頂点法線のPhong補間を、陰影を表現するために使用します。しかし、レイトレースシャドウでは、シャドウエリアがシェーディングされたエリアと被って始まっていた時、その境界上にエラーが発生することがあります。これはレイトレースが形状自身によって起こるのであり、その擬似的な外見からは起こらないからです。
 


Andrew Woo氏(Alias)による記事(むしろ面白い読み物!)、It's really not a render bug, you see!(pdf)以外の、この問題についての文献を見つけるのは容易ではありませんでした。
Woo氏はこれを「ターミネータプロブレム」と称し、細かいサブディビジョンもしくは、レイをその法線の方向に少し動かすことによる、シャドウレイの人工的なオフセットのどちらかを使用することについて提案されています。しかしこれでは、小さなディテールが不自然になってしまいます。

Blenderに加えた解決策ではシャドウレイトレーサのパッチを行わず、動作させるべきところは確実に動作させるが、完全にこの問題を隠蔽できる正確な量で、Phong補間シェーディングの範囲を狭めることです。

このアルゴリズムは二つの段階で動作します。最初はそれぞれのObjectで頂点の法線とFaceの法線との内積の平均を計算します(i)。これは閾値(t)へと変換されます:

t= cos(0.5*PI - acos(i))

閾値(t)はその後下記の式により、ディフューズシェーダの結果に適用されます:

result *= (i-t)/(i-t*i)

iの場所は(補間された)サーフェス法線とlampベクトルの内積です。

インタフェイス
これで表示に少し影響を与えることができたので、私はオプションを一つ作ることに決めました。"Bias"、これはMaterialの "Shadow" ボタンの下にあります。

この画像は16セグメントのSphere、そしてそれをSubdivideしたものの結果です。



ターミネータプロブレム


 

Biasをシェーディングに適用




ブレンディングオプションの追加


Materialの"Map To"パネルとRampに新しいブレンディングモードが追加されました。


キャラクタ上のStatic Particle(毛髪)


今までStatic Particleは静止画、もしくは剛体のキャラクタのみで可能でした。
LatticeもしくはArmatureによるMeshの変形をStatic Particleのベースとして使用できるようになりました。これはレンダリング中、フレーム毎に再計算しています。
注意:現在はSubSurf Meshのみ動作します。
 

これは、雪男のモーションの動画の画像です。(1.3M, @ndy氏の著作)

TextureのIpo


Textureの変数をIpoを使用してアニメーションできるようになりました。これはMaterialに存在するマッピングとは違い、より多くTextureのコントロールが可能になります。

利用できるチャネル: NSize、NDepth、NType、Turb、Vnw1、Vnw2、Vnw3、Vnw4、MinkMExp、DistM、ColT、iScale、DistA、MgType、MgH、Lacu、Oct、MgOff、MgGan、NBase1、NBase2

サンプル: erosion2.avi