ON-BLOG

CGのこと、あれこれ書いてます。

小物メモ

MacBookAirのデスクトップに放置してた、スクリプトをメモ代わりにここに残そうかと。

●SpeedChange
FPSを簡単に変えるスクリプト
モーション作成時に、一々変更するのが
面倒だったので作ったと思います。
f:id:tommy_on:20180501231151p:plain

# -*- encoding: utf-8 -*-
import maya.cmds as cmds
import maya.mel as mel

def SetTime(item):
    print item
    if item == "realtime":
        cmds.playbackOptions( edit=True , ps=1.0)
    elif item == "3x":
        cmds.playbackOptions( edit=True , ps=3.0)
    elif item == "2x":
        cmds.playbackOptions( edit=True , ps=2.0)
    elif item == "1/2x":
        cmds.playbackOptions( edit=True , ps=0.5)
    elif item == "1/3x":
        cmds.playbackOptions( edit=True , ps=0.3)
    elif item == "1/4x":
        cmds.playbackOptions( edit=True , ps=0.2)
    elif item == "1/5x":
        cmds.playbackOptions( edit=True , ps=0.1)
             
def main():
    ChangeFPS_window = "ChangeFPS"
    WindowWidth_Size = 170
    WindowHight_Size = 60

    if cmds.window(ChangeFPS_window,exists=True):
        cmds.deleteUI(ChangeFPS_window,window=True)
    MakeWindow = cmds.window(ChangeFPS_window,title=ChangeFPS_window,sizeable=False,mxb=False,mnb=False,wh=[WindowWidth_Size,WindowHight_Size])

    cmds.columnLayout(w=WindowWidth_Size)
    cmds.text(l=u"選択した設定に、再生スピードを変更します。")
    cmds.optionMenu( label='Speed', changeCommand=SetTime)
    cmds.menuItem( label='realtime' )
    cmds.menuItem( label='3x' )
    cmds.menuItem( label='2x' )
    cmds.menuItem( label='1/2x' )
    cmds.menuItem( label='1/3x' )
    cmds.menuItem( label='1/4x' )
    cmds.menuItem( label='1/5x' )
    cmds.showWindow()
main()

●ネームスペース取得Tips
これで取得できるのが知らなかったのでメモ

# -*- encoding: utf-8 -*-
import maya.cmds as cmds
NameSpace = cmds.namespaceInfo(recurse=1,listOnlyNamespaces=1)
NameSpace.remove(u'UI')
NameSpace.remove(u'shared')
print NameSpace


●スキンクラスターあれこれ取得
これはかなり昔のやつ。
一応メモ。

# -*- coding: utf-8 -*-
from maya import cmds
selection = cmds.ls(sl=True)
shapes = cmds.listRelatives(selection[0],s=True,pa=True,type='mesh')

if not shapes:
	cmds.error('Node has no shape')
else:
	srcSkinCluster = cmds.listConnections(shapes[0]+'.inMesh',s=True,d=False)
	#スキンクラスター
	srcSkinCluster = srcSkinCluster[0]
	#スキング方法
	skinningMethod = cmds.getAttr(srcSkinCluster+'.skm')
	#ドロップオフ率
	dropoffRate = cmds.getAttr(srcSkinCluster+'.dr')
	#最大インフルエンス数の保持
	maintrainMaxInfluences = cmds.getAttr(srcSkinCluster+'.mmi')
	#最大インフルエンス数
	maxInfluences = cmds.getAttr(srcSkinCluster+'.mi')
	#ジョイントとジオメトリのポイントの間の最短距離
	bindMethod = cmds.getAttr(srcSkinCluster+'.bm')
	#ウェイトの正規化
	normalizeWeight = cmds.getAttr(srcSkinCluster+'.nw')
	#インフルエンスオブジェクト
	influences = cmds.skinCluster(srcSkinCluster,q=True,inf=True)
	print dropoffRate

まだあるけど、一旦これだけアップ。
以上。