<< 2/4 >>

RibFilter その5 環境マップ生成2

RenderManでレイトレーシングを使わない環境マップとシャドーマップを試してみた。RibFilterを使って影と周囲を映す環境マップを作成した。
元になるRIBの記述で注意点としてpointlightの記述はWorldBeginの外に書いてあるとRibfilterはシャドーマップRIBを出してくれない。
WorldBeginの内側、すぐ下に記述した。
今回はBMRTのサンプルSkylight.ribをちょっといじってみた。
なかなか面白いですね。ありがとうございます。
fakesky4.jpg

##RenderMan RIB-Structure 1.0
version 3.03
#Option "limits" "zthreshold" [0.5 0.5 0.5]
#Option "shadow" "bias0" [0.15] "bias1" [0.2]
#Option "limits" "texturememory" [4096]
#
# fakesky04.rib

PixelSamples 3 3
Projection "perspective" "fov" [18]
Format 480 360 1
Display "fakesky4.tif" "file" "rgba"

##CameraOrientation 2 20 5 0 0 1.5 -0.0170699 -0.170699 0.985175
ConcatTransform [0.995037 -0.0170699 -0.0980286 0 -0.0995037 -0.170699 -0.980286 0 1.86265e-09 0.985175 -0.17155 0 0 0 0 1]
Translate -2 -20 -5

WorldBegin
LightSource "ambientlight" 1 "intensity" [0.2 ]
LightSource "shadowpoint" 2 "intensity" [700] "from" [2 4.5 20] "width" [2] "float samples" [32] "string sfpx" ["fakesky4.rib.sdwMap.2px"] "string sfpy" ["fakesky4.rib.sdwMap.2py"] "string sfpz" ["fakesky4.rib.sdwMap.2pz"] "string sfnx" ["fakesky4.rib.sdwMap.2nx"] "string sfny" ["fakesky4.rib.sdwMap.2ny"] "string sfnz" ["fakesky4.rib.sdwMap.2nz"]
AttributeBegin
Color [.2773 .2855 .6679]
Surface "DPCloudplane"
Sphere 50 -50 50 360
AttributeEnd

AttributeBegin
Scale 10 10 10
Translate 0 0 -0.25
Declare "Kr" "float"
Surface "LGAntialiasedChecks" "color color1" [0.9 0.5 0.5]
Patch "bilinear" "P" [-1 -1 .005 1 -1 .005 -1 1 .005 1 1 .005]
AttributeEnd

AttributeBegin
Attribute "displacementbound" "float sphere" [0.5]
Displacement "cloth" "float freq" [12.0] "float depth" [0.6]
Surface "plastic"
Color [ .75 .75 .75 ]
Translate -2 -1.5 0
Rotate 20 0 0 1
Sphere 2 -2 2 360
AttributeEnd

AttributeBegin
Attribute "identifier" "name" [ "_EV_n1" ]
Color [0.9 0.7 0.4]
Surface "shinymetal" "Kr" [0.7] "float roughness" [0.1] "string texturename" ["fakesky4.rib.envMap.1"]
Translate 2 -3 0
Rotate 60 0 0 1
Sphere 2 -2 2 360
AttributeEnd

WorldEnd
  • -
  • -

RibFilter その6 環境マップ生成3

RenderManでの反射マップ作成方法がわかってきた。RibFilter便利ですが、エディタ使って、バッチ処理できるようにReadArchiveを使う。
ReadArchive "sphere_ref.rib.sdwRib.2"

ReadArchive "sphere_ref.rib.sdwRib.3"

ReadArchive "sphere_ref.rib.envRib.1"

ReadArchive "sphere_ref.rib.envRib.2"

ReadArchive "sphere_ref.rib.scnRib"

をall.ribにして、
prman all.ribでレンダリング。
さすがに、シャドーマップ4096 4096としたら、
時間かかります。が、きれいに出ますね。
sphere_ref.jpg
球面の反射がうまくできないところです。オフセットするのかな・・・
RenderManさらにベスト尽くします。
ありがとうございます。
  • -
  • -

RibFilter その7 環境マップ生成4

sphere_ref3.jpg
できました!!段取りをきちんとすれば、RenderManはレイトレーシングより速いかもしれません。
Attribute "identifier" "name" ["_EV_n1_s1.0"]
環境マップの中心をオブジェクト座標中心から、ずらしてみました。
オブジェクト座標原点より、視点方向へオブジェクト座標スケールで1.0
移動した点を中心とする、ワールド座標にそった環境マップを生成しています。
RenderMan奥が深いですね。
最初の環境マップ生成時のintensityが1.0だったので明るくない環境マップになってたのもわかりました。
いかに段取りが大切かよくわかります。
RenderMan 感謝しています。ありがとうございます。
  • -
  • -

RibFilter その8 環境マップ生成時の明るさ

RenderManでの環境マップ生成時のintensityが大切ですね。
intensity 1.0
sphere_ref_before.jpg

intensity 250
sphere_ref2.jpg

前の記事と比べて球体が青くないのは、環境マップ生成時の周囲を包んでいる球体が
AttributeBegin
Attribute "identifier" "name" ["dome"]
Color [0.2773 0.2855 0.6679]
Opacity [1 1 1]
Surface "matte"
Sphere 500 -500 500 360
AttributeEnd
と大きいからですね
いかに、段取りが大切かよーく、わかります。
Sphere 40 -40 40 360
がベストなところでRibfilterやる前の元ファイルを調整しておくべきです。

shadowpointのシャドーマップ生成は、MacOS8.6で動くRibfilterを利用しました。WindowsにRIBを持っていき、RenderManでレンダリングしています。面白くなってきました。
ありがとうございます。
  • -
  • -

RibFilter その9 環境マップ生成用元RIB

いろいろと試してみてわかると楽しい。RenderMan面白い。
Macで利用するRibfilter、いったりきたりが面倒になってきました。似たようなものがほしいですね。

#sphere_ref.rib
Display "sphere_ref.tif" "framebuffer" "rgb"
Projection "perspective" "fov" 20
Format 320 240 1
Imager "background" "color background" [0.2 0.4 0.6]
# placecam 10 5 -10 0 0 0
Rotate -19.47 1.00 0.00 0.00
Rotate 45.00 0.00 1.00 0.00
Translate -10.00 -5.00 10.00

WorldBegin
LightSource "ambientlight" 1 "intensity" 0.2
LightSource "pointlight" 2 "from" [ 10 10 -10] "intensity" 250
LightSource "pointlight" 3 "from" [ -10 10 -10] "intensity" 250

AttributeBegin
Attribute "identifier" "name" ["dome"]
Color [0.2773 0.2855 0.6679]
Opacity [1 1 1]
Surface "matte"
Sphere 40 -40 40 360
AttributeEnd

AttributeBegin
Attribute "identifier" "name" ["_EV_n1_s1.0"]
Translate 0 0 0
Color 0.921875 0.796875 0.91796875
Surface "shinymetal" "string texturename" [""]
Sphere 1 -1 1 360
AttributeEnd

AttributeBegin
Translate 3 0 0
Color 1 1 0
Surface "plastic"
Sphere 0.8 -1 1 360
AttributeEnd

AttributeBegin
Attribute "identifier" "name" ["_EV_n2_s1.0"]
Translate 0 0 3
Color [0.9 0.7 0.4]
Surface "shinymetal" "string texturename" [""]
Sphere 1 -1 1 360
AttributeEnd

AttributeBegin
Translate 0 0 0
Surface "plastic"

Color 0 0 1 #blue
Cylinder 0.1 -100 100 360 # Z axis

Color 0 1 0 #green
Rotate 90 1 0 0
Cylinder 0.1 -100 100 360 # Y axis

Color 1 0 0 #red
Rotate 90 0 1 0
Cylinder 0.1 -100 100 360 # X axis
AttributeEnd

AttributeBegin
Color 1 1 1
Translate 0 -1.5 0
Scale 5 5 5
Surface "matte"
Polygon "P" [-4 0 -4 -4 0 4 4 0 4 4 0 -4] "st" [0 0 0 1 1 1 1 0]
AttributeEnd
WorldEnd

RenderMan 感謝しています。
  • -
  • -

RibFilter その10 環境マップ生成

RenderMan練習としてPOV-Rayのサンプルを参考にしてみた。
元になるRIBファイルをつくる。Macの改行で保存する。
sphere_env8.jpg
MacOS8.6にファイルを送り、RibFilterを使って環境マップ、シャドーマップを生成する。
Windowsで、バッチファイルをつくり、RenderMan prmanでレンダリングする。
sphere_env8p.jpg
何とかできました。ありがとうございます。
感謝しています。RenderMan
  • -
  • -

RibFilter その11 環境マップ・シャドーマップ生成

RenderMan練習を続けます。POV-RAYのサンプルをサイトからひっぱってきてRIBに書きかえてみました。まずは環境マップ、影なしで、どのようになるか検討してみます。数値を調整していきます。
sphere_env9.jpg
続いて、Macへ持っていきRibFilterで環境マップとシャドーマップ生成し、WindowsでRenderMan prmanを使ってレンダリングしました。
手際よくなってくるとサクサクできますね。
ありがとうございます。感謝しています。RenderMan
sphere_env9p.jpg
  • -
  • -

RibFilter その12 ポリゴンスムージング

RibFilterを使ってポリゴンスムージングやってみました。MetasequoiaでRenderManのRIBを出力したものをMacOS8.6に持っていき、RibFilterでスムージングしました。PolygonをPointsGeneralPolygons
に変換します。
方法は、
AttributeBegin
Attribute "identifier" "name" [ "_GS" ]
Color [ 1.000 1.000 1.000 ]
Polygon "P" [ 2.589 98.745 -12.513 -17.075 94.546 -26.777 2.568 93.675 -34.382 ]
・・・・
と、"_GS"を入れておくと、

AttributeBegin
Attribute "identifier" "name" [ "_GS" ]
Color [ 1.000 1.000 1.000 ]
PointsGeneralPolygons
[
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

・・・・・・・・

と変換してくれます。

変換前
kyu.jpg


スムージング
distantlightは自動的にshadowdistantになります。
kyuGS.jpg

一歩一歩、ありがとうございます。
感謝しています。RenderMan
  • -
  • -

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の記述をどう工夫するか課題です。
一歩一歩です。ありがとうございます。
  • -
  • -

<< 2/4 >>