夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

MayaのPythonで重複頂点を検出する

本日はMaya枠です。

前回はBlenderで重複頂点数をPythonを使用して検出しました。

redhologerbera.hatenablog.com

今回は、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()

このコードをスクリプトエディタに貼り付けオブジェクトとしてメッシュが選択されている状態で実行することで重複頂点数がコンソールに出力されます。

本日は以上です。