Rendering学習日記

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

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
  • -
  • -

Metasequoia Python 立方体を複数つくる

複数つくってみる。
くりかえしfor文がちょっとエラー。
Inappropriate argument type.
メソッドに不適当な引数を渡したためということなんですが、
使わないで、動作確認。
メタセコイアpythonスクリプトは以下のようになります。

# 基本図形、新規オブジェクトで立方体複数つくる
#meta_cube_def2.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 )

dist=60
unitcube(50,50+dist,50,-50)
dist=dist+60
unitcube(50,50+dist,50,-50)
dist=dist+60
unitcube(50,50+dist,50,-50)
dist=dist+60
unitcube(50,50+dist,50,-50)
dist=dist+60
unitcube(50,50+dist,50,-50)

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


06.jpg
  • -
  • -

Metasequoia Python 立方体を複数つくる その2

くりかえしfor文がうまくいかなかったので、while文にした。

dist=60
while dist<=300:
unitcube(50,50+dist,50,-50)
dist=dist+60


サンプルスクリプトは次のようになります。
# 基本図形、新規オブジェクトで立方体複数つくる その2
#meta_cube_def2.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 )

dist=60
while dist<=300:
unitcube(50,50+dist,50,-50)
dist=dist+60

num = doc.numObject #オブジェクトの数
out("オブジェクトの数 %d" % num) #オブジェクトの数を表示
  • -
  • -
<< 10/25 >>