リギングアーティストがよく使うPythonコマンド

今回はリギングアーティストがよく使うPythonコマンドについて解説しました。
リギングアーティストを目指す学生さんや、これからリギングアーティストにジョブチェンジ!
って方向けの内容になっております。

※ この記事は、Maya Advent Calendar 2024 のシリーズ2 4日目の記事です
※ Maya2025 を利用しています。

管理人がYouTubeで解説!

今回使ったコードのサンプル

from maya import cmds

# ローカルアクシスの設定
nodes = cmds.ls(sl=True, type="joint")
value = True
for node in nodes:
    cmds.setAttr("{}.displayLocalAxis".format(node), value)


# 選択した階層以下のジョイントの回転を0にする
nodes = cmds.ls(sl=True, dag=True, type="joint")
for node in nodes:
    cmds.setAttr("{}.rotate".format(node), 0, 0, 0)


# スキンクラスターを取得する
def getSkinCluster(node):
    histories = cmds.listHistory(node, pruneDagObjects=True, interestLevel=2)
    skinCluster = None
    for history in histories:
        if cmds.nodeType(history) == "skinCluster":
            skinCluster = history
            break
    if skinCluster is not None:
        return skinCluster
    return skinCluster


# スキンクラスターのインフルエンスを取得する
def getSkinInfluences(skinCluster):
    influences = cmds.skinCluster(skinCluster, q=True, inf=True)
    return influences
    
## 使用例
nodes = cmds.ls(sl=True, type="transform")
for node in nodes:
    skinCluster = getSkinCluster(node)
    print(getSkinInfluences(skinCluster))
    

# 末端ノードの情報だけ取得してJointOrientの値を確認する
def get_end_nodes(node):
  children = cmds.listRelatives(node, children=True, type="transform")
  if not children:
    return [node]
  end_nodes = []
  for child in children:
    end_nodes.extend(get_end_nodes(child)) # 再帰関数
  return end_nodes

## 使用例
root_node = "Armature"  # ルートノードの名前
end_nodes = get_end_nodes(root_node)
for node in end_nodes:
    print(cmds.getAttr("{}.jointOrient".format(node)))

終わりに

リギングアーティストにとって、Pythonは強力なツールです。
Pythonを習得することで、リギング作業を効率化し、より高度なリグを作成することができます。
今回の記事・動画で紹介した内容を参考に、Pythonを学び、リギングスキルを向上させてくださいね。

おすすめ書籍

Mayaリギング、第3版まで出ていますね。
本書は、Mayaでキャラクターリギングを行うための知識とテクニックを、
豊富な図解と実践的なチュートリアルで学ぶことができるので入門の方にはオススメです!

関連記事

  1. 再帰関数を使って末端ジョイントを取得しよう!

    2021-01-08

  2. eST3でリグを作ってみよう!& eST3リリース交流会参加とリガー道の振り返り。

    2024-06-15

  3. アーティストのためのMaya Python入門 第16回「ノードを知ろう!ノードを知れば、隠しアトリビュートの値が取れる!」

    2020-11-10

  4. Maya C++ 入門③ | 単純なコマンドプラグインを作成しよう!

    2022-08-02

コメントをお待ちしています。

コメント

ページ上部へ戻る