http://structuresynth.sourceforge.net/
市松模様づくり参考に試してみました。
http://kyle-in-jp.blogspot.com/2009/07/structure-synth_10.html
RenderMan RIBも出力できるようにテンプレート調整してみた。
こちらの記事も参考にしてみた。
http://shin-ishimaru.cocolog-nifty.com/blog/2009/03/structure-syn-1.html
地面のレンダリングがずれてしまうので、RIBのTransformをいじってみた。
TransformBegin
Translate 0 -1 0
Scale 300 1 300
#ConcatTransform[ 300 0 0 0 0 1 0 0 0 0 300 0 -149.5 -1 -149.5 1]
ObjectInstance "box"
TransformEnd
RenderMan24.4でレンダリングしました。
ライトは4つ。
Light "PxrRectLight" "light4" "color lightColor" [1 1 1] "float intensity" [3] "float exposure" [0.5] "int traceLightPaths" [1]
デフォルトのデータは、こんな感じ
ということで、カメラ周りは逆行列を求めないといけないので、
python cgkitを使って、ConcatTransformを求めてみました。
以下は、テンプレート抜粋
#placecam.py {CamPosX} {CamPosY} {CamPosZ} {CamTargetX} {CamTargetY} {CamTargetZ}
#up {CamUpX} {CamUpY} {CamUpZ}
# cgkit commandline
# V=mat4(1).lookAt(pos=({CamPosX}, {CamPosY}, {CamPosZ}),target=({CamTargetX}, {CamTargetY}, {CamTargetZ}),up=({CamUpX}, {CamUpY}, {CamUpZ}))
# vt=(V.inverse()).transpose()
# fov {fov}
Scale -1 1 1
ConcatTransform [{CamColumnMatrix}]
ConcatTransform [{CamColumnMatrix}]部分は逆行列にしないとダメなんで、Structure SynthからExportした後、
以下python2.7のインタラクティブモードで、
from cgkit.all import *
V=mat4(1).lookAt(pos=(7.83552, 12.4411, 18.2554),target=(7.92488, -46.149, -34.0976),up=(-0.170831, 0.656364, -0.734849))
vt=V.inverse()
print("ConcatTransform ["+'{:.6f}'.format(vt[0][0])+' '+'{:.6f}'.format(vt[1][0])+' '+'{:.6f}'.format(vt[2][0])+' '+'{:.6f}'.format(vt[3][0])+' '+'{:.6f}'.format(vt[0][1])+' '+'{:.6f}'.format(vt[1][1])+' '+'{:.6f}'.format(vt[2][1])+' '+'{:.6f}'.format(vt[3][1])+' '+'{:.6f}'.format(vt[0][2])+' '+'{:.6f}'.format(vt[1][2])+' '+'{:.6f}'.format(vt[2][2])+' '+'{:.6f}'.format(vt[3][2])+' '+'{:.6f}'.format(vt[0][3])+' '+'{:.6f}'.format(vt[1][3])+' '+'{:.6f}'.format(vt[2][3])+' '+'{:.6f}'.format(vt[3][3])+' '+"]")
求めてみた。
以前、出力の順番を間違えていたので修正しました。ありがとうございます。
- -
- -