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記事)
別ブログが転居するので転載しました。ありがとうございます。感謝しています。
  • -
  • -

RibFilter II

1995年に開発され、ニフティ、MACグラフィックスフォーラム、(コーシングラフィックス)で公開されたフリーウェアですが、使ってみました。MacOS8.6でやってみました。
編集したいRIBファイル中の Attribute をオブジェクトとして認識します。
オブジェクトに対するオプションの付加は、その Attribute の Identfier に対して識別子をつけることによって行い、identifer name とidentifer shadinggroup を区別せず、どちらも等価なオブジェクトとして扱います。

たとえば、スポットライト(pixarのshadowspot)として配置したいconeは、次のように定義して書き込んでおきます。
AttributeBegin
Attribute "identifier" "name" [ "lgt_LS_n1_i30_a40_d10_z1024" ]
TransformBegin
Translate -1 1 0
Rotate -45 0 0 1
Rotate 90 0 1 0
Cone 0.4 0.125 360
TransformEnd
AttributeEnd
cone8.jpg
_LS_n1_i30_a20_z1024 とすると、光源識別番号1、光源強度 30、  光源アングル 40(20x2)、シャドウマップサイズ 1024x1024 のスポット光源を生成 します。
_d10は光源アングルのデルタ値を10にします。(Deg. で指定、_LS のみ有効)

RibFiliterにRIBを読み込むとシャドーマップ生成RIBとメインRIBを出力してくれます。

■シャドーマップ生成RIB
Display "cone.rib.sdwMap.n1" "shadow" "z"
Format 1024 1024 1
ShadingRate 1.000000
Option "limits" "texturememory" [4096]
Projection "perspective" "fov" [120]
# applying multiple transformations

Rotate -45 1 0 0
Rotate -90 0 1 0
Translate 1 -1 -0
WorldBegin
・・・・・
・・・・・

■メインRIB
Option "limits" "zthreshold" [5 5 5]
#Option "shadow" "bias0" [30] "bias1" [10]
Option "limits" "texturememory" [4096]
Shutter 1 2
Display "cone8.tif" "framebuffer" "rgb"
Projection "perspective" "fov" 40
Format 320 240 1
Translate 0 0 3
Rotate -40 1 0 0
Rotate -20 0 1 0
WorldBegin

LightSource "shadowspot" 1 "from" [-1 1 0] "to" [-0.292893 0.292893 6.12323e-17] "lightcolor" [1 1 1] "intensity" [2] "coneangle" [1.0472] "conedeltaangle" [0.174533] "width" [2] "float samples" [32] "string shadowname" ["cone.rib.sdwMap.n1"]
LightSource "ambientlight" 2 "intensity" [0.2]
・・・・・
・・・・・
最初、影が表示されないなと試行錯誤していたら、原因は以下をコメントアウトしたら
動きました。
#Option "shadow" "bias0" [30] "bias1" [10]
cone8air.jpg
Airでも動かしてみました。うまくうごかないなとやっていましたが、
#Option "limits" "zthreshold" [5 5 5]
#Option "shadow" "bias0" [30] "bias1" [10]
をコメントアウトするのと、改行コードをMacからWindowsにしておかなければなりません。

いろいろと実験してみて、勉強ですね。ありがとうございます。
Ribfilter感謝しています。
Ribfilterはこちらにあります。 MacOS8.6で動きました。
  • -
  • -
<< 28/50 >>