Rendering学習日記

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

Metasequoia PythonでPxrDisneyマテリアル設定

Metasequoia Pythonを使って、RenderMan RIS用のマテリアルPxrDisneyを設定してみました。ありがとうございます。
boxesrnd.jpg


import random

def p(*args):
"""
プリント関数
複数の引数を渡せる。
"""
if len(args)==0:
# 改行させる
MQSystem.println("")
return

for arg in args:
MQSystem.println(str(arg))


# 基本図形、新規オブジェクトで立方体複数つくる
#meta_cube_def_rndc.py
doc = MQSystem.getDocument()
out = MQSystem.println


#
def unitcube(L=50,x=0,y=0,z=0):
obj = MQSystem.newObject() #新規オブジェクト
num=doc.numObject
a=num
obj.name="cube_%d" % a #オブジェクト名をつける

obj.addVertex(x-L/2.0,y-L/2.0,z+L/2.0) #0 頂点番号
obj.addVertex(x+L/2.0,y-L/2.0,z+L/2.0) #1
obj.addVertex(x+L/2.0,y+L/2.0,z+L/2.0) #2
obj.addVertex(x-L/2.0,y+L/2.0,z+L/2.0) #3
obj.addVertex(x-L/2.0,y-L/2.0,z-L/2.0) #4
obj.addVertex(x-L/2.0,y+L/2.0,z-L/2.0) #5
obj.addVertex(x+L/2.0,y+L/2.0,z-L/2.0) #6
obj.addVertex(x+L/2.0,y-L/2.0,z-L/2.0) #7

obj.addFace([0,3,2,1])
obj.addFace([1,2,6,7])
obj.addFace([4,7,6,5])
obj.addFace([0,4,5,3])
obj.addFace([3,5,6,2])
obj.addFace([0,1,7,4])
doc.addObject( obj )

mat1=MQSystem.newMaterial()
doc.addMaterial(mat1) #マテリアルをドキュメントに追加
num0 = doc.numMaterial #現在の材質数を数える
numm=num0-1 #マテリアル番号は一つ少ない
doc.material[numm].shader=5
doc.material[numm].shaderFilename="PxrDisney"
doc.material[numm].color=MQSystem.newColor(random.random(),random.random(),random.random())
doc.material[numm].specular=0.5
doc.material[numm].reflection=0.75

for face in obj.face:
face.material=numm #マテリアルnumm番を面に割り当てる


import traceback
import sys
#dist=0
try:
for dist in range(0,600,200):
for dist2 in range(0,600,200):
#out(str(i))
out(str(dist))
unitcube(100,50+dist,50,dist2)



except:
info=sys.exc_info()
p(info[0])
p(info[1])
p(*traceback.extract_tb(info[2]))

num = doc.numObject #オブジェクトの数
out("オブジェクトの数 %d" % num) #オブジェクトの数を表示


Metasequoia | - | -

OZ-15AGXハイドラガンダム

SAITさん製作のMS、OZ-15AGXハイドラガンダムをParthenonレンダラでレンダリングした。モデリングはMetasequoiaを使用されている。凄いです。それでParthenonで表示できるように材質を変更、ポリゴンは三角形化しました。settingにおいてIBLを用いています。ありがとうございます。

005.jpg

004.jpg

003.jpg

002.jpg

001.jpg
Metasequoia | - | -

NRX-044アッシマー素体

SAITさん製作のMS、NRX-044アッシマーをParthenonレンダラでレンダリングした。モデリングはMetasequoiaを使用されている。凄いです。それでParthenonで表示できるように材質を変更、ポリゴンは三角形化しました。settingにおいてIBLを用いています。ありがとうございます。

001.jpg

002.jpg

003.jpg
Metasequoia | - | -

AMX−107バウ素体

SAITさん製作のMS、AMX−107バウをParthenonレンダラでレンダリングした。モデリングはMetasequoiaで使用されている。凄いです。それでParthenonで表示できるように材質を変更、ポリゴンは三角形化しました。settingにおいてIBLを用いています。ありがとうございます。
001.jpg

002.jpg

003.jpg
Metasequoia | - | -

AMX-1002ズサン

Metasequoiaモデル、AMX-1002ズサンをParthenon Renderでレンダリングした。
モデルデータはSAITさん作成のものです。細かく作られていて、Pathenonでレンダリングしたら、驚きのクオリティです。Core2 Duo T9900 3.0GHzで代替100秒くらいです。ありがとうございます。

001.jpg

002.jpg

使ったデータは、まず三角形化し、材質の自己照明を0.0、周囲光0.0に修正し、拡散、反射、反射の強さを調整しました。
IBLとしてLight Probe Image Gallery
http://www.pauldebevec.com/Probes/
uffizi_probe.hdrを使用しました。
Metasequoia | - | -

RIB出力検証その6

metasequoia pythonスクリプトを使ってRenderMan RIB出力が面白い。キャラクターのレンダリングを再度やってみた。
3Delightシェーダのmaya_spotlightを2つ入れて、indirectlightは調整しました。以下はlight部分のRIB前半です。


##Renderman RIB-Structure 1.0
Display "nanase01.tif" "file" "rgba"
Format 640 480 1
PixelSamples 4 4
PixelFilter "catmull-rom" 3 3
ShadingRate 1

Imager "background" "background" [0.2 0.4 0.6]

Sides 1
Orientation "rh"
Projection "perspective" "fov" [16.8611511458]
ConcatTransform [
0.682221487495 0.0292391623782 0.730560684258 0
0 0.999200044373 -0.0399908905246 0
0.731145568269 -0.0272826448199 -0.681675740577 0
30.1351455113 10.4167089142 1500.00002977 1
]
Scale 1 1 -1
WorldBegin
Attribute "visibility" "trace" [1]
Attribute "visibility" "transmission" ["Os"]
Attribute "visibility" "transmission" "opaque"
Attribute "light" "shadows" "on"
LightSource "ambientlight" 3
"lightcolor" [0.600 0.600 0.600]
LightSource "maya_spotlight" 4
"from" [143.23878479 383.181335449 -243.087921143]
"to" [-11.150762558 152.709259033 -47.7991714478]
"lightcolor" [0.898039221764 0.933333337307 1.0]
"string shadowmapname" "raytrace"
"float intensity" 1.0
"float coneangle" 0.8
"float penumbraangle" 0.15
LightSource "maya_spotlight" 5
"from" [-128.688598633 -72.6545791626 -299.763641357]
"to" [-11.5170631409 152.373718262 -24.4289131165]
"lightcolor" [0.898039221764 0.933333337307 1.0]
"string shadowmapname" "raytrace"
"float intensity" 1.0
"float coneangle" 0.8
"float penumbraangle" 0.15
TransformBegin
Translate 0 10 0
LightSource "indirectlight" 6
"uniform float intensity" [ 0.6 ]
"uniform float finalgather" [ 1 ]
"uniform float samples" [ 256 ]
"uniform float maxdist" [ 0.99999997e36 ]
"uniform float __nonspecular" [ 1 ]
TransformEnd
Color 1.0 1.0 1.0
MakeTexture "nanase._tex.tif" "nanase._tex.tdl" "periodic" "periodic" "gaussian" 1 1
Surface "supertexmap" "string Csmapname" "nanase._tex.tdl"
AttributeBegin
Scale 1 1 -1
Declare "st" "facevarying float[2]"
Attribute "identifier" "name" ["body"]
PointsPolygons
[ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 以下省略



調整していくと面白くなりますね。ありがとうございます。
nanase01.jpg
Metasequoia | - | -

metasequoia python RenderMan Export

メタセコイア Pythonスクリプトを使って、RIB出力、ライトをいろいろとつけられるように工夫しました。
1.ambientlight,spotlight,maya_spotlight,indirectlight,maya_pointlight,distantlightをオブジェクトパネルに書き込むと、出力する。
その際、方向は、面の作成の辺を使って線分を作ります。


2.複数でスポットライトを設けたいときは、オブジェクト名に番号をつけておきます。
spotlight1
spotlight2

3.ライトの色変更は、マテリアルをつくり、ライトオブジェクトを選択し割り当てます。

4.マテリアルにテクスチャがあると、supertexmapシェーダを割り当てます。面ごとのマテリアルには非対応。1オブジェクトに1マテリアル設定になります。

maya_spotlight,indirectlightを利用した。
scene04_.jpg

テクスチャマップは、レンダリング前にtifに変更しておきます。
maya_spotlight色変更,indirectlightを利用した。
meka_04.jpg

すべて、3Delightでレンダリングしました。
使いやすくなってきました。面白いです。ありがとうございます。
Metasequoia | - | -

Tkinter使えない??

メタセコイアpythonでTkinter実験君。
単にウインドウを表示しようとしたが、うまくいかない。


def p(*args):
"""
プリント関数
複数の引数を渡せる。
"""
if len(args)==0:
# 改行させる
MQSystem.println("")
return

for arg in args:
MQSystem.println(str(arg))

import traceback
import sys
from Tkinter import *

try:
r=Tk()
except:
info=sys.exc_info()
p(info[0])
p(info[1])
p(*traceback.extract_tb(info[2]))




エラーは以下のとおり・・・・残念??
exceptions.AttributeError
'module' object has no attribute 'argv'
('C:\\Users\\makura\\Documents\\tk_error.py', 19, '?', 'r=Tk()')
('c:\\Python22jp\\Lib\\lib-tk\\Tkinter.py', 1507, '__init__', 'baseName = os.path.basename(sys.argv[0])')
Metasequoia | - | -

Indirectlight

3Delightのindirectlightを追加できるようにした。
メタセコイアのオブジェクトパネルにidirectlightとぶつを追加して、
metasequoia python スクリプトでRIB出力
以下はライト部分RIB抜粋、結構レンダリング時間かかります。


Attribute "visibility" "trace" [1]
Attribute "visibility" "transmission" ["Os"]
Attribute "visibility" "transmission" "opaque"
Attribute "light" "shadows" "on"
TransformBegin
Translate 3.0 300.0 -3.0
LightSource "maya_pointlight" 1
"lightcolor" [0.800 0.800 0.800]
"string shadowmapname" "raytrace"
"float intensity" 50000

TransformEnd
LightSource "spotlight" 2
"from" [-64.2728729248 115.28918457 96.3978881836]
"to" [-0.649001300335 10.0252351761 -12.1598510742]
"lightcolor" [0.800 0.100 0.100]
"string shadowmap" "raytrace"
"float intensity" 80000
"float coneangle" 0.52
"float conedeltaangle" 0.52

LightSource "maya_spotlight" 3
"from" [127.575531006 153.345001221 -69.9409103394]
"to" [42.3550758362 20.9788990021 -12.4399051666]
"lightcolor" [0.100 0.100 0.800]
"string shadowmapname" "raytrace"
"float intensity" 1.0
"float coneangle" 0.8
"float penumbraangle" 0.15

TransformBegin
Translate 0 10 0
LightSource "indirectlight" "ambientLightShape1"
"uniform float intensity" [ 1 ]
"uniform float finalgather" [ 1 ]
"uniform float samples" [ 256 ]
"uniform float maxdist" [ 0.99999997e36 ]
"uniform float __nonspecular" [ 1 ]
TransformEnd


楽しいですね。
scene06.jpg
Metasequoia | - | -

金属質感

shinyシェーダ設定
3Delightでレンダリング。
モデルは、メタセコイアからmetasequoia pythonスクリプトを実行
RIB出力したものを調整。
BMRTのfakeskyシェーダも利用。周囲は大きな球体にfakeskyを割り当てる。
計算処理速度をあげる工夫を実験ですね。
ありがとうございます。
scene_fakesky.jpg
Metasequoia | - | -
1/12 >>