1/1

AutoRIB その5

AutoRIBは、RenderManのRIBファイルに、環境マップとシャドーマップを自動生成してくれる便利ツールです。

RibFilterでやってみたRIBも、さくっと変換してくれました。
以下はInstruction File

Option "envmapfov" 92

GlobalRIB //this RIB will be added before the first frame
{
PixelSamples 4 4
ShadingRate 0.25
}

Objects
{
ForNames "_EV_n1_s1.0"
{
MapFormat 512 512
MapSamples 4 4
MapFilter "gaussian" 2 2
EnvMap [0 1 0 ] "surface" "texturename"
}
}

Lights
{
ForShaders "light" "pointlight"
{
MapFormat 1024 1024
RenameShader "light" "shadowpoint"
AppendParam "light" "width" [16] "uniform float"
AppendParam "light" "samples" [256] "uniform float"
ShadowPoint "sfnx" "sfpx" "sfny" "sfpy" "sfnz" "sfpz"
}
}


sphere_env8.jpg
いろいろとできてくると楽しくなります。RenderManありがとうございます。
  • -
  • -

AutoRIB その6

RenderManにおいて、カメラ位置視点
placecam 0 2 -10 0 1 0から見た反射マップを生成するために
まず、cgkitで計算
>>> from cgkit.all import *
>>> v=vec3(0,2,-10)-vec3(0,1,0)
>>> v
(0, 1, -10)
>>> v.normalize()
(0, 0.0995037, -0.995037)
>>> _+vec3(0,1,0)
(0, 1.0995, -0.995037)

AutoRIBのInstruction Fileを書き換え、ちょっとずらしてみた。
EnvMap [0 1.0995 -0.995037 ] "surface" "texturename"

前回の記事の画像よりはきちんと映り込んでいます。
RenderManまだまだ勉強です。ありがとうございます。
sphere_env82.jpg
  • -
  • -

AutoRIB その7

AutoRIBには、RenderManの技術の一つサブディビジョンサーフィスのSubdivisionMesh "catmull-clark"に変換してくれる機能がある。
Instruction Fileに一言
Objects {
ForNames "uma" {
ToSubdivision
}
}
と、記入しておけばよい。

基本Polygon "P"は変換できない。PointsPolygonに変換しておかなければならない。今回は、Meatasequoia PythonでRIB出力変換するツールで出してみた。

PointsPolygonを含み、各モデルにシェーダを割り当て、distantlightを入れておく、普通にprmanでレンダリングするとこんな感じになる。
uma_scn0.jpg
次に以下のファイルを使ってAutoRIBで変換する。
>
//Tests ToSubdivision instruction
Objects {
ForNames "uma" {
ToSubdivision
}
}

Objects
{
ForNames "uma"
{
//Omit "mirror"
MapSamples 3 3
MapFilter "gaussian" 2 2
MapFormat 256 256
EnvMapAuto "surface" "texturename"
}
}


Lights
{
ForShaders "light" "distantlight"
{
MapFormat 1024 1024
RenameShader "light" "shadowdistant"
//AppendParam "light" "blur" [ 0.005 ] "uniform float" //introduce a bit of softness
ShadowDistAuto "shadowname" 1
}
}



RenderManでレンダリングした。空の代わりに球体をつくりTexturing & Moderingで有名なシェーダDPCloudplaneをつけた。
uma_scn.jpg
いろいろとやってみると面白いですね。レイトレーシングを使わなくてもここまできれいにできるとうれしいです。
何より計算速いです。ありがとうございます。
  • -
  • -

AutoRIB その8

shadowdistantを含む、RenderMan RIB出力する際、
AutoRIBエラー表示でわかったこと。
java.lang.NullPointerException
java.lang.NullPointerException
at org.pqt.autorib.instr.InstrShadowDistAuto.process(InstrShadowDistAuto.java:81)
at org.pqt.autorib.instr.InstrBlockRequest.process(InstrBlockRequest.java:92)
at org.pqt.autorib.instr.InstrBlockRequest.process(InstrBlockRequest.java:92)
at org.pqt.autorib.instr.InstrWReader.process(InstrWReader.java:710)
at org.pqt.autorib.ProcessRIB.doProcessRIB(ProcessRIB.java:365)
at org.pqt.autorib.AutoRIBmain.main(AutoRIBmain.java:351)

RenderMan RIBに
Format 640 480 1
を記述していないと自動的にShadowDistAutoが働かないようです。
ひとつひとつ確認ですね。ありがとうございます。
  • -
  • -

AutoRIB その9 RenderMan RIB調整

RenderManのRIBファイルをAutoRIBで読み込んでエラーが出ないように
RIBファイルを調整しておく必要がある。

Colorは [1 1 1]と[ ]をつけておくこと。

"uniform float fov"は"fov"にすること。

Geometry "teapot"は使えないので、
ReadArchive "teapot.rib"を使います。

Formatは書き込んでおくこと。
  • -
  • -

MetasequoiaからRenderMan RIB出力

Metasequoiaをシェアウェア登録するとRenderMan RIBが出力できるが
デフォルトでは、カメラ位置は原点から1000離れたところ
distantlightは固定。
材質名がコメントアウトされて出力されたPolygonに割り当てられている。
エディタ使って、Surfaceシェーダを加えれば良い。
カメラ位置もpython scriptでなんとかなる。

問題はPolygonが三角形または四角形でバラバラになっているところである。これはAutoRIBで解決できた。
Polygon "P" [  ]
これをPointsPolygons [ ]に変換するInstructionが、
Objects {
ForNames "uma" {
CombinePolys
}
}
これで変換できました。
uma_poly.jpg
さらに、出力したRenderMan RIBをサブディビジョンサーフィスに変換します。

Objects {
ForNames "uma" {
ToSubdivision
}
}

uma_poly2.jpg

メタセコイアから出力したRenderMan RIBを左手系座標で出したので
下の記事と反対の足が上がっているのがわかります。
課題はありますが、実験して納得するのが一番ですね。
ありがとうございます。
  • -
  • -

1/1