見出し画像

【Script】私用スクリプト集【Maya】


はじめに

みなさんこんにちは。涼海と申します。
趣味でスクリプトを書き始めたので、ここでは自分用に書いたスクリプトをメモがてら置いておこうと思ってます。中身は基本Python3です。
よろしくお願いいたします。

もし使いたいという方がいらっしゃいましたら常識の範囲内で使っていただいて大丈夫です。
しかし、このスクリプトを使用して起きたトラブルや損害等の責任は負いませんため、ご了承の上でよろしくお願いいたします。

私用スクリプト

Toggle Camera

perspカメラとレンダリング用カメラ(名前を「rend_cam」に変更しておく)をトグルする

from maya import cmds

currentCam = cmds.lookThru("persp", q=True)
rendCam = "rend_cam"
if currentCam == "persp":
    cmds.lookThru(rendCam)
else:
    cmds.lookThru("persp")

Toggle Playblast Viewport

ビューポート表示をプレイブラスト用とアニメーション作業用でトグルする

from maya import cmds

activeView = cmds.getPanel(withFocus=True)

if cmds.modelEditor(activeView, q=True, nurbsCurves=True) == True:
    cmds.modelEditor(activeView, e=True, allObjects=False)
    cmds.modelEditor(activeView, e=True, hos=False)
    cmds.modelEditor(activeView, e=True, grid=False)
    cmds.modelEditor(activeView, e=True, manipulators=False)
    cmds.modelEditor(activeView, e=True, selectionHiliteDisplay=False)

    cmds.modelEditor(activeView, e=True, polymeshes=True)
    cmds.modelEditor(activeView, e=True, nurbsSurfaces=True)
    cmds.modelEditor(activeView, e=True, subdivSurfaces=True)
    cmds.modelEditor(activeView, e=True, pluginObjects=("gpuCacheDisplayFilter", 1))
    cmds.modelEditor(activeView, e=True, pluginShapes=True)
else:
    cmds.modelEditor(activeView, e=True, allObjects=True)
    cmds.modelEditor(activeView, e=True, hos=True)
    cmds.modelEditor(activeView, e=True, grid=True)
    cmds.modelEditor(activeView, e=True, manipulators=True)
    cmds.modelEditor(activeView, e=True, selectionHiliteDisplay=True)

Toggle ResolutionGate

現在アクティブなビューのResolutionGateのオンオフをトグルする

from maya import cmds

currentCam = cmds.lookThru(q=True)

if cmds.getAttr(currentCam + ".displayResolution") == False:
    cmds.setAttr(currentCam + ".displayResolution", 1)
    cmds.setAttr(currentCam + ".displayGateMask", 1)
    cmds.setAttr(currentCam + ".displayGateMaskOpacity", 1)
    cmds.setAttr(currentCam + ".displayGateMaskColor", 0, 0, 0, type="double3")
    cmds.setAttr(currentCam + ".overscan", 1.3)
else:
    cmds.setAttr(currentCam + ".displayResolution", 0)
    cmds.setAttr(currentCam + ".displayGateMask", 0)
    cmds.setAttr(currentCam + ".overscan", 1)

TimeSlider CopyKey(未完成)

タイムスライダー上のキーをコピーする(単一オブジェクトのみ)

from maya import cmds

selectObjects = cmds.ls(selection=True)
currentFrame = cmds.currentTime(q=True)

for selectObject in selectObjects:
    cmds.copyKey(selectObject, time=(currentFrame, currentFrame))

TimeSlider PasteKey(未完成)

タイムスライダー上のキーをペーストする(単一オブジェクトのみ)

from maya import cmds

selectObjects = cmds.ls(selection=True)
currentFrame = cmds.currentTime(q=True)

for selectObject in selectObjects:
    cmds.pasteKey(selectObject, time=(currentFrame, currentFrame))

Switch Move Axis

Move Toolの軸を「World」「Ojbect」「Parent」の3つで変更する

from maya import cmds

currentContext = cmds.manipMoveContext("Move", q=True, mode=True)

if currentContext == 2:
    cmds.manipMoveContext("Move", e=True, mode=0)
elif currentContext == 0:
    cmds.manipMoveContext("Move", e=True, mode=1)
elif currentContext == 1:
    cmds.manipMoveContext("Move", e=True, mode=2)
else:
    cmds.manipMoveContext("Move", e=True, mode=2)

Switch Rotate Axis

Rotate Toolの軸を「Object」「World」「Gimbal」の3つで変更する

from maya import cmds

currentContext = cmds.manipRotateContext("Rotate", q=True, mode=True)

if currentContext == 0:
    cmds.manipRotateContext("Rotate", e=True, mode=1)
elif currentContext == 1:
    cmds.manipRotateContext("Rotate", e=True, mode=2)
elif currentContext == 2:
    cmds.manipRotateContext("Rotate", e=True, mode=0)
else:
    cmds.manipRotateContext("Rotate", e=True, mode=0)

Prop Controller Swing

バットや剣など、両手持ちプロップのコントローラーを作成する。
メインコントローラー > プロップ > サブコントローラー の順でペアレントされているように動く。

  1. メインコントローラー」「サブコントローラー」「プロップ」の順で選択

  2. 以下を実行

import szm_propCtlSwing
import importlib

importlib.reload(szm_propCtlSwing)
szm_propCtlSwing.propCtlSwing()

参考

Switch Move(Rotate) Axis

さいごに

もし「これ使えないよ!」「使い方教えて!」というものがありましたら、私のXに連絡いただけたらと思います。

では、また逢う日まで。

この記事が気に入ったらサポートをしてみませんか?