2008年11月8日土曜日

blender - BlenderのToonはどうなっているか

Freestyle使う→じゃあ標準のEdgeって要らなくね?→自分用に書き換えるか
→そのまえにToon見てみよう↓


/* cartoon render diffuse */
static float Toon_Diff( float *n, float *l, float *v, float size, float smooth )
{
float rslt, ang;
//(*1)
rslt = n[0]*l[0] + n[1]*l[1] + n[2]*l[2];
//(*2)
ang = saacos( (double)(rslt) );
//(*3)
if( ang < size ) rslt = 1.0f;
else if( ang >= (size + smooth) || smooth == 0.0f ) rslt = 0.0f;
else rslt = 1.0f - ((ang - size) / smooth);

return rslt;
}


1:法線とライトベクトルの内積
2:safe arc cos
3:sizeとかsmoothとかの計算

こんだけかー。

--------------------

しばらくコード読んだ限りでは、レンダリングの頂点情報が、非常にアクセスしにくい場所にあって、ちょっとこれ書き換える気力は無いので、スクリプトで何とかすることに。
目標は、プレビュー画面にも出る上に、レンダリングでOSA付いてくるエッジ。目標3時間以内。

3時間経過・・・

プレビュー


OSA付きレンダ


なんというか力技。出来たのは出来たけど、ちょっと詰めが甘いなー。
プレビューしか使わない俺的には良いんだけど、レンダ結果がヘボ過ぎる



(マテリアル)ノード使ったらマシになったけど、今度はOSA付きレンダでボロボロになった。くそー!
OSA無しだとレンダできるけど、それじゃあ意味無いんだよなー。

0 件のコメント: