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"
}
}
いろいろとできてくると楽しくなります。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まだまだ勉強です。ありがとうございます。
AutoRIB その7
AutoRIBには、RenderManの技術の一つサブディビジョンサーフィスのSubdivisionMesh "catmull-clark"に変換してくれる機能がある。
Instruction Fileに一言
Objects {
ForNames "uma" {
ToSubdivision
}
}
と、記入しておけばよい。
基本Polygon "P"は変換できない。PointsPolygonに変換しておかなければならない。今回は、Meatasequoia PythonでRIB出力変換するツールで出してみた。
PointsPolygonを含み、各モデルにシェーダを割り当て、distantlightを入れておく、普通にprmanでレンダリングするとこんな感じになる。
次に以下のファイルを使って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をつけた。
いろいろとやってみると面白いですね。レイトレーシングを使わなくてもここまできれいにできるとうれしいです。
何より計算速いです。ありがとうございます。
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
}
}
これで変換できました。
さらに、出力したRenderMan RIBをサブディビジョンサーフィスに変換します。
Objects {
ForNames "uma" {
ToSubdivision
}
}
メタセコイアから出力したRenderMan RIBを左手系座標で出したので
下の記事と反対の足が上がっているのがわかります。
課題はありますが、実験して納得するのが一番ですね。
ありがとうございます。
1/1