最後の旅を始めよう

-黒の英雄譚・零-

Python_MAYA機能メモ

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

Python_ネイティブ機能メモ

#選択したオブジェクトのリスト化
lSelectObj = cmds.ls( selection = True )
if  len( lSelectObj ) == 0:
    print ("-- not selection")
    sys.exit()

#選択の解除
cmds.select( clear =True )

#タイムラインの間分モーションをベイクする
oMinTime = cmds.playbackOptions( query = True , minTime = True )
oMaxTime = cmds.playbackOptions( query = True , maxTime = True )

cmds.bakeResults( lOutLocator , time =(oMinTime,oMaxTime), sampleBy=1, simulation = True )

#カレントフレーム数を取得
maya.cmds.currentTime( query =True )

#名前の変更
cmds.rename( "curveInfo1", "_SplineIK_curveInfo" )

#追加アトリビュート作成
#文字列型
cmds.addAttr( "ObjName", longName = "addAttrName", dataType = "string")
cmds.setAttr( "ObjName.addAttrName", "SetText", type= "string" )
#浮動小数点数型
cmds.addAttr( "ObjName", longName = "addAttrName", attributeType ="float")
cmds.setAttr( "ObjName.BodySizeRatioa", 753 )

#ロケータ作成
if not cmds.objExists( "LocatorName" ):
    cmds.spaceLocator( name = "LocatorName" )

#トランスフォームノード作成
cmds.createNode( "transform", name = "Pos" )

#Xフォーム取得
cmds.xform( vSauce, worldSpace = True, translation = True, q = True )#[rotation,scale]

#ピボットのみを位置合わせする
cmds.matchTransform( "locator1", "locator2", pivots = True )

#親子付け
cmds.parent( oControllerName, "rig_root" )
#親子付けを外す(:Root直下の子にする)
cmds.parent( oControllerName, world=True )

#親を取得
oParent = cmds.listRelatives( lRigList[0], parent =True, path =True )[0]

#子を取得
lChildren = cmds.listRelatives( lSelectObj, children =True )

#シェイプを取得
oShape = cmds.listRelatives( lSelectObj, shapes =True )[0]

#シーン直下にあるノードを取得
lRoots = cmds.ls( assemblies = True )

#エクスプレッション作成
cmds.expression( string = "pSphere2.shearXY = decomposeMatrix1.outputShearX", name ="expression_" )

#接続されているコンストレインノードを取得
oScaleConstraint = list( set( cmds.listConnections( oItem, source =True, destination =False, type = "scaleConstraint" ) ))[0]#一度set型にしてリスト内重複を消す力技

#指定のオブジェクトの存在を確認
if not cmds.objExists( "etc" ):

#ノードタイプを取得
cmds.nodeType( cmds.ls( selection = True )[0] )

#追加アトリビュートを取得
lUserAttr = cmds.listAttr( oMirrName +"_UP_cont", userDefined =True )

#リファレンスの内容を取得
cmds.referenceQuery( "RefObjRN", nodes =True )

#ファイルパスを取得
cmds.file( sceneName =True, query =True )

#シーン名を取得
cmds.file( sceneName =True, shortName =True, query =True )

#バウンディングボックスサイズを取得
#ローカル
cmds.xform( "pSphere1", boundingBox =True, query =True, relative =True )
#ワールド
cmds.exactWorldBoundingBox( "pSphere1" )

#フィルターイクスパンドによる取得
cmds.filterExpand( selectionMask = 12 )#ポリゴン

#接続されたマテリアルを取得
def fGetMaterials( vMesh ):
    oSP = cmds.listRelatives( vMesh, shapes =True)
    oSE = cmds.listConnections( oSP, source =False, type ="shadingEngine")
    return cmds.ls( cmds.listConnections( oSE[0], source =True ), materials =True )



#リフレッシュ(再描画)
cmds.refresh( force =True )

#描画の更新を止める
cmds.refresh( suspend =True )
cmds.refresh( suspend =False )#Offにする事で再開

#MELの実行
import maya.mel as mel
mel.eval('HypergraphHierarchyWindow;')


#アニメーション
#アニメーションカーブのオフセット
cmds.selectKey( "root_rotateZ", addTo =True, keyframe =True )
cmds.keyframe( animation ="keys", relative =True, valueChange = -90 )


#UI
#テキストボックス作成
cmds.textField( "tTF_Name" ,text= "Text_Strings")

#テキストボックス内の情報を取得
oGetText = cmds.textField( "tTextBoxName", query = True, text = True )

#数値専用テキストボックス作成(フロートフィールド)
cmds.floatField( "tControllerSize" ,value= 1, precision =1,)

#数値専用テキストボックス内の情報を取得
oSize = cmds.floatField( "tControllerSize", query = True, value = True )

#ダイアログアイコン
「question」、「information」、「warning」、「critical」

#長文表示用ウィンドウ
oLS_Window = cmds.window( title="paneLayout", iconName='Short Name', widthHeight=(400, 300) )
cmds.paneLayout()
cmds.scrollField( editable=False, wordWrap=True, text= "長文\n長い文章を表示させたい場合の窓\nスクロールバーにも対応" )
cmds.showWindow( oLS_Window )

#ネームスペース
#ネームスペースの有無を確認
if not cmds.namespace( exists ="NS" ):

#ネームスペースを作成
cmds.namespace( addNamespace ="NS" )

#カレントネームスペースにセットする
cmds.namespace( setNamespace =":NS" )
#※ネームスペース有でFBXを読み込むには、対象のネームスペースをカレントにする必要がある

#カレントネームスペースを直下(Root)にする
cmds.namespace( setNamespace = ":" )
#※ネームスペースのセットは基本子にしか出来ないが":"を指定すると直下を設定出来る

#ネームスペースを削除する
cmds.namespace( removeNamespace = "NS" )

#ビューポート(モデルパネル)
#アクティブビューポートを取得(こんな泥臭い事しないと解らないのか?)
def fActivePanel():
    for oMP in cmds.getPanel( type='modelPanel' ):
        if cmds.modelEditor( oMP, activeView =True, query =True ):
            return oMP

#ライティング・フラットライト
cmds.modelEditor( fActivePanel(), edit =True, displayLights ="flat", displayTextures =True, displayAppearance ="smoothShaded" )

#パネル・カメラを変更
cmds.modelEditor( fActivePanel(), edit =True, camera ="L_front" )

#レンダラ・ポリゴンのみ表示
cmds.modelEditor( fActivePanel(), edit =True, polymeshes =True, nurbsCurves =False, joints =False, ikHandles =False, locators =False )


#ファイル
#インポート
cmds.file( oPath, i =True, force =True, ignoreVersion =True, options ="v=0" )

#エクスポートセレクテッド
cmds.file( oPath, exportSelected =True, type ="mayaAscii", options ="v=0;", preserveReferences =True )

#保存
cmds.file( rename = "D:/" )#別名保存をするには先にシーン名を変更してから保存する
cmds.file( save =True, force =True, ignoreVersion =True, options ="v=0" )

#リファレンスモデルとして読み込み
cmds.file( "D:/Replacement.ma", reference =True, ignoreVersion =True, mergeNamespacesOnClash =True, namespace =":", options ="v=0;" )

#リファレンスモデルの入れ替え
cmds.file( "D:/Replacement.ma", loadReference ="TargetRN", options ="v=0;" )

#スタンドアロン アプリケーション
#Mayaを立ち上げずに処理を行う事が出来ます
import maya.standalone
maya.standalone.initialize()

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

fFindDistance( "locator1", "locator2" )


#ウィンドウを開く
cmds.PreferencesWindow()#プリファレンス
cmds.HypergraphHierarchyWindow()#ハイパーグラフ
cmds.NodeEditorWindow()#ノード エディタ
cmds.GraphEditor()#グラフ エディタ
cmds.TimeEditorWindow()#タイム エディタ


#初期シェーディング グループのロックを解除する
cmds.lockNode( "initialShadingGroup", lock =False, lockUnpublished =False )
#ポリゴンを作成しても表示されないエラーの対処



関連-------------------------------------
Python_ネイティブ機能メモ
Python_エラーメモ
Python_xlrd機能メモ
バッチ作成メモ
Python_MAYA_ちょっとしたツール集
MAYA Python どっ基礎講座
編集
コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« BLACKよ新年の挨拶をこめて 2019 | トップ | Python_ネイティブ機能メモ »
最新の画像もっと見る

コメントを投稿

MAYA_Pyhon...」カテゴリの最新記事