Rendering学習日記

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

Procedural

PythonプログラムをRenderMan RIBで実行するテスト
RIBの出力:
import sys
args = sys.stdin.readline()
while args:
values = args.split()
pixels = float(values[0])
rad = float(values[1])
print 'TransformBegin'
print 'Sphere %s %s %s 360' % (rad, -rad, rad)
print 'TransformEnd'

sys.stdout.write('\377')
sys.stdout.flush()

# read the next set of inputs
args = sys.stdin.readline()


RunProgram例:
Display "untitled" "framebuffer" "rgb"
Format 400 400 1
Projection "perspective" "fov" 30
ShadingRate 5

LightSource "distantlight" 1 "intensity" 1.5 "from" [0 0 0] "to" [0 0 1]

Translate 0 0 5
Rotate -30 1 0 0
Rotate 20 0 1 0
Scale 1 1 -1

WorldBegin
TransformBegin
Surface "plastic" "Ks" 0.6
Procedural "RunProgram" ["python pytest.py" "1.0"] [-1 1 -1 1 -1 1]
TransformEnd
WorldEnd


ケッソン先生のサイト参考になります。ありがとうございます。
  • -
  • -

Procedural

RIBの出力:

#sp_rect2.py
import sys
import random

while sys.stdin.readline():

dist = 1
x = 0.0
distx = 10.0
disty = 10.0
distz = 10.0
while x <= distx:
z = 0.0
while z <= distz:
y = 0.0
while y <= disty:
r = random.random() * .5
sys.stdout.write("TransformBegin\n")
sys.stdout.write("Translate " + str(x - 5.0) + " " + str(y - 5.0) + " " + str(z - 5.0) + "\n")
sys.stdout.write('Sphere [' + str(r) + ' -1 1 360]\n')
sys.stdout.write("TransformEnd\n")
y += dist
z += dist
x += dist
sys.stdout.write('\377')
sys.stdout.flush()


いろいろと調整してみる。実行RIB:
Display "untitled" "framebuffer" "rgb"
Format 640 480 1
Projection "perspective" "fov" 30
ShadingRate 5

LightSource "distantlight" 1 "intensity" 1.5 "from" [0 0 0] "to" [0 0 1]

Translate 0 0 30
Rotate -30 1 0 0
Rotate 20 0 1 0
Scale 1 1 -1

WorldBegin
TransformBegin
Surface "plastic" "Ks" 0.6
Procedural "RunProgram" ["python sp_rect2.py" ""] [-9.91912 9.91912 -9.91912 9.91912 -9.91912 9.91912]
TransformEnd
WorldEnd

sp_rect2_2.jpg
Python Cgkitも勉強。面白いところです。(2008.8/4記事)
別ブログが転居するので転載しました。ありがとうございます。感謝しています。
  • -
  • -

displacementbound

cgkitへRIBを呼び出す。

r=RIBArchive(
filename = 'butu.rib', pos = (0,0,0) )
r.rib='Color 0.9 0.9 1.0\nSurface "plastic"' #r.rib='Surface "check_ref'

t=RIBArchive(
filename = 'butu.rib', pos = (0.5,0,0) )
t.rib='Color 1 0.9 0.9\nSurface "plastic"'

Plane(
lx = 50, ly = 50, pos = (0,0,0.6), material = GLMaterial(diffuse=(0.8, 0.7, 0.7)) )
Plane(
lx = 50, ly = 50, pos = (0,-0.44,0), rot= mat3().fromEulerXYZ(radians(90), 0, 0), material = GLMaterial(diffuse=(0.8, 0.6, 0.6)) )
s=RIBArchive(
filename = 'butu.rib', pos = (-0.5,0,0) )
s.rib='ShadingRate 0.25\nAttribute "trace" "int displacements" [1]\nAttribute "displacementbound" "float sphere" [0.001] "string cordinatesystem" ["shader"]\nDeclare "Km" "uniform float"\nDisplacement "dented" "Km" 0.05\nSurface "metal" "Ks" [1.5] "roughness" [1.0]\nColor [ 0.8 0.8 0.8 ]'

ありがとうございます。。(2009.8/16記事)
0612.jpg
  • -
  • -
1/12 >>