最後の旅を始めよう

-黒の英雄譚・零-

Python_MAYA_ちょっとしたツール集

2023年04月03日 | MAYA_Pyhon...
MayaPythonの備忘録的なものです。
自分用のメモですので、なんだか見難くて申し訳ありません。
gooブログでもシンタックスハイライトとか出来ればいいのに・・・

Python_MAYA機能メモ
Python_ネイティブ機能メモ


# 親子付けされたロケータを作成
def fCteateLocatorParent( vlCteateLocators, vParent ):
    for oLoc in vlCteateLocators:
        if not cmds.objExists( oLoc ):
            cmds.spaceLocator( name = oLoc )
            if cmds.objExists( vParent ):cmds.parent( oLoc, vParent )
        vParent = oLoc

fCteateLocatorParent( ["RIDER","BLACK","RX"], "ExistingObj" )


# 全ての骨のローカル軸表示をON/OFF
def fAllBoneDisplayLocalAxis( vBool ): 
    for oJoint in cmds.ls( type ="joint" ):
        cmds.setAttr( oJoint + ".displayLocalAxis", vBool )

fAllBoneDisplayLocalAxis( True )# Falseで非表示


# 真のノードタイプを取得(トランスノードからシェイプノードのタイプを導き出す)
def fDeepType( vObj ):
    oType = cmds.nodeType( vObj )
    if oType == "transform":# タイプがtransformの場合深く探る
        for oChild in cmds.listRelatives( vObj, children =True ) or []:
            if cmds.nodeType( oChild ) in ("nurbsCurve","locator","mesh"):
                return( cmds.nodeType( oChild ) )
        return( "transform" )
    return( oType )
    
fDeepType( cmds.ls( selection =True )[0] )
# やっている事がだいぶトリッキーなので、なんかもっと良い方法は無いものだろうか…


# 二つのオブジェクト間の距離を求める(ピタゴラスの定理)
def fFindDistance( vStart, vEnd ):
    lSP = cmds.xform( vStart,worldSpace=True, translation=True, query=True )
    lEP = cmds.xform( vEnd,  worldSpace=True, translation=True, query=True )
    return((lSP[0]-lEP[0])**2+(lSP[1]-lEP[1])**2+(lSP[2]-lEP[2])**2)**0.5


関連-------------------------------------
Python_MAYA機能メモ
Python_ネイティブ機能メモ
Python_エラーメモ
編集
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする