前の記事でMAYAのスクリプトを使った、ポリゴン頂点の位置を取得する方法を書きました。
MAYAのスクリプトでポリゴン頂点の位置を取得するコマンド
pointPosition
ポリゴンの頂点には位置情報の他にカラーの情報もあり取得はもちろん編集もできます。
MAYAのスクリプトでポリゴンの頂点カラーを扱うコマンド
polyColorPerVertex
そこで今回は、ポリゴン頂点の位置情報と頂点のカラーの情報をあわせたPythonスクリプトを作りたいと思います。
![]() |
|
![]() |
ポリゴン頂点の位置情報を取得する
ポリゴン頂点の位置を取得するには
pointPosition
を使います。
import maya.cmds as cmds selectedVertex_list = cmds.ls(sl=True) vertex_pos_1 = cmds.pointPosition(selectedVertex_list[0]) print(vertex_pos_1)
説明:
vertex_pos_1 = cmds.pointPosition(selectedVertex_list[0])
pointPositionで選択した頂点の位置を取得、変数に代入
実行:
ポリゴン頂点を選択して実行

選択した頂点の座標位置が出力されました。
ポリゴン頂点のカラー情報を取得する
MAYAのスクリプトでポリゴンの頂点カラーを扱うコマンドは
polyColorPerVertex
ポリゴン頂点のカラーの値を取得する
polyColorPerVertexでポリゴン頂点のカラーの値を取得します
import maya.cmds as cmds cmds.polyColorPerVertex( rgb=True ,q=True)
結果:
ポリゴンの頂点を選択して実行

選択した頂点のRGBの値が出力されました。
ポリゴン頂点のカラーの値を編集する
polyColorPerVertexでポリゴン頂点のカラー情報を編集します
import maya.cmds as cmds cmds.polyColorPerVertex( rgb=(0.8 ,0.4 ,0.3) ,a=1 ,cdo=True)
説明:
cmds.polyColorPerVertex( rgb=(0.8 ,0.4 ,0.3) ,a=1 ,cdo=True)
選択した頂点を r=0.8 ,g=0.4 ,b=0.3 ,a=1 で編集します。
結果:
ポリゴン頂点を選択して実行

指定した値 r=0.8 ,g=0.4 ,b=0.3 ,a=1 で頂点のカラーが変わりました。

原点から距離に応じた頂点カラーをセットする
ポリゴン頂点の座標の値と頂点カラーの値が取得できたので、原点からの距離に応じて設定する頂点カラーの色を変えるスクリプトを書きたいと思います。
import maya.cmds as cmds import maya.mel as mm selectedVertex_list = cmds.ls(sl=True) selectedVertex_num =cmds.filterExpand(selectedVertex_list , sm=31) for i in range(len(selectedVertex_num)): vertex_pos = cmds.pointPosition(selectedVertex_num[i]) mm.eval("vector $vertex_pos_1 = << %s , %s , %s >>; " % (vertex_pos[0],vertex_pos[1],vertex_pos[2])) distance_value = mm.eval("mag $vertex_pos_1;") if distance_value <= 1.0 : cmds.polyColorPerVertex(selectedVertex_num[i], rgb=(0.0 ,0.0 ,1.0) ,a=1 ,cdo=True) elif distance_value > 1.0 and distance_value <= 2.0: cmds.polyColorPerVertex(selectedVertex_num[i], rgb=(1.0 ,0.0 ,0.0) ,a=1 ,cdo=True) elif distance_value > 2.0 and distance_value <= 3.0: cmds.polyColorPerVertex(selectedVertex_num[i], rgb=(0.0 ,1.0 ,0.0) ,a=1 ,cdo=True) else: cmds.polyColorPerVertex(selectedVertex_num[i], rgb=(0.5 ,0.5 ,0.5) ,a=1 ,cdo=True)
説明:
selectedVertex_list = cmds.ls(sl=True)
selectedVertex_num =cmds.filterExpand(selectedVertex_list , sm=31)
選択した頂点のリストが纏まっていると扱えないので filterExpand でバラバラにします。
vertex_pos = cmds.pointPosition(selectedVertex_num[i])
mm.eval("vector $vertex_pos_1 = << %s , %s , %s >>; " % (vertex_pos[0],vertex_pos[1],vertex_pos[2]))
pointPositionで取得した頂点の位置の値をeval()でMELのvector型の変数”$vertex_pos_1″に文字列で当てはめます。
distance_value = mm.eval("mag $vertex_pos_1;")
MELのコマンド mag でvector型の変数 “$vertex_pos_1” の大きさ(長さ)を取得。Pythonの変数 “distance_value” に代入しました。
if distance_value <= 1.0 :
cmds.polyColorPerVertex(selectedVertex_num[i], rgb=(0.0 ,0.0 ,1.0) ,a=1 ,cdo=True)
elif distance_value > 1.0 and distance_value <= 2.0:
cmds.polyColorPerVertex(selectedVertex_num[i], rgb=(1.0 ,0.0 ,0.0) ,a=1 ,cdo=True)
elif distance_value > 2.0 and distance_value <= 3.0:
cmds.polyColorPerVertex(selectedVertex_num[i], rgb=(0.0 ,1.0 ,0.0) ,a=1 ,cdo=True)
else:
cmds.polyColorPerVertex(selectedVertex_num[i], rgb=(0.5 ,0.5 ,0.5) ,a=1 ,cdo=True)
頂点の距離 “distance_value” に応じて頂点のカラーを設定します
結果:
カラーを設定する頂点を選択して実行。

設定した距離に応じて、頂点カラー色が変わりました。

まとめ:平面以外のメッシュにも応用できる
平面ではなく立体物に対して実行しました。

今回は原点からの距離に応じて設定する頂点カラーの値を変えましたが、原点からではなく自由に動かせるロケータからの距離にすると、もっと活用できる場面が増えると思います。
![]() |
|
![]() |
|
BTOパソコンの【FRONTIER】
3DCG/動画編集/そしてゲームプレイにも、高性能PCがお得な価格で購入できます
ウィンターセール\アウトレット・大特価・掘り出し物がズラリ!!/2月10日(水)15時まで
■第10世代 intel Core i7-10700KF + NVIDIA RTX 3070 モデルが159,800円!!
■第10世代 intel Core i7-10700F + NVIDIA GTX 1660 モデルが99,800円!!
他 お買い得PCが沢山!全て台数限定なので売り切れる前に是非
▶最新GPUも格安構成も自由に選べる!パソコン買うならBTOの【FRONTIER】
【デジハリONLINEの 基礎動画 + AdobeCC一年ライセンス のお得プラン】
デジタルハリウッドのオンラインCGスクール「デジハリONLINE」が提供する、60時間の基礎動画とAdobe creative cloudの一年版ライセンスがパッケージされた、お得な講座プラン
「Adobeマスター講座」が36,346円(税別)
PhotoshopやIllustratorなどAdobe製品を超お得な価格で利用できてコスパ最強。

▶︎基礎動画教材付きAdobe Creative Cloudを年額36,346円(税別)のお得な価格で使用する方法

![]() |
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|