ON-BLOG

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

親にグループを作ってあげる

タイトル通りで、急遽家でも必要になった為
作りました。
半端なやつですが、メモようにこちらにもアップ。

リグ作るときに、トランスフォームを「0」にする為、親のオフセット値を入れるとおもいます。
それの自動化版です。
特になにもしてない、マクロです。

こんな状態のやつが
f:id:tommy_on:20170914011059p:plain
実行すると、
f:id:tommy_on:20170914011130p:plain
こうなります。


以下コード

import maya.cmds as cmds
import maya.OpenMaya as OpenMaya

def DAGPath( objectName ):
	sel = OpenMaya.MSelectionList()
	sel.add( str( objectName ) )
	obj = OpenMaya.MDagPath()
	sel.getDagPath(0,obj)
	return obj

Sel = cmds.ls(sl = True)

for i in Sel:
	DAG = DAGPath(i)
	Full = DAG.fullPathName()

	Grp = cmds.group(empty = True, world = True)
	Point = cmds.pointConstraint(Full,Grp)
	Ori = cmds.orientConstraint(Full,Grp)
	
	cmds.delete(Point,Ori)
	Pa = cmds.listRelatives(i,allParents=True)
	if not Pa:
		cmds.parent(Full,Grp)
	else:
		cmds.parent(Grp,Pa)
		cmds.parent(Full,Grp)
	cmds.setAttr( Grp + ".tx",lock=True)
	cmds.setAttr( Grp + ".ty",lock=True)
	cmds.setAttr( Grp + ".tz",lock=True)
	cmds.setAttr( Grp + ".rx",lock=True)
	cmds.setAttr( Grp + ".ry",lock=True)
	cmds.setAttr( Grp + ".rz",lock=True)
	#cmds.setAttr( Grp + ".rz",lock=True, keyable = False , channelBox = False)
	cmds.rename(Grp,i + "_Grp")
	

cmds.select(Sel)

パスが変わるので、OpenMaya使ってパスを管理してます。
※使わくてもできたかも‥


以上メモかわりでした。