0
$\begingroup$

I'm new here and new-ish to Blender but getting to grips with it, thanks to a lot of on-line support!

I've rigged my character using the Rigify option in Blender, and have got a handle on applying automatic weights, weight painting and building an animation for export. I've got an 'idle' animation for my character playing in Unity. So mostly it's all working.

The only thing I was unhappy with were the eyes, which were being deformed as opposed to actually rotating. (The eyes are separate spherical objects in the Blender file).

So I found this solution: https://blenderartists.org/t/rigify-eyes-deform/1117896/5 ..which suggests parenting the eye meshes to by-default hidden bones (MCH-eye.L and MCH-eye.R) at the eye positions. I did that and things in Blender look great - the eyes now rotate like real eyes. I imported into Unity again and the animation plays, but the eyes remained in position, while everything else in the character mesh moved around them.

I then read that I should check the 'deform' box on the 'eye bones' each eye mesh is parented to in Blender. That didn't seem to make any difference.

I've since noticed the eyes start at whichever position they're in when I do the FBX export. For example, if Blender is at frame 120 when I export, the eyes in Unity will be static, but at the frame 120 position/rotation. This suggests to me the position and rotation are passed to Unity, but not the sequence of animation for those MCH bones - but I don't know if that's either useful or correct.

Has anyone else encountered this problem? And, if so, how do I make sure the movement of the MCH bones is included in the FBX export?

I've tried multiple settings from Blender; checking/unchecking the 'relative parenting', 'local location' and 'inherit rotation' boxes in the bone properties, as well as selecting a bone group and 'bake all keyed frames'. No change to the result in Unity and I'm out of ideas.

Any pointers or clarifying questions, much appreciated.

$\endgroup$
0
$\begingroup$

OK, I've figured it out. I had parented the eye meshes to the 2 MCH bones, but I hadn't added any vertex weights. I just had to set all vertices in the eye spheres to a vertex group with a name that matched the correct eye bone at weight '1' and it's now all sorted in Unity. I'm glad I checked Unity once I made the change because the eye animation is actually now messed up in Blender - The eyes at certain points swing about to odd positions. But it's working in Unity so I'm not going to complain.

EDIT:

I've now figured out how to get it looking right both in Blender and Unity. Turns out the eye meshes should be parented to the armature just like everything else. I just previously hadn't used the right bone for the vertex weighting. Using the MCH_eye.L and .R bones as the vertex groups did the trick. Looks right in Blender and Unity. A relief when things make sense properly.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.