I appended a rigged object but rig loses functions after moving in object mode[video]

Here is a video of me showcasing the problem; https://youtu.be/eUDM_mIPq3Y

When I first append the bow and test the rig in pose mode it works just as it should; when I pull the string, arms also move back but when I move and change the scale of the bow, bone constraints stop functioning. Applying location, rotation and scale does not work. Why does this happen and is there a way to fix it ? Or should I try something else than appending ?

Additional question; is there a way to edit both of the rigs in pose mode ? I’m making this for a game and I want to synch bow animations and character animations. Or is there a better way to do this ?

The problem I see is you are manipulating the bow and armature in object mode instead of just the armature in pose mode. It also looks like the bow armature is missing a very key bone, the root or main bone. A properly setup root bone will make all of the children bones in the rig inherit the scale, location and rotation of the root. This makes it possible to use that rig at any scale, location or rotation in any scene.

Separate armatures for your character and bow will mean separate actions. You can use the dopesheet to sync keyframes between separate actions.

I’ll let someone else take your game related question. It’s not my thing, but there are a few members here that know the ins and outs for those situations. It might be best if you let us know what game engine you are building this for.

Good luck!

Thanks a lot for your answer. All of the bones in the bow rig is parented to the bone that comes out of the handle of the bow and they all inherit its location, rotation etc. But I’m not sure parenting all of the bones to one bone makes that one bone considered a root bone. Animating without moving in object mode is also another option but that makes appending kinda pointless. Maybe there is a way to combine rigs, do you think that would work ? And thanks for reminding me the dopesheet, I forgot it would be useful in a situation like this. Will just use dopesheet if combining te rigs doesn’t work.

And game engine is Unity by the way, any advice from people who have done something similar to this is appreciated.

I would consider that the root or main bone. One way to check is to scale the bone, rotate it and change it’s location in pose mode. If the rest of the rig works at any scale, location or rotation, you have a good working root bone. Just resize the bow, place it in your scene and key that bone on the first frame of your action. Done deal. If it does not work, at any scale location or rotation, some tweaks to the constraints or parenting may be needed.

If you could upload a blend with your armature, I could take a look. I don’t need the mesh items. Having the string available might help. Some proxy meshes as stand ins for your bow model would help too, but not necessary.

You should never have to change your rigs in object mode. A proper root bone and a rig designed with the root bone in mind makes any object mode manipulation pointless. Just change the location, rotation and scale of the root bone in pose mode and begin your animation.

I have a tutorial planned explaining the root bone and it’s uses in one of my Rigify tutorials. Unfortunately, it’s not complete yet. I’ll try to get it done and uploaded to show it’s proper use. I consider it the most important bone in any rig.

If no one here chimes in, there are some good people in the CgCookie community forums that have a lot of experience and knowledge about Blender to Unity workflows.

Good luck!

Edit: Since your post count is not over ten, you are under moderation and cannot upload files to this site. A prefered site to upload is pasteall.org. There is a tab for blends. Upload your file there and post the link here.

Thank you so much for your help man. I uploaded the .blend file to dropbox, you can download it from here: https://www.dropbox.com/s/ench01q51ir7lqu/bowRig.blend?dl=0

There is actually not much wrong with the rig though, I just couldn’t figure out why it loses functions after moving in object mode but I might not even need to move it apparently. And I do use CgCookie, I learned how to properly export my rigified character to Unity from there :stuck_out_tongue:

I took a quick look before I head to work. Change a couple things and you should be good to go.

On your limit constraints, check the For Transform box. Do this for all limit type constraints. (top-limit, bottom-limit, and string bones). Also, change the limit distance constraints to Local Space to Local Space instead of World to World. (top-limit and bottom_limit bones)

After that, just scale your main bone and place it anywhere in the scene and start your animation. (Pose mode) Everything should work.

Good luck!

Unfortunately did not work, I also realized the problem isn’t caused by changing the location, it is caused by changing the scale. When I replaced World to World with Local Space to Local Space limit bones lost their functions. But now that I know it is happening because of changing the scale, I will just make the character model bigger instead of making the bow smaller :stuck_out_tongue:

It worked fine for me. I’ll double check after my shift. I may have forgotten to list a step.

I made the character bigger and added bone constraints to bow root in order to place it in the hand, works fine for now. Thanks a lot for the help man no need to bother digging deeper :stuck_out_tongue:

You are right, I messed up. I did not even notice that I had broken the limbs. I was focused on the string. I guess the coffee had not taken effect…

I know you are happy to have figured this out. My concern is, the “fix” may be temporary and you may run into this issue again.

Here is a proper fix with a working root/main bone.

I replaced the limit distance constraint with two transformation constraints. Feel free to adjust the values in the transformation constraints. It looks like the bow is bending properly, but you can be the judge.

I also labeled each constraint. Positive Y and Negative Y. When the string moves into local negative y values the limit bones move in local z to “squish” together a bit. When the string is moved in local positive y, the limit bones move in both local y and local z to create a good target for the track to constraints on the top_IK.001 and top_IK.002 bones.

Also, I moved all mechanism bones (not needed for animation) to layer two in the skeleton bone layers. Only two bones are on layer one, the main and string bone. All mechanism bone transforms have been locked and appropriate transform locks have been added to the control bones.

Good luck!


bowRig.DP.blend (518 KB)

Man are you a saint, thanks SO much for this! I will watch your tutorials when I have the time because I think I can learn from you. And may I ask are you doing 3D modelling as a job ?

You are welcome. No. I am not a professional, strictly a hobbyist.