本来ならば、C言語を使ってコンパイルしてやりますが、Python良いですね。便利です。
以下はcgkitを使って3Delightで直接レンダリングしました。3DelightのLibフォルダの3Delight.libが働いてくれます。
#min.py
import cgkit.cri
ri = cgkit.cri.loadRI("3Delight")
cgkit.cri.importRINames(ri, globals())
RiBegin(RI_NULL)
RiDisplay("min.tif", RI_FRAMEBUFFER, RI_RGB)
RiProjection(RI_PERSPECTIVE)
RiTranslate(0,0,1.5)
RiWorldBegin()
RiLightSource("ambientlight","intensity",0.4)
RiLightSource("distantlight")
RiSurface("plastic")
RiColor((1,0.2,0.2))
RiSphere(1,-1,1,360)
RiWorldEnd()
RiEnd()
ri = cgkit.cri.loadRI("3Delight")の部分を
オープンソースRenderMan互換レンダラのAqsis Renderer1.6を使用するならば、
ri = cgkit.cri.loadRI("aqsis_ri2rib")
コマンドプロンプトから、
>min.py
と打ち込むと、RIBが生成されて表示されるだけです。
なので、パイプを使います。こんな感じ・・
>min.py |aqsis
prmanの場合も、cgkitを使う場合は、
ri = cgkit.cri.loadRI("libprman")
>min.py |prman
となります。直接レンダリングではないので、
RenderManProServer-14からついているimport prmanを利用します。
# set PYTHONPATH=C:\Python25;C:\Python\Scripts;%RMANTREE%\bin
#min_pr.py
import prman
ri=prman.Ri()
rendertarget="min_pr.rib"
ri.Begin(ri.RENDER)
ri.Imager("background", {"color color":(.2,.4,.6)})
ri.Display("min_pr.tif", "framebuffer", "rgb")
ri.Format(640,480,1)
ri.Projection(ri.PERSPECTIVE, {ri.FOV: 90})
ri.Translate(0,0,1.5)
ri.WorldBegin()
ri.LightSource("distantlight", {ri.HANDLEID: "1"})
ri.LightSource("ambientlight", {ri.HANDLEID: "2", "intensity":[0.4]})
ri.Color((1,0.2,0.2))
ri.Surface("plastic")
ri.Sphere(1,-1,1,360)
ri.WorldEnd()
ri.End()
>min.pyと打ち込む前に
>set PYTHONPATH=C:\Python25;C:\Python\Scripts;%RMANTREE%\bin
でパスを通しておきます。
以下はレンダリング結果。
- -
- -