Rendering学習日記

日々、3DCGの世界は進歩しています。勉強して理解したことをまとめていきます。RenderMan互換レンダラーやグローバル・イルミネーション。いろんなことに好奇心を持って、面白くなる。目指せShader書き!!
ありがとうございます。

RenderMan、環境マップ生成でわかったこと

原点にカメラをキューブ環境マップを求めてRenderManで計算すると
こんな感じになってしいます。
sphere_origin.jpg
なので、RibFilterではカメラ位置をちょっとずらしてくれる機能があります。設定方法として
Attribute "identifier" "name" ["_EV_n1_s1.0"]
とありますが、オブジェクト座標原点より、視点方向へオブジェクト座標スケール1.0平行移動した点を中心として、ワールド座標にそって6面の環境マップを作ります。
RibFilterで環境マップ生成RIBの数値がどうしてそうなるのという感じで調べてみました。
「実践CGの誘い」によれば、
ワールド空間の原点から物体の中心へ平行移動させる
とあります。

s1.0の部分がちょっとずらすということになりますから、視点と注視点を結ぶ単位ベクトルを求めておいて、物体の位置の分だけ、各6面計算するということなんでしょうか。

たとえば、原点にある球体を
placecam 10 5 -10 0 0 0
から見てると
Ribfilterでは
Translate -0.707107 -0.235688 0.666672
とずらしていて、
結果は
sphere_ref2.jpg
と、赤い軸の部分がちょっとずれています。

python cgkitを使って
単位ベクトルを求めてみました。
>>> from cgkit.all import *
>>> v=vec3(-10,-5,10)
>>> v.normalize()
(-0.666667, -0.333333, 0.666667)

Ribfilterで出していた箇所を
Translate -0.666667 -0.333333 0.666667
に変更したら、
sphere_ref_norm_s512.jpg
赤い軸の部分もずれなくてよくなりました。
ということで、注視点から視点の単位ベクトルを求めて、その終点位置を平行移動の値に当てはめるとうまくいくようです。
ちなみに今回、soft shadowにするのに、
LightSource "shadowpoint" 2 "from" [10 10 -10] "intensity" 250 "width" [2] "float samples" [32]
の部分を
"width" [16] "float samples" [512]
にあげてみました。
ありがとうございます。RenderManまだまだ勉強します。
  • -
  • -

RenderMan shadowspotの影出ない・・・!

RIBの勉強続きます。
RenderManのシャドーマップを計算してから、
intensityをいくらあげても、明るくならない・・・・

出力したRenderMan RIBを眺める。

WorldBegin
LightSource "ambientlight" 2 "intensity" [ 0.39 ] "lightcolor" [ 0.85098
1 1 ]
AttributeBegin
Attribute "identifier" "name" "lgt_LS_n1_i1_a60_d10_z1024"
Declare "blur" "uniform float"

Declare "shadowname" "uniform string"
LightSource "shadowspot" 1 "from" [ -1 1 0 ] "to" [ -0.292893 0.292893
0 ] "intensity" [ 1 ] "coneangle" [ 1.0472 ] "conedeltaangle" [ 0.174533
] "blur" [ 0.0050 ] "shadowname" [ "cone9_F_L1.shad" ]
AttributeEnd
・・・・・・

原因は、shadowspotをAttributeBeginとAttributeEndではさんでいるので、他に影響しなかったのでした。AttributeBeginとAttributeEndを削除した。影出ました。
繰り返しRenderMan勉強ですね。
使いやすいようにRIBの記述をどう工夫するか課題です。
一歩一歩です。ありがとうございます。
  • -
  • -

AutoRIB

RenderManを使っていく中で、シャドーマップ生成は手作業ではとても面倒で敬遠されてしまうところですが、RibFilterを使って自動生成してみました。
既にRibFilterは開発続いていないし、MacOS8.6でしか作動しない。RIBを編集してくれるツールがないかSourceForge探していたら、ありました!!
AutoRIB。
AutoRIBは、シャドーマップや環境マップの生成ができるし、他にできることがあるようで、サンプル見ながら、練習ですね。特定のOSに依存しないようにjavaで作られている。jrManと組み合わせれば、フリーでRenderManここまでできるかなってことにならないでしょうか。

ダウンロードしたバイナリautorib_0.81_bin.gzを解凍します。2回解凍したら、autorib.jarやマニュアルが出てきます。
java -jar autorib.jar test.ist test.rib
とやって
prman test_.rib
とやると、
PixelSamples 4 4とあげましたが、
test.jpg


shadowpointでの計算
shadowpoint.jpg

RibFilterで使っていたRIBも、整理してきちんと出力しました。
cone9.jpg

これは面白いですね。RenderManの勉強になります。
開発者peter quintさんは、AutoRIBの他に、mentalrayのコンバータ、shader開発をされてますね。
ありがとうございます。
  • -
  • -
<< 7/12 >>