パラメトリック曲面をmeshオブジェクトで作る
Meshオブジェクトを生成するには、頂点座標のリストと、面情報のリストの2つが必要(法線情報とUV座標、頂点カラーをオプションで指定できる)
面情報は面を構成する頂点インデックスで指定する(OBJ形式と似ている。ただし頂点インデックスは0から始まる)。
具体例はAddMeshのAPIを見るとよい。
基本コード
rs.AddMesh(vertices, face_vertices, vertex_normals=None, texture_coordinates=None, vertex_colors=None)
サンプルコード
u, v パラメータ(いずれも0~1の値をとる)から (x,y,z)座標値が決定されるようなパラメトリック曲面を、次のようなコードによってMeshオブジェクトとして作成できる。
必要に応じて getPosition 関数の中身を変えるだけでよい
import rhinoscriptsyntax as rs import math def getPosition(u, v): x = u y = v z = 0.1*math.sin(8*math.sqrt((u-0.5)*(u-0.5)+(v-0.5)*(v-0.5))*math.pi) return (x*100,y*100,z*100) DIV_NUM = 100 du = 1.0/DIV_NUM dv = 1.0/DIV_NUM vertices = [] faceVertices = [] for iu in range(DIV_NUM+1): u = iu / DIV_NUM for iv in range(DIV_NUM+1): v = iv / DIV_NUM vertices.append(getPosition(u,v)) if iu < DIV_NUM and iv < DIV_NUM: faceVertices.append(((DIV_NUM+1)*iu+iv, (DIV_NUM+1)*(iu+1)+iv, (DIV_NUM+1)*(iu+1)+iv+1,(DIV_NUM+1)*iu+iv+1)) a = rs.AddMesh(vertices, faceVertices)
実行結果
パラメトリック曲面をmeshオブジェクトで作る.txt · 最終更新: 2023/01/27 08:39 by jmitani