Rendering学習日記

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

Depth of field

Essential RenderManから、loop.cをPythonで試してみる。
Depth of field、PixelSamples、ShadingRateを調整しています。
ありがとうございます。
loop.jpg
#/* loop.py - Create a line of Spheres */
# Essential RenderMan p.113
import cgkit.cri
from cgkit.cgtypes import *

# Load the RenderMan API.
# Replace the library name with whatever renderer you want to use.
ri = cgkit.cri.loadRI("3delight")
cgkit.cri.importRINames(ri, globals())

RiBegin(RI_NULL)
RiDisplay ("loop.tif",RI_FILE, RI_RGB)
RiFormat(320, 240,1)
RiPixelSamples( 8, 8)
RiShadingRate(0.25)
RiProjection (RI_PERSPECTIVE)
RiDepthOfField(2.8,0.100,2)
RiTranslate(0,0,0.25)
RiRotate(-10,0,1,0)
RiWorldBegin()
RiLightSource("ambientlight","intensity",0.2)
RiLightSource("distantlight", "from",[-1,1,-1])
RiTranslate(0.3,0,0)
for i in range(12):
RiSurface ("plastic")
RiColor((1.0,0.05,0.05))
RiSphere(0.25,-0.25,0.25,360,RI_NULL)
RiTranslate(-0.2,0,0.5)

RiWorldEnd()
RiEnd()

RiLightSource("distantlight", "from",[-4,1,-1])
ディスタントライトの方向を変更してみた。

#RiDepthOfField(2.8,0.1,2)
とコメントアウトすると、くっきりになる。
cgkitと3Delightを使用しました。
  • -
  • -

pythonでパーティクル

Essential RenderManから、point.cをPythonで試してみる。
パーティクルも面白くなりそうです。
記述に関しては、cgkitのritest.pyが参考になります。
ありがとうございます。レンダリングは3Delightです。
以前書いた記事、CAPIでパーティクル
point.jpg
#point.py - Create a simple Particle System
import random, math
import cgkit.cri
from cgkit.cgtypes import *


# Load the RenderMan API.
# Replace the library name with whatever renderer you want to use.
ri = cgkit.cri.loadRI("3delight")
cgkit.cri.importRINames(ri, globals())


COUNT = 1000

def jitter(scale):
val=random.random()*1000
return (val/500-1)*scale

position=[]
red=[1,0,0]
fov=30

#/*Generate Particle Postions*/
for i in range(COUNT):
x=math.sin(i*0.5)*50+jitter(2)
y=math.cos(i*0.1)*50+jitter(2)
z=math.cos(i*0.5)*100+jitter(2)
position.append(vec3(x, y, z))


RiBegin(RI_NULL)
RiDisplay ("point.tif","file","rgb",RI_NULL)
RiFormat(512, 384, -1.0)
RiPixelSamples( 4, 4)
RiShadingRate(0.5)
RiProjection ("perspective","fov",fov,RI_NULL)
RiWorldBegin()
RiTranslate(0,0,300)
RiColor(red)
RiPoints("P",position,RI_NULL)
RiWorldEnd()
RiEnd()
  • -
  • -

pythonでパーティクル その2

イギリスのbournemouth大学のサイトを参考に作成してみた。
レンダリングは3Delightです。
勉強になります。ありがとうございます。
point2.jpg
#point2.py - Create a simple Particle System
import random, math
import cgkit.cri
from cgkit.cgtypes import *
from random import uniform as ru


# Load the RenderMan API.
# Replace the library name with whatever renderer you want to use.
ri = cgkit.cri.loadRI("3delight")
cgkit.cri.importRINames(ri, globals())

points=[]
width=[]
colour=[]
normals=[]
pappend=points.append
wappend=width.append
cappend=colour.append
nappend=normals.append

for i in range(0,1500):
for ix in range(0,3):
cappend(ru(0,1))
pappend(ru(-2,2))
nappend(ru(0,1))
wappend(ru(0.01,0.2))


RiBegin(RI_NULL)
RiImager("background", "color background",(.2,.4,.6))
RiDisplay ("point2.tif","file","rgb",RI_NULL)
RiFormat(512, 384, -1.0)
RiPixelSamples( 4, 4)
RiShadingRate(1)
RiProjection ("perspective","fov",30,RI_NULL)
RiWorldBegin()
RiLightSource("ambientlight","intensity",0.4)
RiLightSource("distantlight", "from",[0,0,1])
RiTranslate(0,0,6)
RiSurface("plastic")
RiPoints("P",points,"Cs",colour,"width",width,"N",normals,RI_NULL)
RiWorldEnd()
RiEnd()


実は、3DelightのPointsは、法線N部分(,"N",normals)が無視されるようだ。図のようにdiskはカメラ方向を見ている。Prmanではdiskの面がいろいろ変わってくる。次の記事を参照してください。
  • -
  • -
<< 13/22 >>