Rendering学習日記

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

頂点の座標を求める

メタセコイアで物体を作っておいて、移動ツールで頂点をクリックする。次のスクリプトを実行すると選択されている頂点の座標位置が求められる。複数選択したときも表示出力します。
ありがとうございます。
#現在のオブジェクトの選択した頂点の座標を求める
#select_v1.py
obj=MQSystem.getDocument().object[MQSystem.getDocument().currentObjectIndex]

MQSystem.println("カレントオブジェクト %s" % obj.name)

for vtx in obj.vertex:
if vtx.select: #vertexが選択されているならば,Trueであるならば
pos=vtx.getPos()
MQSystem.println("\tx %f y %f z %f" % (pos.x,pos.y,pos.z))
  • -
  • -

乱数を発生させて三角形をつくる

原点を中心に座標位置をランダムにして三角形をつくってみた。
ひとつだけですが、面が裏返ったりするから、
いろいろとアイデアしだいで、じっくり考えてやってみるとできるかな。
できたときはわくわくしますね。
ありがとうございます。
#乱数を発生させて三角形をつくる
import math
import random
global y,z

doc = MQSystem.getDocument()

num = doc.numObject
obj = MQSystem.newObject() #新規オブジェクト
v = []
v.append( obj.addVertex(0,0,0) ) #原点

y=random.randint(1,100) #1から100までの整数を発生
z=random.randint(1,100)
v.append( obj.addVertex(100,y,z) )

y=random.randint(1,100)
z=random.randint(1,100)
v.append( obj.addVertex(100,y,z) )

obj.addFace(v)
doc.addObject( obj )


01.jpg
  • -
  • -

3つのランダムな頂点を結ぶ三角形

まだまだ修行が足りませんが、imoceaのpython APIに関するドキュメントを参考にした。検討していかなくてはなりません。
勉強です。ありがとうございます。
# rnd_sankaku.py
# ランダムに配置された三角形メッシュを作るサンプル
#
from random import uniform, seed

# 乱数の種設定
seed()

# 三角形の数
tri_count = 1000

doc = MQSystem.getDocument()

num = doc.numObject
obj = MQSystem.newObject() #新規オブジェクト


# 三角形を配置する範囲
range_min = -1000
range_max = 1000

# 三角形中心から頂点までの最短・最長距離
tri_size_min = 10
tri_size_max = 300

# ランダムな三角形中心位置を作成する関数
def random_point():
return uniform(range_min, range_max),uniform(range_min, range_max), uniform(range_min, range_max)


obj.name = "Random Triangles" # 名前設定
a=random_point()
b=random_point()
c=random_point()
v=[]
v.append(obj.addVertex( MQSystem.newPoint(a[0],a[1],a[2])))
v.append(obj.addVertex( MQSystem.newPoint(b[0],b[1],b[2])))
v.append(obj.addVertex( MQSystem.newPoint(c[0],c[1],c[2])))
obj.addFace(v)


MQSystem.println("\tx %f y %f z %f" % (a[0],a[1],a[2]))
doc.addObject( obj )
  • -
  • -
<< 7/40 >>