View Full Version : Rotation copy from a bone to an object?
If I have two objects I select both and ctr + c to copy rotation from active to the other selected object. So if the selected object was rotated the active object rotates to match the other.
But how can i copy the orientation of the axis (rotation) from a bone in an armature to an object? I can't figure a way to do it.
|
|
Well, I have figured a workaround:
I have a Bone "Spine4" in a "Armature".
I have an object "Object1" that I want set in the same exact orientation that the bone has.
Well, I create a cube "Cube1". Now I parent Object1 as a child of Cube1 (ctr + p).
To Cube1 add a constraint "Copy Rotation" and enter in the "OB:" edit box "Armature" and "Spine4" in the "BO:" edit box. You can see Cube1 and Object1 rotate to match Spine4 orientation. Now select Object1 and clear the parenting (Alt + P) selecting the "clear and keep the transformation" option when asked. Now delete Cube1 that was used as a dummy.
We have Object1 oriented the same that Spine4.
But... Is not there a way of do it in Blender with a "normal" way instead such a workaround?
FishB8
08-24-2009, 04:59 AM
Say for instance you want the Z rotation of the object to copy the z rotation of a bone within an armature.
-Select the object
-Go to the IPO window (Make sure you are viewing Object IPO type)
-From the list of channels on the right side of the window, select "RotZ"
-With the mouse in the IPO window, hit the "N" key to show the IPO transform properties panel. The rest is done inside this panel.
-Click the Button "Add Driver"
-For "Object" type in the Armature's name
-The Driver type will be "Object", change that to "Pose"
-This will give you the option to select a bone, type in the bone's name
-Change the "Driver Channel" to "RotZ"
Now the object will copy the z rotation of the bone to it's own z rotation
After you've rotated the bone to get the object and bone to where you want them, you can then click the "Remove" button in the transform properties panel within the IPO window. The object will retain it's transform, but will no longer be drive by the bone.
Each item in the IPO column can have it's own driver it you want to drive more than one transform property. You can also set a python script to be a driver as well.
sundialsvc4
08-24-2009, 01:23 PM
Also don't forget "Apply Rotation" and other things like that. You want to make certain that the object that's providing the rotation, and the object being rotated, are in proper alignment and that the object that's being rotated doesn't already carry some rotation of its own. (You want it to be "zero, zero, zero.")
Although the techniques being suggested in this thread may seem cumbersome, they really aren't.
Your technique, as you might have guessed, really didn't need the Cube1. Try it again and closely watch the (loc, rot) parameters that your Object1 winds up with, particularly when you clear the parenting . . .
FishB8
08-24-2009, 05:29 PM
Your technique, as you might have guessed, really didn't need the Cube1. Try it again and closely watch the (loc, rot) parameters that your Object1 winds up with, particularly when you clear the parenting . . .
His technique does need Cube1.
If he make the bone the parent of the Object, rotating the bone will rotate the Object around the bone rather than around it's own axis.
If you uses the constraint for the object to copy the bone's rotation, the object just references the bone's rotation transform. The Object's rotation transform doesn't actually change, so there is nothing to apply.
Say for instance you want the Z rotation of the object to copy the z rotation of a bone within an armature.
-Select the object
-Go to the IPO window (Make sure you are viewing Object IPO type)
-From the list of channels on the right side of the window, select "RotZ"
-With the mouse in the IPO window, hit the "N" key to show the IPO transform properties panel. The rest is done inside this panel.
-Click the Button "Add Driver"
-For "Object" type in the Armature's name
-The Driver type will be "Object", change that to "Pose"
-This will give you the option to select a bone, type in the bone's name
-Change the "Driver Channel" to "RotZ"
Now the object will copy the z rotation of the bone to it's own z rotation
After you've rotated the bone to get the object and bone to where you want them, you can then click the "Remove" button in the transform properties panel within the IPO window. The object will retain it's transform, but will no longer be drive by the bone.
Each item in the IPO column can have it's own driver it you want to drive more than one transform property. You can also set a python script to be a driver as well.
Hey thanks for helping!
I am still learning Blender and these "drivers" were in my list of things to learn in the near future.
CGTalk Moderation
08-24-2009, 08:13 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.
vBulletin v3.0.5, Copyright ©2000-2012, Jelsoft Enterprises Ltd.