今回はリギングアーティストがよく使う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でキャラクターリギングを行うための知識とテクニックを、
豊富な図解と実践的なチュートリアルで学ぶことができるので入門の方にはオススメです!
コメント