ユーザ用ツール

サイト用ツール


パラメトリック曲面を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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki