私は、ユーザーが選択したオブジェクトを複数回複製できるようにするPyMEL スクリプトに取り組んでおり、CV カーブとそのポイント座標を使用して、各コピーを空間内の特定のポイントに変換および回転します。これを実現するために、各 CV (コントロール頂点) の隣接する 2 つのポイントを使用して、オブジェクトの回転を決定します。
カーブの CV の座標を取得できました
#Add all points of the curve to the cvDict dictionary
int=0
cvDict={}
while int<selSize:
pointName='point%s' % int
coords= pointPosition ('%s.cv[%s]' % (obj,int), w=1)
#Setup the key for the current point
cvDict[pointName]={}
#add coords to x,y,z subkeys to dict
cvDict[pointName]['x']= coords[0]
cvDict[pointName]['y']= coords[1]
cvDict[pointName]['z']= coords[2]
int += 1
今私が抱えている問題は、各 CV の角度を取得する方法を考え出すことです。私は機能に出くわしましたangleBetween()
:
http://download.autodesk.com/us/maya/2010help/CommandsPython/angleBetween.html
理論的には、これが私の解決策になるはずです。これは、曲線の各 CV の「中間ベクトル」(数学用語かどうかは不明) (隣接する CV の座標を使用して 4 番目の点を見つける) を見つけ、上記を使用できるためです。たとえば、z軸上で参照ベクトルを使用してオブジェクトをどれだけ回転させる必要があるかを判断するための前述の関数。
少なくとも理論的には、問題は、関数が各ベクトルに対して 1 セットの座標しかとらず、ポイント座標をその形式に変換する方法がまったくわからないことです (ポイントごとに 1 つずつ、少なくとも 2 セットの座標を常に持っているため) )。
ありがとう。