Rendering学習日記

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

■新規マテリアルの追加

前の記事の最後にスクリプトを書いておきましたが、
以下を追加して実行すると、マテリアルパネルに新規で
mat_testが追加されます。
mat2=MQSystem.newMaterial()
mat2.name="mat_test"
doc.addMaterial(mat2)

num = doc.numMaterial
MQSystem.println(str(num)) #マテリアルの数を表示

メタセコイアのPython scriptは、面倒なところもありますが、
基本をおさえてコツコツと便利に使えるように工夫すれば、可能性はひろがります。
ありがとうございます。
  • -
  • -

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

メタセコイア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) #オブジェクトの数を表示
  • -
  • -
<< 9/25 >>