Rendering学習日記

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

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) #オブジェクトの数を表示
  • -
  • -

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

for文を使うとエラーが出るので、詳細を調べる。

exceptions.TypeError
function takes exactly 1 argument (3 given)
\\Documents\\error2.py', 52, '?', 'for i in range(5):')

エラー処理の記事を参考に動かしてみたら上記のエラー
1引数を取るところ、3つ引数があるからということ。
unitcube(50,50+dist,50,-50)が怪しい。
import traceback
import sys
dist=0
try:
for i in range(5):
unitcube(50,50+dist,50,-50)
dist=dist+60

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


エラー表示してから立方体を表示した。
  • -
  • -
<< 13/40 >>