1/3 >>

NVIDIA Gelatoへのコンバート

Ribelato-1.0.0.24.win.zipをダウンロードし,
rib.generator.dllをlibフォルダへ入れて,
NVIDIA Gelatoからレンダリングしてみた。
うまくいかないと思ったら,以下はサポートしていない。

The following RIB calls are not handled:
Blobby, Bound, ClippingPlane, ColorSamples, Cone, Cylinder, DepthOfField,Detail, DetailRange, Disk, Exterior,FrameAspectRatio, FrameBegin, Frame-End, Geometry, Hider, Hyperboloid, Imager, Interior, MakeCubeFaceEnvironment, MakeLatLongEnvironment, MakeShadow, MakeTexture, Paraboloid, PixelVariance,RelativeDetail, ShadingInterpolation (currently always on in Gelato), SolidBegin, SolidEnd, Torus

pygへのコンバートのやり方悩んだ。
何のことはない

>topyg hoge.rib -o hoge.pyg

ありがとうございます。参考記事
http://www.silo3d.com/forum/showthread.php?t=6005&page=6

fragMotionは,ちょっとお休み中。
何とかRenderingできると面白いけど,検討中。
  • -
  • -

NVIDIA Gelatoでの拡張子

>topyg first2.RIB -o first.pyg

ERROR: Input ("first2.RIB") --
Couldn't open generator "RIB.generator.dll" for file type "RIB"
with generator search path ".:C:\Program Files\NVIDIA Corporation\Gelato/lib
"
Error returned: Cannot find appropriate create function in shared library

どうしてだろうと悩んでいたら,拡張子RIBではなくて,ribとしなければ変換してくれないことがわかった。

ありがとうございます。
  • -
  • -

nVidia Gelatoのリンク切れ

Gelatoがダウンロードできなくなりました。
昨今のリアルタイムレンダリングGPUに移行していく感じでしょうか。

さてさて、Windows7が出ましたが、CGソフトはほとんど未対応。
まだまだXPが現役です。

XPをクイックフォーマットしてからVista Buisiness 32bitをインストールして、Gelato(R) 2.2 Release 1をインストールしてみました。

サンプルをレンダリングしようとすると下記のエラー
C:\Program Files\NVIDIA Corporation\Gelato\examples\greencyl>gelato greencyl.pyg


Gelato(R) 2.2 Release 1 winnt (Apr 17 2008 11:09:24)
(c) Copyright 2003-2008 NVIDIA Corporation. All Rights Reserved.
ERROR: Input ("greencyl.pyg") --
Couldn't open generator "pyg.generator.dll" for file type "pyg"
with generator search path "C:\Program Files\NVIDIA Corporation\Gelato/lib"
Error returned: Cannot open DSO ((指定されたモジュールが見つかりません。
))
Rendering interrupted after 0.0156s (0.02 s)

ERROR:
Couldn't open generator "pyg.generator.dll" with generator search path c:\program files\nvidia corporation\gelato/lib

●原因わかりました。

dllの橋渡しをしてくれるmsvcp71.dllとmsvcr71.dllが必要でした。
windows\system32に入れたら動きました。

結局使ってるマシンのvista 32bitでは確認しておりませんが、
XPを再インストールして発見した問題でした。

使ってるマシン、64bitはチップセツトが対応していないことが判明。
よって、インストールできず、買ってきたメモリと64bit Vista余ってます。泣ける。

python cgkitも上記のdllが必要です。

うまく動いてよかったです。
ありがとうございます。
  • -
  • -

最初のNVIDIA Gelatoその1

最初は簡単な球を表示してみましょう。

コマンドプロンプトから、下記のように打つとレンダリングか始まる。
>gelato -iv my_first.pyg


#my_first.pyg
Output ("my_first01.tif", "tiff", "rgb", "camera", "float gain", 1, "float gamma",
1, "string filter", "gaussian", "float[2] filterwidth", (2, 2))
Attribute ("string projection", "perspective")
Attribute ("float fov", 45)
Attribute ("int[2] resolution", (640, 480))
Light ("light1", "ambientlight", "float intensity", 0.1)
Light ("light2", "distantlight", "point from", (1, 1, -1), "point to", (0, 0, 0)
, "float intensity", 1.5)
Translate (0, 0, 10)
World ()
Attribute ("color C", (1, 0, 0))
Shader ("surface", "plastic")
Sphere (3, -3, 3, 360)
Render()

my_first01.jpg
  • -
  • -

最初のNVIDIA Gelatoその2

>gelato -iv -threads 4 my_first2.pyg
クアッドCPUで4スレッド使用してレンダリング速い!!
2つの球体をちょっと移動して配置する。
#my_first2.pyg
Output ("my_first02.tif", "tiff", "rgb", "camera", "float gain", 1, "float gamma", 1, "string filter", "gaussian", "float[2] filterwidth", (2, 2))
Attribute ("string projection", "perspective")
Attribute ("float fov", 45)
Attribute ("int[2] resolution", (640, 480))
Light ("light1", "ambientlight", "float intensity", 0.1)
Light ("light2", "distantlight", "point from", (1, 1, -1), "point to", (0, 0, 0)
, "float intensity", 1.5)
Translate (0, 0, 5)
World ()

PushTransform ()
Attribute ("color C", (1, 0, 0))
#Shader ( "surface", "metal","string envname","reflection" )
Shader ("surface", "plastic")
Translate ( 1.2, 0, 0)
Sphere (1, -1, 1, 360)
PopTransform ()

PushTransform ()
Attribute ("color C", (0, 0, 1))
Shader ("surface", "plastic")
Translate ( -1.2, 0, 0)
Sphere (1, -1, 1, 360)
PopTransform ()

Render()


my_first02.jpg
  • -
  • -

NVIDIA GelatoへのReadArchive

Ribelato-1.0.0.24.win.zipをダウンロードし、
libフォルダにrib.generator.dllを入れておくと、

たとえば、立方体
Patch "bilinear" "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]
Patch "bilinear" "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]
Patch "bilinear" "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]
Patch "bilinear" "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]
Patch "bilinear" "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]
Patch "bilinear" "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]

以上をたとえばBoxGeom.ribという名前で保存しておく。
呼び出し方は、同じディレクトリに置いて、
Input ("BoxGeom.rib")
で良い。

同じく、平面は
Patch "bilinear" "P" [-5.0 -5.0 0.0 5.0 -5.0 0.0 -5.0 5.0 0.0 5.0 5.0 0.0]

以上をたとえばPlaneGeom.ribで保存しておく。
呼び出し方は、同じディレクトリに置いて、
Input("PlaneGeom.rib")
で良い。
  • -
  • -

BOXを表示する。その1

RIBを呼び出す形で、以下のように記述する。
なお、カメラ位置は、placecam.exeを使って算出。10,5,-10から原点を見ている。
#box0.pyg
Output ("box01.tif", "tiff", "rgb", "camera", "float gain", 1, "float gamma",
1, "string filter", "gaussian", "float[2] filterwidth", (2, 2))
Attribute ("string projection", "perspective")
Attribute ("float fov", 20)
Attribute ("int[2] resolution", (640, 480))
#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)
World ()
Light ("light1", "pointlight", "float intensity", 350, "point from", (-10, 10, -10))
Light ("light2", "pointlight", "float intensity", 350, "point from", (10, 10, -10))

PushTransform ()
Attribute ("color C", (1, 1, 0))
Shader ("surface", "plastic")
Translate ( 0, 0.5, 0)
Input ("BoxGeom.rib")
PopTransform ()

Attribute ("color C", (1, 1, 1))
Shader ("surface", "plastic")
Rotate (90.00, 1.00, 0.00, 0.00)
Input("PlaneGeom.rib")
Render()

box0.jpg
  • -
  • -

NVIDIA GelatoでBOXを表示する。その2

同じオブジェクトをたくさん並べてみよう
影も計算するように設定しました。
whileのインデントはきちんと整えること。
#box1.pyg
Output ("box02.tif", "tiff", "rgb", "camera", "float gain", 1, "float gamma",
1, "string filter", "gaussian", "float[2] filterwidth", (2, 2))
Attribute ("string projection", "perspective")
Attribute ("float fov", 20)
Attribute ("int[2] resolution", (640, 480))
#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)

Attribute ("string geometryset", "+shadows")

World ()
Light ("light1", "pointlight", "float intensity", 350, "point from", (-10, 10, -10),"string shadowname", "shadows")
Light ("light2", "pointlight", "float intensity", 350, "point from", (10, 10, -10),"string shadowname", "shadows")

mypos=-3
while mypos<=3:
PushTransform ()
Attribute ("color C", (1, 1, 0))
Shader ("surface", "plastic")
Translate ( 0, 0.5, mypos)
Input ("BoxGeom.rib")
PopTransform ()
mypos+=1.3

Attribute ("color C", (1, 1, 1))
Rotate (90.00, 1.00, 0.00, 0.00)
Shader ("surface", "plastic")
Input("PlaneGeom.rib")
Render()

box1.jpg
  • -
  • -

NVIDIA Gelatoでレンダリング その3

スポットライトをあてる。
shadingqualityを2にする。デフォルトは1。
#sphere3.pyg
Output ("sphere03.tif", "tiff", "rgb", "camera", "float gain", 1, "float gamma",
1, "string filter", "gaussian", "float[2] filterwidth", (2, 2))
Attribute ("float shadingquality",2)
Attribute ("string projection", "perspective")
Attribute ("float fov", 10)
Attribute ("int[2] resolution", (640, 480))
#placecam -20 15 0 0 0 0
Rotate (-36.87, 1.00, 0.00, 0.00)
Rotate (-90.00, 0.00, 1.00, 0.00)
Translate (20.00, -15.00, 0.00)

Attribute ("string geometryset", "+shadows")

World ()
#Light ("light1", "pointlight", "float intensity", 4000, "point from", (-20, 50, -20),"string shadowname", "shadows")

Light ("light1", "spotlight", "string shadowname", "shadows", "point from", (-20, 50, -20), "point to", (0, 0, 0), "float intensity", 6000, "float coneangle", 90,"float shadowblur",0.01,"float shadowsamples", 4,"float shadowbias",0.1)

PushTransform ()
Attribute ("color C", (0, 0, 1))
Shader ("surface", "plastic")
Translate ( 0, 0.5, 0)
Sphere (1, -1, 1, 360)
PopTransform ()

Attribute ("color C", (1, 1, 1))
Shader ("surface", "plastic")
Rotate (90.00, 1.00, 0.00, 0.00)
Input("PlaneGeom.rib")
Render()

sphere3.jpg
  • -
  • -

NVIDIA Gelatoでreflectを試す

全体を大きな球体に入れ、青で囲んでいます。
青玉は、ブラーがかかっています。
#sphere32.pyg
Output ("sphere32.tif", "tiff", "rgb", "camera", "float gain", 1, "float gamma",
1, "string filter", "gaussian", "float[2] filterwidth", (2, 2))
Attribute ("float shadingquality",2)
Attribute ("string projection", "perspective")
Attribute ("float fov", 13)
Attribute ("int[2] resolution", (640, 480))
#placecam -20 15 0 0 0 0
Rotate (-36.87, 1.00, 0.00, 0.00)
Rotate (-90.00, 0.00, 1.00, 0.00)
Translate (20.00, -15.00, 0.00)

Attribute ("string geometryset", "+shadows")
Attribute ("string geometryset", "+reflection")

World ()
PushTransform ()
Attribute ("color C", (0.2, 0.4, 0.75))
Sphere (100, -100, 100, 360)
PopTransform ()

Light ("light1", "spotlight", "string shadowname", "shadows", "point from", (-20, 50, -20), "point to",
(0, 0, 0), "float intensity", 6000, "float coneangle", 90,"float shadowblur",0.01,"float shadowsamples", 4,"float shadowbias",0.1)


PushTransform ()
Attribute ("color C", (1, 1, 0.25)) #yellow
Shader ("surface", "metal", "string envname", "reflection",
"float Kd", 0.05, "float roughness", 0.1, "float Kr", 0.75,
"float Ka", 0.5,
# "float samples", 4, "float blur", 0.05,
"float twosided", 1
)
Translate ( 0, 1, 0)
Sphere (1, -1, 1, 360)
PopTransform ()

PushTransform ()
Attribute ("color C", (0.25, 0.25, 1)) #blue
Shader ("surface", "metal", "string envname", "reflection",
"float Kd", 0.05, "float roughness", 0.1, "float Kr", 0.75,
"float Ka", 0.5,
"float samples", 4, "float blur", 0.1,
"float twosided", 1
)
Translate ( 0, 1, 2.5)
Sphere (1, -1, 1, 360)
PopTransform ()



PushTransform ()
Attribute ("color C", (1, 0.25, 0.25)) #red
Shader ("surface", "metal", "string envname", "reflection",
"float Kd", 0.05, "float roughness", 0.1, "float Kr", 0.75,
"float Ka", 0.5,
# "float samples", 4, "float blur", 0.1,
"float twosided", 1
)
Translate ( 0, 1, -2.5)
Sphere (1, -1, 1, 360)
PopTransform ()

Attribute ("color C", (1, 1, 1))
Shader ("surface", "plastic")
Rotate (90.00, 1.00, 0.00, 0.00)
Input("PlaneGeom.rib")
Render()

sphere4.jpg
  • -
  • -

1/3 >>