Meshオブジェクトを生成するには、頂点座標のリストと、面情報のリストの2つが必要(法線情報とUV座標、頂点カラーをオプションで指定できる)\\ 面情報は面を構成する頂点インデックスで指定する(OBJ形式と似ている。ただし頂点インデックスは0から始まる)。 具体例は[[https://developer.rhino3d.com/api/RhinoScriptSyntax/#mesh-AddMesh|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) 実行結果 {{:param0.png?direct|}} {{:param1.png?direct|}}