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|}}