立方体生成について、別の方法を記述してみた。
頂点をリスト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]))
- -
- -