Problems with crouching IK with AV3

Hey I’m hoping someone here can help me out, I’ve been struggling with an issue with updating one of my avatars to AV3. Everything works great except when I get into the crouch state, (for instance, on desktop), the avatar’s feet and legs just slide backwards almost like its going prone. Its very odd because the rest of the IK appears to work fine.

I checked bone roll, and I went over the rig iterating everything I could think of with feet and knees and hips positions trying to get this to work. All the bone positions seen totally normal, and worked fine in SDK2.

(images taken on desktop mode)

Thanks in advance for any help/suggestions

It looks like your knee bend in your rig isn’t set in the right direction. Make sure your knees are slightly bent forward in your resting pose. Same for your elbows-- bend them slightly in the correct direction in your rest pose.

Check the docs for some graphical examples-- and yes, this also affects desktop mode in addition to 3-4-6pt tracking.

In AV2, you set these bends in the base rest rig pose.

In AV3, you can set these in the “IK Pose”.

Thanks for the reply! But, how do I make these extra poses? I tried making some controllers + clips but it just sort of ignored me and broke the IK.

Well after many hours of fiddling in blender I at least managed to get it to export poses as animations that seem to be in the right format for these “extra poses” and attached them to some animation controllers in the appropriate slots. But, alas, no effect. Gave his knees a big 'ol bend and it still just does the exact same thing.

Are there some specific settings I need to set to make these actually take effect?
It seems like nothing I do has any effect on this crouching issue.

I should add that the stepping IK works fine, its just when I crouch, its almost as if the legs dont want to bend. During the transition to crouching, the legs almost bend fine, but as soon as it settles and the IK kicks in, he straightens his legs bringing the feet back until he’s in that almost laying position.

1 Like

If you’re using AV2, you can just give the knees a slight bend. You don’t need to assign it to any particular pose. You could do this purely in Blender.

If you’re using AV3, you can set the bends in the “IK Pose”. This pose should look a bit like the T-pose, but with bends in the joints slightly turned towards where they should bend. You would make this pose as an animation in Unity.

I’m having the exact same problem. How do I access the IK Pose? (I am also trying to upgrade a model from SDK 2 that was previously working fine)

Also I have discovered that in game I crouch normally until I look down. When I look down my legs fly out behind me. When I look up it resets to normal

The IK pose is under Special at the bottom of the Playable Layers section of the avatar descriptor. Doesn’t work with animations made in unity though, must be a “humanoid” animation, which as far as I can tell can only be imported with the model.

Didn’t help me anyways though, asking around it seems that this is just a universal issue with the IK in av3. Tell me if you find anything out, I’m going to wait for further patches.

I’m having a similar problem and all avatars 3.0 problems seem to have the same issue that I’ve seen.

It typically happens when you go prone. I had similar problems with a custom prone animation, but managed to fix it with a VRC Animator Temporary Pose Space script on the Prone blend tree. (Enter on Prone, Exit on Standing).

That doesn’t seem to fix the crouch though.

The proxy_ikpose included in the SDK seems to work fine with my avatar, showing knees/elbows bent in the proper direction.

I think that the problem is that it’s tracking the position of the view ball, but the animation’s head position doesn’t match up exactly with the viewball position. This causes it to do an odd blending between the crouch/prone and the solved IK for the head position.

The temporary pose space (I think) moves the view ball to the animation’s head-bone position, which explains why it fixes the Prone animation. I’m not sure why this doesn’t work for crouching.

I also tried adding the VRC Animator Tracking Control script and fiddled with what is bound by animation and what is tracking. If you check the Head box to make it controlled by Animation, then the pose works, but it will not exit the pose and you are stuck as crouching/prone.

I think this is because the transition between crouch/standing/prone is controlled by the Upright parameter, which never changes because the head becomes locked by the animation, and thus can’t transition to the new upright value.

As far as I know, there’s no way to fix it at the moment. I’m thinking it may need a client patch to make the head match the animation’s head position while on desktop instead of blending with the viewball position.

Should work OK in VR, probably? Haven’t tested that yet.

To fix this, I created a copy of the example locomotion controller in VRCSDK/Examples3/Animation/Controllers/ and replaced the crouch pose animation. It’s just a really bad pose that when sort of half-blended with standing causes the weird legs. You can also try just adjusting the transitions to lower the value of “Upright” required to transition into the crouch state. The standing state with its IK is very similar the the AV2 crouch, (though you wont get the locomotion animations for it, it will just be the standing ones).

(Side note, replacing the “Base” layer locomotion controller caused the lipsync to stop functioning, but that’s a whole other issue and may or may not affect you).