Rendering学習日記

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

ポリゴン、5角形をつくる

メタセコイアでのPython script練習、繰り返し処理を使っていない面倒な記述をしていますが、原理を理解するために書いてみました。Metasequoia Python APIの勉強です。メタセコイアマスターガイドを参考にしました。ありがとうございます。
#kaku5.py
segment = 5
radius=200.0 

from math import *
crad = pi / 180 * 45
irad = 2*pi/segment

doc = MQSystem.getDocument()
segment = 5
radius=200.0 

from math import *
crad = pi / 180 * 45
irad = 2*pi/segment

doc = MQSystem.getDocument()
obj = MQSystem.newObject()
obj.name = "polygon_%d" % segment

v=[]
v.append(obj.addVertex( MQSystem.newPoint( radius*sin(crad), 0.0, radius*cos(crad) ) ))
crad = crad+irad
v.append(obj.addVertex( MQSystem.newPoint( 0.0, 100.0, 0.0 ) )) #中心
v.append(obj.addVertex( MQSystem.newPoint( radius*sin(crad), 0.0, radius*cos(crad) ) ))
obj.addFace(v)

v=[]
v.append(obj.addVertex( MQSystem.newPoint( radius*sin(crad), 0.0, radius*cos(crad) ) ))
crad = crad+irad
v.append(obj.addVertex( MQSystem.newPoint( 0.0, 100.0, 0.0 ) ))
v.append(obj.addVertex( MQSystem.newPoint( radius*sin(crad), 0.0, radius*cos(crad) ) ))
obj.addFace(v)

v=[]
v.append(obj.addVertex( MQSystem.newPoint( radius*sin(crad), 0.0, radius*cos(crad) ) ))
crad = crad+irad
v.append(obj.addVertex( MQSystem.newPoint( 0.0, 100.0, 0.0 ) ))
v.append(obj.addVertex( MQSystem.newPoint( radius*sin(crad), 0.0, radius*cos(crad) ) ))
obj.addFace(v)

v=[]
v.append(obj.addVertex( MQSystem.newPoint( radius*sin(crad), 0.0, radius*cos(crad) ) ))
crad = crad+irad
v.append(obj.addVertex( MQSystem.newPoint( 0.0, 100.0, 0.0 ) ))
v.append(obj.addVertex( MQSystem.newPoint( radius*sin(crad), 0.0, radius*cos(crad) ) ))
obj.addFace(v)

v=[]
v.append(obj.addVertex( MQSystem.newPoint( radius*sin(crad), 0.0, radius*cos(crad) ) ))
crad = crad+irad
v.append(obj.addVertex( MQSystem.newPoint( 0.0, 100.0, 0.0 ) ))
v.append(obj.addVertex( MQSystem.newPoint( radius*sin(crad), 0.0, radius*cos(crad) ) ))
obj.addFace(v)

doc.addObject( obj )
  • -
  • -

八角すいをつくる

前の記事でポリゴン、5角形をつくったが、きちんとくりかえし処理を行うようにした。ただし、ひとつひとつのポリゴンは移動ツールで触るとばらばら。これはこれで面白いか。勉強ですね。
#poly8.py
segment = 8
radius=200.0 

from math import *
crad = pi / 180 * 45
irad = 2*pi/segment

doc = MQSystem.getDocument()
obj = MQSystem.newObject()
obj.name = "circle_%d" % segment


for i in range(segment):
    v=[]
    v.append(obj.addVertex( MQSystem.newPoint( radius*sin(crad), 0.0, radius*cos(crad) ) ))
    crad = crad+irad
    v.append(obj.addVertex( MQSystem.newPoint( 0.0, 100.0, 0.0 ) ))
    v.append(obj.addVertex( MQSystem.newPoint( radius*sin(crad), 0.0, radius*cos(crad) ) ))
    obj.addFace(v)

doc.addObject( obj )


00.jpg
  • -
  • -

オブジェクトパネル

メタセコイアのMetasequoia Python APIいろいろと実験をしながら、納得していく必要があります。オブジェクトの情報を取得する方法について勉強しています。触りながら、いろいろ実験ですね。
いろんなサイトを参考にしながら勉強しています。サクサクできる方はすばらしいです。ありがとうございます。
#obj_info.py
#ログの消去
MQSystem.clearLog()
# ドキュメントを取得
doc = MQSystem.getDocument()
# オブジェクト数を取得
obj_num = doc.numObject
MQSystem.println(" オブジェクト数 : " + str(obj_num))
# インデックス0番のオブジェクトを取得
obj = doc.object[0]
# オブジェクトの頂点数を取得
ver_num = obj.numVertex
MQSystem.println(" 頂点数 : " + str(ver_num))
# オブジェクトの面数を取得
poly_num = obj.numFace
MQSystem.println(" 面数 : " + str(poly_num))
#1 つめのオブジェクトにおいて選択している頂点を調べる
for i in range(len(obj.vertex)):
	if obj.vertex[i].select:
		MQSystem.println(" 選択頂点番号" + str(i))
  • -
  • -
<< 3/25 >>