I don't know for sure if this will help, but its easy to try, so I thought I'd mention it anyway, since it caused all sorts of problems in my rigging system.
Have a look at the Modify|Transformation Tools|Move Tool|Options and under Joint Orient Settings, uncheck Automatically Orient Joints.
David
Binxx
11-07-2012, 07:34 PM
Seems like it isn't working. I have a feeling its an issue with this expression
namespace -setNamespace ":"; $worldSpacePos = `xform -q -ws -translation SingleJointSegment__instance_2:module_transform`;
$worldSpaceOrient = `xform -q -ws -rotation SingleJointSegment__instance_2:module_transform`;
SingleJointSegment__instance_2:module_transform_mirrorHelper.translateX = SingleJointSegment__instance_2:module_transform.translateX;
SingleJointSegment__instance_2:module_transform_mirrorHelper.translateY = SingleJointSegment__instance_2:module_transform.translateY;
SingleJointSegment__instance_2:module_transform_mirrorHelper.translateZ = SingleJointSegment__instance_2:module_transform.translateZ;
SingleJointSegment__instance_2:module_transform_mirrorHelper.rotateX = SingleJointSegment__instance_2:module_transform.rotateX;
SingleJointSegment__instance_2:module_transform_mirrorHelper.rotateY = SingleJointSegment__instance_2:module_transform.rotateY;
SingleJointSegment__instance_2:module_transform_mirrorHelper.rotateZ = SingleJointSegment__instance_2:module_transform.rotateZ;
SingleJointSegment__instance_2:module_transform_mirrorHelper.translateX = $worldSpacePos[0];
SingleJointSegment__instance_2:module_transform_mirrorHelper.rotateX = $worldSpaceOrient[0];
SingleJointSegment__instance_2:module_transform_mirrorHelper.translateY = $worldSpacePos[1];
SingleJointSegment__instance_2:module_transform_mirrorHelper.rotateY = $worldSpaceOrient[1];
SingleJointSegment__instance_2:module_transform_mirrorHelper.translateZ = $worldSpacePos[2];
SingleJointSegment__instance_2:module_transform_mirrorHelper.rotateZ = $worldSpaceOrient[2];
SingleJointSegment__instance_2:module_transform_mirrorHelper.globalScale = SingleJointSegment__instance_2:module_transform.globalScale;
simply run the script that makes this expression work its pretty simple.
The expression create is created via this python script.
def setupSymmetryMoveForObject(self, obj, mirrorObj, axis, translation = True, orientation = False, globalScale = False):
duplicateObject = cmds.duplicate(obj, parentOnly = True, inputConnections = True, name = obj+"_mirrorHelper")[0]
emptyGroup = cmds.group(empty = True, name = obj + "mirror_scale_grp")
cmds.parent(duplicateObject, emptyGroup, absolute = True)
scaleAttribute = ".scale" + axis
cmds.setAttr(emptyGroup+scaleAttribute, -1)
expressionString = "namespace -setNamespace \":\";\n"
if translation:
expressionString += "$worldSpacePos = `xform -q -ws -translation " + obj + "`;\n"
if orientation:
expressionString += "$worldSpaceOrient = `xform -q -ws -rotation " + obj + "`;\n"
attrs = []
if translation:
attrs.extend([".translateX", ".translateY", ".translateZ"])
if orientation:
attrs.extend([".rotateX", ".rotateY", ".rotateZ"])
for attr in attrs:
expressionString += duplicateObject+attr + " = " + obj + attr + ";\n"
i = 0
for axis in ["X", "Y", "Z"]:
if translation:
expressionString += duplicateObject+".translate" +axis + " = $worldSpacePos["+str(i)+"];\n"
if orientation:
expressionString += duplicateObject+".rotate" +axis + " = $worldSpaceOrient["+str(i)+"];\n"
i += 1
if globalScale:
expressionString += duplicateObject+".globalScale = " + obj+".globalScale;\n"
expression = cmds.expression(n=duplicateObject + "_symmetryMoveExpression", string=expressionString)
constraint = ""
if translation and orientation:
constraint = cmds.parentConstraint(duplicateObject, mirrorObj, maintainOffset = False, n = mirrorObj + "_symmetryMoveConstraint")[0]
elif translation:
constraint = cmds.pointConstraint(duplicateObject, mirrorObj, maintainOffset = False, n = mirrorObj + "_symmetryMoveConstraint")[0]
elif orientation:
constraint = cmds.orientConstraint(duplicateObject, mirrorObj, maintainOffset = False, n = mirrorObj + "_symmetryMoveConstraint")[0]
if globalScale:
cmds.connectAttr(duplicateObject+ ".globalScale", mirrorObj+ ".globalScale")
utils.addNodeToContainer("symmetryMove_container", [duplicateObject, emptyGroup, expression, constraint], ihb = True)
vBulletin v3.0.5, Copyright ©2000-2013, Jelsoft Enterprises Ltd.