2014年03月07日

シェーダのテスト

Blenderのシェーダノードの説明[1]を見て、いくつか試してみることにしました。

1. Oren-Nayarシェーダ[2][3]
φの計算をどうするのかと思いましたが、法線平面に射影してその差でいいのですね[3]。結局cosθiの影響で端が暗くなるので、cosθiの変わりにHalf-Lambertの値を使うことにしました。

実行結果1
sigma=0(Half-Lambert)   sigma=1.0(Oren-Nayarもどき)
shader_test_00.png shader_test_10.png
とりあえず球で動作確認です。あまり違いがわかりませんね。表面に標準偏差σの正規分布に従うノイズテクスチャでも使えばそれっぽく見えそうな気もするのですが。

2. Velvetシェーダ[4][5][6]
[5][6]は視点と法線の内積が大きいときに暗くなる感じですが、[4]をみたりちょっと試した感じでは、Blenderではそれに加えて光源と法線の内積が小さいときにも暗くなるような効果を足している気がします。Blenderでは説明のない謎パラメータsigmaがありましたので、sigmaといえば正規分布かな、ということで内積の値を正規分布(ただし分散にかかわらず最大値は1になるように)にいれて色を計算するようにしました。微妙に違う感じがしますがまぁ気にしないでおきます。

実行結果2
とりあえず球で動作確認です。視点と法線の内積でsigmaの値を変えています。

   sigma=0.0      sigma=0.2   
shader_test2_00.png shader_test2_03.png 
   sigma=0.5      sigma=1.0
shader_test2_05.png shader_test2_10.png

光源と法線ベクトルの内積の場合(左)と両者を加算したもの(右)
shader_test2l_02.png shader_test2lv_07.png

実行結果3
メタセコで生成した地形で同様に試してみました。

視点から、sigma=0.8   光源から、sigma=0.5   視点+光源、sigma=0.5
shader_test3v_08.png shader_test3l_05.png shader_test3lv_05.png

視点から、sigma=0.5   視点から、sigma=0.5、別角度
shader_test3v_05.png shader_test3v2_05.png
真上から見た場合暗いところが多く、横から見ると法線と視線の成す角が大きくなる部分が明るくなっています。

実行結果4
Ashikhmin+Velvetであぴミクさんです。顔のテカテカは抑えることにしました。肌の輪郭が明るくなっているのがVelvetの効果ですかね。
shader_test_002.png

[1] Blender 2.6 マニュアル - シェーダノード
[2] Wikipedia - オーレンネイヤー反射
[3] t-pot-粘土ライティング
[4] Blender Cycles memo - Velvet BSDF
[5] Maverick Project - ベルベットシェーダー
[6] 3Dゲームファンのための「ワンダと巨像」グラフィックス講座
posted by シンドラー at 22:42 | Comment(0) | TrackBack(0) | OpenGL & Metasequoia | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック