1/1

RibFilter その4 環境マップ生成

RMRサイトのサンプルを参考にRibFilterで環境マップとポイントライト3つ分のシャドーマップを出力してみた。
envr01.jpg

元RIBは以下の通りに設定

#env01.rib
Display "envr_kyu.tiff" "file" "rgb"
Projection "perspective" "fov" [25 ]
Rotate 24.094801 1 0 0
Rotate -26.5651 0 1 0
Translate 2.5 2.5 5
WorldBegin
LightSource "ambientlight" 1 "intensity" [0.05 ]
LightSource "pointlight" 2 "intensity" [40 ] "from" [-4 -5 -7]
LightSource "pointlight" 3 "intensity" [40 ] "from" [3.5 6.5 -6]
LightSource "pointlight" 4 "intensity" [10 ] "from" [4 7 6]
AttributeBegin
Attribute "identifier" "name" [ "_EV_n1" ]
Surface "shinymetal" "string texturename" ["env"]
Translate 0 0 0
Sphere 1 -1 1 360
AttributeEnd
Surface "plastic"
TransformBegin
Scale 20 20 20
Color [1 0 0]
Polygon "P" [-0.5 -0.5 0.5 0.5 -0.5 0.5 0.5 -0.5 -0.5 -0.5 -0.5 -0.5 ]
Color [0 0 1]
Polygon "P" [-0.5 -0.5 0.5 -0.5 -0.5 -0.5 -0.5 0.5 -0.5 -0.5 0.5 0.5 ]
Color [0 1 0]
Polygon "P" [0.5 0.5 -0.5 0.5 0.5 0.5 -0.5 0.5 0.5 -0.5 0.5 -0.5 ]
Color [1 0 1]
Polygon "P" [0.5 0.5 -0.5 0.5 -0.5 -0.5 0.5 -0.5 0.5 0.5 0.5 0.5 ]
Color [1 1 0]
Polygon "P" [0.5 -0.5 0.5 -0.5 -0.5 0.5 -0.5 0.5 0.5 0.5 0.5 0.5 ]
Color [0.6 0.6 0.6]
Polygon "P" [-0.5 0.5 -0.5 -0.5 -0.5 -0.5 0.5 -0.5 -0.5 0.5 0.5 -0.5 ]
TransformEnd
WorldEnd

球体に周囲の環境を映り込ませる。
pointlightは、shadowpointに変換された。
シャドーマップ生成RIBが3つ
env01.rib.sdwRib.2
env01.rib.sdwRib.3
env01.rib.sdwRib.4

T02001 {ERROR} Can't open texture "env" [ Object: _EV_n1 Shader: shinymetal] (System Error: No such file or directory)
と出るが、無視してシャドーマップ作成。

次に環境マップ生成、シャドーマップを利用して6面作成する。
影も映ります。こんな感じ・・・
FrameBegin 1
#env01.rib

Display "env01.rib.envImg.1px" "file" "rgb"
Format 128 128 1
ShadingRate 1.000000
Option "limits" "zthreshold" [0.5 0.5 0.5]
Option "shadow" "bias0" [0.15] "bias1" [0.2]
Option "limits" "texturememory" [4096]
Projection "perspective" "fov" [92]
Rotate -90 0 1 0
Translate 0 0 0
Translate -0 -0 -0
WorldBegin
LightSource "ambientlight" 1 "intensity" [0.05 ]
LightSource "shadowpoint" 2 "intensity" [40 ] "from" [-4 -5 -7] "width" [2] "float samples" [32] "string sfpx" ["env01.rib.sdwMap.2px"] "string sfpy" ["env01.rib.sdwMap.2py"] "string sfpz" ["env01.rib.sdwMap.2pz"] "string sfnx" ["env01.rib.sdwMap.2nx"] "string sfny" ["env01.rib.sdwMap.2ny"] "string sfnz" ["env01.rib.sdwMap.2nz"]
LightSource "shadowpoint" 3 "intensity" [40 ] "from" [3.5 6.5 -6] "width" [2] "float samples" [32] "string sfpx" ["env01.rib.sdwMap.3px"] "string sfpy" ["env01.rib.sdwMap.3py"] "string sfpz" ["env01.rib.sdwMap.3pz"] "string sfnx" ["env01.rib.sdwMap.3nx"] "string sfny" ["env01.rib.sdwMap.3ny"] "string sfnz" ["env01.rib.sdwMap.3nz"]
LightSource "shadowpoint" 4 "intensity" [10 ] "from" [4 7 6] "width" [2] "float samples" [32] "string sfpx" ["env01.rib.sdwMap.4px"] "string sfpy" ["env01.rib.sdwMap.4py"] "string sfpz" ["env01.rib.sdwMap.4pz"] "string sfnx" ["env01.rib.sdwMap.4nx"] "string sfny" ["env01.rib.sdwMap.4ny"] "string sfnz" ["env01.rib.sdwMap.4nz"]
AttributeBegin
Attribute "identifier" "name" [ "_EV_n1" ]
Surface "shinymetal" "string texturename" ["env"]
Translate 0 0 0
AttributeEnd
Surface "plastic"
TransformBegin
Scale 20 20 20
Color [1 0 0]
Polygon "P" [-0.5 -0.5 0.5 0.5 -0.5 0.5 0.5 -0.5 -0.5 -0.5 -0.5 -0.5 ]
Color [0 0 1]
Polygon "P" [-0.5 -0.5 0.5 -0.5 -0.5 -0.5 -0.5 0.5 -0.5 -0.5 0.5 0.5 ]
Color [0 1 0]
Polygon "P" [0.5 0.5 -0.5 0.5 0.5 0.5 -0.5 0.5 0.5 -0.5 0.5 -0.5 ]
Color [1 0 1]
Polygon "P" [0.5 0.5 -0.5 0.5 -0.5 -0.5 0.5 -0.5 0.5 0.5 0.5 0.5 ]
Color [1 1 0]
Polygon "P" [0.5 -0.5 0.5 -0.5 -0.5 0.5 -0.5 0.5 0.5 0.5 0.5 0.5 ]
Color [0.6 0.6 0.6]
Polygon "P" [-0.5 0.5 -0.5 -0.5 -0.5 -0.5 0.5 -0.5 -0.5 0.5 0.5 -0.5 ]
TransformEnd
WorldEnd
FrameEnd
・・・・・

最後にレンダリング
env01.rib.scnRib
コメントアウトとサイズを加える。
#Option "limits" "zthreshold" [0.5 0.5 0.5]
#Option "shadow" "bias0" [0.15] "bias1" [0.2]
#Option "limits" "texturememory" [4096]
Format 640 480 1
Display "envr01.tiff" "file" "rgb"

ポイントライトの影が出たのはうれしい。なかなか面白いところ、ほかにも実験してみます。
ありがとうございます。
  • -
  • -

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
  • -
  • -

1/1