I’m trying to create a loop that will cycle through a scene query for joints and create a locator on each joint, using python, any Ideas ?
you can just use the ls command:
allJoints = cmds.ls(type="joint")
this will select all joints in the scene
Thanks you !..actually it assigned all the joints in the scene to the allJoints variable as a list .
You kind of asked one thing in the title and something more in depth in the post.
This should do the trick (continuing from where peeker88 started)
allJoints = cmds.ls(type="joint")
for join in allJoints:
joint_position = cmds.xform(join, q=True, ws=True, t=True)
cmds.spaceLocator(a=True, p=joint_position)
So Im trying to do the same loop but for this one I want to create a group node for each finger joint and snap their pivots to the joints. Here is what I have so far. It needs work:
~FJoints = cmds.ls(“L_R*”, type=“joint”)
for jnt in FJoints:
joint_position = cmds.xform(jnt, q=True, ws=True, t=True)
groups = cmds.group( em=True, name=‘null1’ )
cmds.MatchTransform(groups, joint_position)~
not sure if matchTransform works in world space or object space. This is why I would use xform instead, where I can specify the space. Otherwise seems good. Are you working on an animation mirroring script?
I really like PyMel for this kind of stuff
import pymel.core as pm
joints = pm.ls('L_R*', type='joint')
for joint in joints:
group = pm.createNode('transform', name=f'{joint}_grp')
tr = joint.getTranslation(worldSpace=True)
group.setTranslation(tr, worldSpace=True)
You can also .getMatrix() and .setMatrix() on nodes if you want translate + rotate + scale together and it’s a bit nicer than using xform.
If you already have a large chunk of this built in cmds though then there might not be a good reason to switch to PyMel. In Maya 2024 it doesn’t come pre-installed and you have to pip-install it.