<< MetasequoiaからParthenon 戻る Pythonでメタセコイアを操る >>

Pythonスクリプトで立方体をつくる

メタセコでのPythonスクリプト、引き続き勉強中。
立方体生成について、別の方法を記述してみた。
頂点をリストpで作っておき、addVertexでオブジェクトに追加、面の方向を決めて、ドキュメントに追加し、シーンに表示する。
newPointで点を追加してあげないと、うまくいかないようです。
以下のスクリプトは、OpenGLの記述を参考にしました。エラー処理もできるように、関数drawCube()をはさんでおきました。いろいろと実験してみてください。頂点の順番はOpenGLとは逆になります。
残念ながら。この記述だと面がばらばらになります。

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

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


#meta_drawcube3.py
doc = MQSystem.getDocument()


out = MQSystem.println


def drawCube():
obj = MQSystem.newObject()
s=MQSystem.newPoint
p =[s(50,50,50), s(-50,50,50), s(-50,-50,50),s(50,-50,50),
s(50,50,-50), s(-50,50,-50),s(-50,-50,-50), s(50,-50,-50)]

out(str(p[0]))

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

doc.addObject( obj )


import traceback
import sys
#dist=0
try:
drawCube()

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


  • -
  • -

<< MetasequoiaからParthenon 戻る Pythonでメタセコイアを操る >>