Rendering学習日記

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

■四角すいの生成とマテリアル割り当て

メタセコイアPythonスクリプトを使って、新規オブジェクトで四角すいをつくり、面にマテリアルを割り当てる。色をつけるスクリプトです。
for face in obj.face:部分で、オブジェクトのすべての面にマテリアル0番の色情報を割り当てています。サンプルを参考につくってみました。
# 基本図形、新規オブジェクトで四角すいをつくる
#meta_4mat.py
doc = MQSystem.getDocument()

obj = MQSystem.newObject() #新規オブジェクト
out = MQSystem.println

out(obj.name)
num=doc.numObject
a=num

obj.name="sikakusui_%d" % a #オブジェクト名をつける

a0=obj.addVertex(-50.000000,0.000000,-100.000000) #0
a1=obj.addVertex(50.000000,0.000000,-100.000000) #1
a2=obj.addVertex(50.000000,0.000000,0.000000) #2
a3=obj.addVertex(-50.000000,0.000000,0.000000) #3
a4=obj.addVertex(0.000000,150.0000,-50.000000) #4


obj.addFace([0,3,2,1])
obj.addFace([4,1,2])
obj.addFace([4,2,3])
obj.addFace([4,3,0])
obj.addFace([4,0,1])

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

mat1=MQSystem.newMaterial()
mat1.name="mat_test"
doc.addMaterial(mat1)
numm = doc.numMaterial
MQSystem.println("マテリアルの数 %d" % numm)
doc.material[0].color.red=0.92
doc.material[0].color.green=0.2
doc.material[0].color.blue=0.12

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

mat2.jpg
  • -
  • -

Metasequoia Python 立方体をつくる

メタセコイアのPythonの使い方として、立方体をつくってみた。一辺が50、原点を中心につくってみる。面の向きは、カメラから見て反時計回りに点を指定すると表向き、カメラから見えない面については、時計回りに点を指定することで、面が表向きになる。

以下はサンプルとなるpythonスクリプトです。

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

obj = MQSystem.newObject() #新規オブジェクト
out = MQSystem.println

out(obj.name)
num=doc.numObject
a=num

obj.name="cube_%d" % a #オブジェクト名をつける

a0=obj.addVertex(-25.000000,-25.000000,25.000000) #0
a1=obj.addVertex(25.000000,-25.000000,25.000000) #1
a2=obj.addVertex(25.000000,25.000000,25.000000) #2
a3=obj.addVertex(-25.000000,25.000000,25.000000) #3
a4=obj.addVertex(-25.000000,-25.0000,-25.000000) #4
a5=obj.addVertex(-25.000000,25.0000,-25.000000) #5
a6=obj.addVertex(25.000000,25.0000,-25.000000) #6
a7=obj.addVertex(25.000000,-25.0000,-25.000000) #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 )
num = doc.numObject #オブジェクトの数
out("オブジェクトの数 %d" % num) #オブジェクトの数を表示
  • -
  • -

Metasequoia Python 立方体を定義する

立方体の辺の長さと位置を指定すれば、生成できるように、関数をつくって定義した。

# 基本図形、新規オブジェクトで立方体をつくる
#meta_cube_def.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 #オブジェクト名をつける

a0=obj.addVertex(x-L/2.0,y-L/2.0,z+L/2.0) #0
a1=obj.addVertex(x+L/2.0,y-L/2.0,z+L/2.0) #1
a2=obj.addVertex(x+L/2.0,y+L/2.0,z+L/2.0) #2
a3=obj.addVertex(x-L/2.0,y+L/2.0,z+L/2.0) #3
a4=obj.addVertex(x-L/2.0,y-L/2.0,z-L/2.0) #4
a5=obj.addVertex(x-L/2.0,y+L/2.0,z-L/2.0) #5
a6=obj.addVertex(x+L/2.0,y+L/2.0,z-L/2.0) #6
a7=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 )


unitcube(100,50,50,-50) # L:辺の長さ100 x,y,z座標位置

unitcube(50,-50,25,50) # L:辺の長さ50 x,y,z座標位置 2つめ配置


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

05.jpg
  • -
  • -
<< 12/40 >>