ZDefocus 番外編

max値についてです。

 

sizeは何回かで説明したようにボケの大きさではありましたが、ではmaxは?maxは、そのまんま、最大ボケ幅を示していて、リミッターみたいなモノになっています。

カメラはレンズの焦点距離と、フォーカスまでの距離、あとfilmbackのサイズとF値によってボケ度合いが決まります。どの距離のとき、どれくらいボケて、その距離のとき、それぐらいボケるみたいな感じで。また、そのボケの最大値も 焦点距離F値から算出出来ます。

 

また、話をnukeにもどして、そのフレームでdepth値とsizeの値からしてmaxまで到達しないモノも当然あります。

 

以上をふまえてmaxにどのような値を入れればいいのかを決めれば良いのですが、入れる数値によって処理速度はどうなの?っていう疑問はあると思います。

検証してみました。

 

引き続き、ramp 0-1をdepthとして、zdefocusでsize 50とします。

また、max値に200をいれたもの(ZDefocus10)、51をいれたもの(ZDefocus11)を用意しまして、処理させます。両者のレンダリング結果はdifferenceで確かめたところ、ほぼほぼ同じです。

 

f:id:masahiroteraoka:20170116212946p:plain

 

f:id:masahiroteraoka:20170116213015p:plain

 

この二つをnukeのpythonのPerformanceTimersというファンクションを用いて、CPUタイムでどれぐらい差があるか確認してみました。

 

用いたコードは、

 

 

で、

 

f:id:masahiroteraoka:20170116213614p:plain

 

となり、

ZDefocus10(max:200) の方がZDefocus11(max:51)よりも2倍近く処理に時間を要したのが確認でしました。

max値もおおきければ、すべてカバー出来るので良い って訳には行かないのが分かります。

 

PerformanceTimersは吉川辰平さんに教わりました。ありがとうございます。便利です:)