def aimSnap (obj,target,aimVector = [0,0,1],upVector = [0,1,0],worldUp = [0,1,0]): """ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DESCRIPTION: Snaps with a point constraint style ARGUMENTS: obj(string) target(string) aimVector(list) upVector(list) worldUp(list) - default is [0,1,0] RETURNS: Nothin >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> """ for o in obj,target: assert mc.objExists(o), "'%s' doesn't exist. Aborting aimSnapUpObject"%o aimVector = dictionary.validateDirectionVector(aimVector) upVector = dictionary.validateDirectionVector(upVector) worldUp = dictionary.validateDirectionVector(worldUp) assert type(aimVector) is list,"invalid aimVector argument" assert type(upVector) is list,"invalid upVector argument" assert type(worldUp) is list,"invalid worldUp argument" aimConstraint = mc.aimConstraint([target],[obj],aimVector=aimVector,upVector = upVector,worldUpVector = worldUp, worldUpType='vector') mc.delete(aimConstraint[0])
def aimObjects(objList, objAim, objUp, worldUp, **kw): """ Aim snap tool function for a list of objects Arg: objList(list) -- list of objects objAim(string) -- string format of aim axis. ex. 'x+' objUp(string) -- string format of up axis. worldUp(string) -- string format of world up Kw: any keyword arguments for an aim constraint """ worldUpType = kw.pop('worldUpType', 'vector') for o in objList: assert mc.ls(o, type='transform' ), "'%s' doesn't have a transform, erroring out." % o assert len( objList ) >= 2, "moveAimObjects should only be used on lists of objects more than two items" objAim = dictionary.validateDirectionVector(objAim) objUp = dictionary.validateDirectionVector(objUp) worldUp = dictionary.validateDirectionVector(worldUp) assert type(objAim) is list, "invalid objAim argument" assert type(objUp) is list, "invalid objUp argument" assert type(worldUp) is list, "invalid worldUp argument" pairList = lists.parseListToPairs(objList) for pair in pairList: #>>> Set up constraints constraintBuffer = mc.aimConstraint(pair[1], pair[0], maintainOffset=False, weight=1, aimVector=objAim, upVector=objUp, worldUpVector=worldUp, worldUpType=worldUpType, **kw) mc.delete(constraintBuffer) #>>> For the last object in the chain for obj in objList[-1:]: constraintBuffer = mc.orientConstraint(objList[-2], obj, maintainOffset=False, weight=1) mc.delete(constraintBuffer)
def moveAimSnap(obj,target,aimTarget,vector): """ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DESCRIPTION: Snaps with a point constraint style ARGUMENTS: obj(string) target(string) aimTarget(string) vector(list) - [float, float, float] RETURNS: Nothin >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> """ for o in obj,target,aimTarget: assert mc.objExists(o), "'%s' doesn't exist. Aborting aimSnapUpObject"%o vector = dictionary.validateDirectionVector(vector) assert type(vector) is list,"invalid vector argument" movePointSnap (obj,target) aimSnap (obj,aimTarget,vector)
def moveAimSnap(obj, target, aimTarget, vector): """ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DESCRIPTION: Snaps with a point constraint style ARGUMENTS: obj(string) target(string) aimTarget(string) vector(list) - [float, float, float] RETURNS: Nothin >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> """ for o in obj, target, aimTarget: assert mc.objExists( o), "'%s' doesn't exist. Aborting aimSnapUpObject" % o vector = dictionary.validateDirectionVector(vector) assert type(vector) is list, "invalid vector argument" movePointSnap(obj, target) aimSnap(obj, aimTarget, vector)
def aimObjects(objList,objAim,objUp,worldUp,**kw): """ Aim snap tool function for a list of objects Arg: objList(list) -- list of objects objAim(string) -- string format of aim axis. ex. 'x+' objUp(string) -- string format of up axis. worldUp(string) -- string format of world up Kw: any keyword arguments for an aim constraint """ worldUpType = kw.pop('worldUpType','vector') for o in objList: assert mc.ls(o,type = 'transform'),"'%s' doesn't have a transform, erroring out."%o assert len(objList) >= 2,"moveAimObjects should only be used on lists of objects more than two items" objAim = dictionary.validateDirectionVector(objAim) objUp = dictionary.validateDirectionVector(objUp) worldUp = dictionary.validateDirectionVector(worldUp) assert type(objAim) is list,"invalid objAim argument" assert type(objUp) is list,"invalid objUp argument" assert type(worldUp) is list,"invalid worldUp argument" pairList = lists.parseListToPairs(objList) for pair in pairList: #>>> Set up constraints constraintBuffer = mc.aimConstraint(pair[1],pair[0],maintainOffset = False, weight = 1, aimVector = objAim, upVector = objUp, worldUpVector = worldUp, worldUpType=worldUpType,**kw) mc.delete(constraintBuffer) #>>> For the last object in the chain for obj in objList[-1:]: constraintBuffer = mc.orientConstraint(objList[-2],obj,maintainOffset = False, weight = 1) mc.delete(constraintBuffer)
def aimSnap(obj, target, aimVector=[0, 0, 1], upVector=[0, 1, 0], worldUp=[0, 1, 0]): """ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DESCRIPTION: Snaps with a point constraint style ARGUMENTS: obj(string) target(string) aimVector(list) upVector(list) worldUp(list) - default is [0,1,0] RETURNS: Nothin >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> """ for o in obj, target: assert mc.objExists( o), "'%s' doesn't exist. Aborting aimSnapUpObject" % o aimVector = dictionary.validateDirectionVector(aimVector) upVector = dictionary.validateDirectionVector(upVector) worldUp = dictionary.validateDirectionVector(worldUp) assert type(aimVector) is list, "invalid aimVector argument" assert type(upVector) is list, "invalid upVector argument" assert type(worldUp) is list, "invalid worldUp argument" aimConstraint = mc.aimConstraint([target], [obj], aimVector=aimVector, upVector=upVector, worldUpVector=worldUp, worldUpType='vector') mc.delete(aimConstraint[0])