本日はMaya枠です。
前回はBlenderで重複頂点数をPythonを使用して検出しました。
今回は、MayaのPythonで動揺に検出していきます。
〇環境
・Windows11PC
・Maya2025
〇重複頂点を検出する
重複頂点を検出するコードは以下になります。
import maya.cmds as cmds
def get_duplicate_vertices():
# 現在選択されているオブジェクトを取得
selection = cmds.ls(selection=True, long=True)
if not selection:
print("オブジェクトが選択されていません")
return
# 最初に選択されたオブジェクトのシェイプノードを取得
shape_node = cmds.listRelatives(selection[0], shapes=True, fullPath=True)
if not shape_node:
print("シェイプノードが見つかりませんでした。選択したオブジェクトがメッシュであることを確認してください。")
return
shape_node = shape_node[0] # シェイプノードがリストで返されるため、最初の要素を取得
# オブジェクトの頂点を取得
vertices = cmds.ls(f'{shape_node}.vtx[*]', flatten=True)
if not vertices:
print("頂点が見つかりませんでした。選択したオブジェクトがメッシュであることを確認してください。")
return
vertex_positions = []
duplicate_count = 0
for vertex in vertices:
# 各頂点のワールド座標を取得
pos = cmds.pointPosition(vertex, world=True)
if pos in vertex_positions:
duplicate_count += 1
else:
vertex_positions.append(pos)
# 重複頂点の数を出力
print(f"重複頂点数: {duplicate_count}")
# 実行
get_duplicate_vertices()
このコードをスクリプトエディタに貼り付けオブジェクトとしてメッシュが選択されている状態で実行することで重複頂点数がコンソールに出力されます。

![]()
本日は以上です。