Mayaのカメラを切り替えるウィンドウを作る

こんにちは!Rhinoです。
今日はMayaのカメラを切り替える際はどうしていらっしゃいますか?
Panelsメニューから切り替えていらっしゃいます?
この作業がやや面倒だと思いましたので、解決するためのPythonスクリプトを書いてみましたのでご紹介です。

# -*- coding: utf-8 -*-
import maya.cmds as cmds

def switchCamera( *args ):
	selectItem = cmds.textScrollList( 'tsl_cameraList', q=True, si=True )
	cmds.lookThru( selectItem )

def updateCameraList( *args ):
	camera = cmds.listCameras()
	cmds.textScrollList( 'tsl_cameraList', e=True, ra=True )
	cmds.textScrollList( 'tsl_cameraList', e=True, a=camera )

def createGUI( *args ):
	winTitle = 'winSwitchCamera'
	winTitleName = 'Switch Camera'
	
	winWidth = 200
	ctrWidth = 190
	ctrHeight = 120
	
	if cmds.window( winTitle, exists=True ):
		cmds.deleteUI( winTitle, window=True )
    
	winSwitchCamera = cmds.window( winTitle, title=winTitleName, w=winWidth )
	
	cmds.columnLayout()
	
	cmds.separator()	
	
	cmds.textScrollList( 'tsl_cameraList', w=ctrWidth, h=ctrHeight, sc=switchCamera )
	
	cmds.separator()
	
	cmds.button( l='Reload', w=ctrWidth, c=updateCameraList )
	
	cmds.separator()
	
	cmds.setParent( '..' )
	
	cmds.showWindow( winSwitchCamera )
	
def main():
	createGUI()
	updateCameraList()
	
if __name__ == '__main__':
	main()

カメラを切り替えるコマンド

MayaのPythonを使ってカメラを切り替えるためにlookThruというコマンドが用意されていますので、これを使うのが簡単そうです。
使い方は次のように引数にカメラを与えてあげて設定します。

cmds.lookThru( 'camera1' )
def switchCamera( *args ):
	selectItem = cmds.textScrollList( 'tsl_cameraList', q=True, si=True )
	cmds.lookThru( selectItem )

テキストスクロールで選択したカメラをまずは取得します。
テキストスクロールのアイテムを取得するにはselectItem(si)プロパティを使います。

selectItem = cmds.textScrollList( 'tsl_cameraList', q=True, si=True )

次に取得したアイテム(これがカメラになります)を例文のようにlookThruに渡してあげます。

cmds.lookThru( selectItem )

テキストスクロールにシーン中のカメラを読み込む

テキストスクロールにシーン中のカメラを読み込みための関数を作成しました。
この関数の中でテキストスクロールのリストの更新を行います。

def updateCameraList( *args ):
	camera = cmds.listCameras()
	cmds.textScrollList( 'tsl_cameraList', e=True, ra=True )
	cmds.textScrollList( 'tsl_cameraList', e=True, a=camera )

まずはシーン中のカメラのリストをlistCamerasで取得します。

camera = cmds.listCameras()

テキストスクロールのアイテムを一度すべて削除します。
‘tsl_cameraList’はこのテキストスクロールを判別するための名前です。

cmds.textScrollList( 'tsl_cameraList', e=True, ra=True )

最後にappend(a)プロパティに取得しておいたカメラを渡して追加します。
既にテキストスクロールにカメラが表示されている際に追加してしまいますと重複してしまいますので、一度削除したわけです。

cmds.textScrollList( 'tsl_cameraList', e=True, a=camera )

結構簡単に作れて、わざわざPanelsから選ばなくても良くなりますので、皆さんも作ってみてはいかがでしょうか。
では、また!

コメント

タイトルとURLをコピーしました