Help with Rigging a Bird's Wings

Hi all, I’ve been struggling with rigging a bird’s wing and finally managed to do so using the Piero’s course. But as soon as I switch my rig to Pose mode,{and Object Mode too} all the bones get offset even after resetting transforms {Alt + S/R/G} or W special menu etc.
I find that the rig looks fine in Armature>Skeleton>Rest Position {It matches what I set up in Edit Mode = What I want}

I suspected the MCH_armSpline but nothing changes even after applying scale/rotation and resetting the Hook modifier in edit mode.
The issue is that I can’t simply re-pose the bones because the deformation bones on the wings use constraints and drivers to drive the chains so matching them to the feather geometry is pretty hard as if not already a lot of work doing so in edit mode.

Is it fine to go ahead with skinning using RestPosition or should it always be done in Pose Position.
I’d really like to know the reason for this and Im out of options and desperate for a solution or work-around to this.
Attached is the character and armature if you want to look at it. Its 6MB…
Chicks_FurFeathers_Rigging_Pieroappnd.zip (5.3 MB)

I’m pretty sure that the constraint space set to world space is what’s causing the issues. If you set the constraint to local space it resembles the rest pose. It’s a bit tedious to change the constraints for every bone, so I wrote a script to do it. (close your eyes if you know python)

import bpy
for bone in bpy.context.selected_pose_bones:
    try:
        bone.constraints["Copy Rotation"].target_space = "LOCAL"
        bone.constraints["Copy Rotation"].owner_space = "LOCAL"
        bone.constraints["Copy Rotation.001"].target_space = "LOCAL"
        bone.constraints["Copy Rotation.001"].owner_space = "LOCAL"
    
        bone.constraints["Copy Scale"].target_space = "LOCAL"
        bone.constraints["Copy Scale"].owner_space = "LOCAL"
        bone.constraints["Copy Scale.001"].target_space = "LOCAL"
        bone.constraints["Copy Scale.001"].owner_space = "LOCAL"
       
    except KeyError:
        print("invalid bone")

Go to pose mode, set skeleton to pose position, select all bones, open text editor, make a new file by clicking +, paste the above script, press run script, then finally toggle between rest position and pose position to refresh the changes. It should work (hopefully) :stuck_out_tongue:

Whoa!! Thanks Cyaoeu. Let me try implement this. I have never worked with scripts before. Hope this works.
Could you please explain the difference between the two, local and world space…Is it the same principles with transform/rotation gizmo when using Global/world space and using Local?

I get an error : line 3 indentation . How do i add the indentation? Is it a tab or spacebar kind of indentation? Sorry Scripting isn’t my area

I edited the post, it didn’t have

 tags... Please copy paste and try again.
edit: or go here: http://pastebin.ca/3318315

Ok I tried the script and It does sort of work. I think I’ll have to apply it only to affected bones because I think it got rid of all drivers thus arrangement has been restored but functionality has been destroyed. Let me try that again.

Hi, I finally did it! Well, all I needed was some patience. I’m so pleased with myself I made a timelapse video of the entire rigging process found here> https://youtu.be/1ZqXFyk7uu0



Thank you!