Rendering学習日記

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

Mac OS XにjrManをインストール

RenderMan互換レンダラのjrManを
ユーザrman下にjrman-0_4フォルダをつくる。
ターミナルでvimを使わないでエディタmiで
.bash_profileを編集する。
以下を書き込む。
export PATH=$PATH:/Users/rman/jrman-0_4/bin
export JRMAN_HOME=/Users/rman/jrman-0_4

設定しなおす。
>:~ rman$ source .bash_profile
>:~ rman$ pwd
/Users/rman
>:~ rman$ cd jrman-0_4/
>:jrman-0_4 rman$ cd model/

サンプルをレンダリングする。
>:model rman$ jrman shadowTest.rib
-bash: /Users/rman/jrman-0_4/bin/jrman: Permission denied
>:model rman$ cd /
>:/ rman$ cd Users/rman/jrman-0_4/bin/
>:bin rman$ ls
jrman jrmangui mktxr
jrman.bat jrmangui.bat mktxr.bat

起動のjrManのパーミッションを確認
>:bin rman$ ls -l jrman
-rw-r--r--@ 1 rman staff 179 2 20 2007 jrman

実行できるように変更する。
>:bin rman$ chmod +x jrman
>:bin rman$ ls -l jrman
-rwxr-xr-x@ 1 rman staff 179 2 20 2007 jrman
>:bin rman$ cd ..
>:jrman-0_4 rman$ cd model/

再びレンダリングしてみる。
>:model rman$ jrman shadowTest.rib
shadowTest.rib time: 0h0m20s
Total time: 0h0m20s
できました。
Bootcampのvistaより速度が1秒速い。
ありがとうございます。
RenderMan | - | -

Mac OS X対応 3Dソフト Pixels3D

12年前に国内でも、使っている人が多かったMac 3DソフトウェアPixels3Dは、レンダリング部分はTempestという、REYESをもとに開発されている。RenderMan規格に準拠しているということで、RIBもレンダリングしてくれる。
デモ版を使っていたが、約4000円で購入した。たぶんPoserのレンダラとして使われていたのだと思うが、ここ4年、開発は止まっているようだ、現在はPixels:3d5.6となっている。
RIB出力できるから他のレンダラでも遊べるでしょう。3Delightと組み合わせている記事をみたことがあった。
pixels3d_first.jpg

App Storeで検索したがありませんでした。
http://www.pixels.net/products/
ただいま、ちょっとトップページがおかしくなっているが、ブラウザキャッシュから入って、Storeでライセンスキーを購入し、ダウンロードしたデモ版のKeyXを捨ててキーを登録し直すとインストール完了しました。
ライセンスキーはブラウザに表示されるだけで、メールで送られてこないので、要注意、ページをプリントするかPDFにして控えておくとよいです。
RenderMan | - | -

Shrimp

気になる。インストール方法検討・・・
凄いかも。
http://sourceforge.net/apps/mediawiki/shrimp/index.php?title=Main_Page

ありがとうございます。勉強します。
RenderMan | - | -

autoRIBのダウンロード先

RenderManのシャドーマップや反射・環境マップを自動生成してくれ、サブディビジョンサーフィスも変換できる便利ツールです。
javaが必要です。JDKをインストールしておく必要があります。
また、ダウンロードしてLhaplusで解凍しましたが、2回解凍しないとファイルが出てきませんでした。

http://sourceforge.net/projects/autorib/


http://sourceforge.jp/projects/sfnet_autorib/
RenderMan | - | -

jrManとAutoRIBでRenderManシャドーマップ生成

RenderManの勉強続けています。jrManを使って付属のソースGenCubes.javaから、立方体を生成する。
平面を設けて、distantlightを入れる。シャドーマップ生成はAutoRIBを利用した。
cube_auto.jpg
元ファイルは以下の通り、


Display "cubesauto2.tif" "framebuffer" "rgb"

PixelFilter "gaussian" 2 2
Format 800 600 1
PixelSamples 4 4
Exposure 1 2.2
Clipping 10 150
Projection "perspective" "fov" 30
Translate 0 0 75
Rotate -33 1 0 0
Rotate 23 0 1 0
WorldBegin
Declare "shadowmap" "string"
Declare "bias" "uniform float"
Declare "samples" "uniform float"
Declare "blur" "uniform float"
LightSource "distantlight" 1 "intensity" [1.0]
"from" [100 100 100] "to" [0 0 0]
"shadowmap" [""] "bias" [.1]
"samples" [128] "blur" [8]
LightSource "ambientlight" 2 "intensity" [.2]
#LightSource "distantlight" 3 "intensity" .2 "from" [1 0 -1] "to" [0 0 0]
ShadingRate 1
ReadArchive "cubeData10.rib"

AttributeBegin
Attribute "identifier" "name" ["floor"]
Surface "plastic"
Color [1 1 0.7]
Polygon "P" [-100 4 -100 -100 4 100 100 4 100 100 4 -100]
"st" [0 0 0 1 1 1 1 0]
AttributeEnd

WorldEnd



AutoRIBの自動マップ生成のShadowDistAutoを使う。Instruction Fileは以下の通り


Option "zdriver" "file"
Lights
{
ForShaders "light" "distantlight"
{
Omit "floor"
MapFormat 1024 1024
RenameShader "light" "shadowdistantlight"
ShadowDistAuto "shadowmap" 1.1
}
}



AutoRIBで生成したRenderMan RIBは、jrManでそのままレンダリングしようとするとエラーが出てしまう。jitterがつかえない。
#Hider "hidden" "jitter" [0] "depthfilter" "midpoint"コメントアウトする。
Display "cubesauto2_F_L1.z" "file" "z"を
Display "cubesauto2_F_L1.shad" "file" "z"と変更する。
jrManではMakeShadowを使わなくてもよいので、
#MakeShadow "cubesauto2_F_L1.z" "cubesauto2_F_L1.shad"とコメントアウトした。
jrManでレンダリングすると以下のように影の向きも変更できました。
ありがとうございます。
cube_auto2.jpg
RenderMan | - | -

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を左手系座標で出したので
下の記事と反対の足が上がっているのがわかります。
課題はありますが、実験して納得するのが一番ですね。
ありがとうございます。
RenderMan | - | -

AutoRIB その9 RenderMan RIB調整

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

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

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

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

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

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が働かないようです。
ひとつひとつ確認ですね。ありがとうございます。
RenderMan | - | -

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
いろいろとやってみると面白いですね。レイトレーシングを使わなくてもここまできれいにできるとうれしいです。
何より計算速いです。ありがとうございます。
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
RenderMan | - | -
1/4 >>