Rendering学習日記

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

PointsGeneralPolygons

メタセコイアからobj出力して、cgkitでシーンを書き、
3Delightでレンダリングしてみた。
ずっと、PointsPolygonと思っていたら、PointsGeneralPolygonsでした。
勉強しなおします。面白いです。


Declare "N" "facevarying normal"
Declare "st" "facevarying float[2]"
PointsGeneralPolygons [1] [4] [0 1 2 3]
"P" [100.0 0.0 -100.0
-100.0 0.0 -100.0
-100.0 0.0 100.0
100.0 0.0 100.0]
"st" [0.0 1.0
1.0 1.0
1.0 0.0
0.0 0.0] "N" [0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0]

cgkitでのシーン・スクリプト
import camctrl
Globals( rib='Imager "background" "color background" [0.2 0.4 0.6]',
up = (0,1,0),
handedness = 'r'
)

TargetCamera(
pos = (173.799, 236.458, 183.37),
target = (-0.150459, -8.30794, -6.52798),
fov = 45.000000,
)

SpotLight3DS( name = "SpotLight3DS",
enabled = True,
intensity = 1.0,
shadowed = True,
shadow_size = 512,
shadow_filter = 4.0,
shadow_bias = 0.05,
hotspot = 75,
falloff = 80,
pos=(100, 200, 100),
target = (0,0,0) )


GLPointLight(
pos = (10,10, -20),
intensity = 0.7,
diffuse = (1, 1, 1)
)

load("men_uv2.obj")
men = worldObject("obj1")

mat_men = GLMaterial(
diffuse = (1,1,1),
texture = GLTexture("uvmap.png",
transform = mat4().scaling(vec3(-1,-1,1)),
mode = GL_MODULATE)
)

men.setMaterial(mat_men)
men.pos=(0,0,0)
#men.scale=(-1,1,-1)


menuv_out.jpg
  • -
  • -

OBJファイルフォーマット

メタセコイアのPythonでエクスポートできるように、サンプルファイルを見ながら、検証・・・・・metasequoia pythonの勉強します。

OBJファイルフォーマットについて、参考になります。ありがとうございます。


http://www.hiramine.com/programming/3dmodelfileformat/objfileformat.html


http://www.fileformat.info/format/wavefrontobj/egff.htm
  • -
  • -

OBJエクスポート その2

metasequoia pythonでOBJ出力を考える。
objファイルとmtlファイルを出力する。
カメラ位置を取得し、cgkitのシーンファイルに書き込む。
後は、RenderMan、RenderMan互換レンダラでレンダリングする。

頂点法線を計算したので、メカが丸くなる。3Delightでレンダリングした。
meka_out.jpg

面ごとの色情報をテストしてみる。
men_out.jpg
以下は、cgkitのシーンファイル
import camctrl

Globals( rib='Imager "background" "color background" [0.2 0.4 0.6]',
up = (0,1,0),
handedness = 'r'
)

TargetCamera(
pos = (897.529, 889.788, 808.139),
target = (-13.524, 1.713, 13.592),
fov = 9.527,
)

SpotLight3DS( name = "SpotLight3DS",
enabled = True,
intensity = 1.0,
shadowed = True,
shadow_size = 512,
shadow_filter = 4.0,
shadow_bias = 0.05,
hotspot = 75,
falloff = 80,
pos=(100, 200, 100),
target = (0,0,0) )


GLPointLight(
pos = (10,10, -20),
intensity = 0.7,
diffuse = (1, 1, 1)
)

load("obj_men.obj")
model = worldObject("obj1")

m1=OBJMaterial( name = "mat1",
Ka = (0.600000023842, 0.489411790745, 0.0258823546621),
Kd = (0.800000011921, 0.65254903812, 0.0345098053591),
Ks = (0.0, 0.0, 0.0),
Ns = 5.0
)

m2=OBJMaterial( name = "mat2",
Ka = (0.600000023842, 0.0188235312729, 0.054117650454),
Kd = (0.800000011921, 0.0250980410739, 0.0721568654799),
Ks = (0.0, 0.0, 0.0),
Ns = 5.0
)

m3=OBJMaterial( name = "mat3",
Ka = (0.0211764724027, 0.0494117681945, 0.600000023842),
Kd = (0.0282352958357, 0.0658823559565, 0.800000011921),
Ks = (0.0, 0.0, 0.0),
Ns = 5.0
)

m4=OBJMaterial( name = "mat4",
Ka = (0.0494117681945, 0.600000023842, 0.0494117681945),
Kd = (0.0658823559565, 0.800000011921, 0.0658823559565),
Ks = (0.0, 0.0, 0.0),
Ns = 5.0
)

model.material = [m1,m2,m3,m4]

matids = model.geom.slot("matid")

i=0
for v in model.geom.slot("matid"):
matids[i] = v
i=i+1


"""
mat_men = GLMaterial(
diffuse = (1,1,1),
texture = GLTexture("uvmap.png",
transform = mat4().scaling(vec3(-1,-1,1)),
mode = GL_MODULATE)
)
"""
#men.setMaterial(mat_men)
model.pos=(0,0,0)
#men.scale=(-1,1,-1)
  • -
  • -
<< 26/40 >>