VRChat IK 2.0

Wrong behavior in desktop when entering (upright) in stations
Goal I wanted some special seating poses for world stations for desktop players (maybye for VR 3pt tracking users too). Goal would be that a user can switch between poses, while he is in the station (using VelocityY as parameter to trigger the pose id). Steps 1st) I created some seating or lying poses. I created and tested all of them with the same rig (Merino). 2nd) I created a controller and assigned it to my station (seated). The controller sets "Tracking Control" to animation, then enters "Temporary Pose Space" (to have the camera aligned with the head), then sets "Tracking Control" to tracking for the upper body (head and hands). Basically the same as done in vrc_AvatarV3SittingLayer (but without transitions and different timings - see below why the default timings doesn't work). Detected Issues Issue 1) Grab a Merino somewhere and enter the station while you are crouching or crawling. Use your camera to check the pose. The spine is bent as the created pose, the hip is rotated correctly and is on the right height, the legs and arms are posed correctly too (see the images without remarks). Now enter the station again while you are standing. Now, every pose breaks as soon "Tracking Control" sets head back to tracking. Some poses work better, others look totally wrong. The spine is not bent as created, the hip is not rotated correctly, legs and arms are not posed correctly (see the images with remarks). Issue 2) The pose can end up in a different result, depending on which direction you watch, when you enter a station. That means that the hip can be twisted differently and the legs misaligned. The direction from which you enter a station, or in which you look, should not affect the result. Issue 3) While you are in a station, look 90° right to interact and enter into a second station. Now, when you are in the new station, you look forwards. But it acts as your head is still rotated to right. You can't turn more to right (locked). Instead, you can turn your head 180° to left (last image - hello Mrs. Owl!). Contact me if you need a scene example with station/controller/poses. Lack of Documentation There is no documentation for many related points (at least I didn't find in the official docs). 1) It's unclear how a pose has to be built. I cannot recognize any rule, when I analyze the default poses proxy_stand_still, proxy_crouch_still, proxy_low_crawl_still or other ones. Has the head to be on a certain height? Has hips or head to be aligned with the origin? Or does it simply not matter? 2) I was not able to find any documentation about how a controller assigned to a station has to look. My guess was that this controller is sort of "injected" into the avatars controller at runtime. My understanding is also that it replaces the default sitting controller (vrc_AvatarV3SittingLayer) in such a case - but I am not sure. 3) Can we "officialy" use "Tracking Control" and "Temporary Pose Space" state behavior for controllers assigned to a world station? Currently, I have to build my controller in an avatar project, because this state behaviors are not available in world projects (at least not with some inofficial hacks). 4) Assuming that we can use "Tracking Control" and "Temporary Pose Space" state behaviors in controllers used for stations: How timing of these state behaviors has to be? Using timings like in vrc_AvatarV3SittingLayer produces strange results. When entering into a station, you want to set your "Tracking Control" to animation and your "Temporary Pose Space" to enter, so the camera is aligned with the poses head. When this is done, you want to set your "Tracking Control" back to tracking for the upper body. Currently, it's not clear when this state behaviors have to run. I observed, that set tracking back to "Upper Body" happens automatically after some time. That interferes with state behaviors I triggered before in my controller. My guess is, that the default vrc_AvatarV3SittingLayer is still firing its state behaviors somewhere. 5) There is no documentation about IK 2.0 and how it works for desktop players. Why is there spine IK for desktop players at all? It makes sense in VR, because a user can move away his head from the pose or because the user has not the same proportions as the avatar. But in desktop, that is never the case. Also, what does the "Seated" IK different than the normal IK? I was not able to see a difference (in desktop mode).
0
Provide in-depth IK configuration options for enthusiasts
This is motivated by @Kung's request in this post: https://feedback.vrchat.com/vrchat-ik-20/p/in-lock-both-mode-spine-scrunching-pathologically-overbends-the-neck In general, it seems that there's a bunch of cases where one-solution-fits-all would leave at least some people disappointed with the default behaviour of IK and no option to change it outside of [redacted]. As such, it seems sensible to provide more in-depth IK options that would allow users to fine-tune it for their own preferences and avatars. Naturally, it won't hurt to clearly mark these in-depth options as "advanced" and maybe collapsed by default so that average users won't be spooked by a huge array of variety - that and defaults that work well for most users will likely be sufficiently user-friendly. One important aspect here is in-game availability. Given that these options concern IK, having to edit a config file (and maybe even restart the game) just to see their effect would be incredibly bad for usability. On top of that, this same approach can be used during open beta to let users try out different approaches and solutions and gather feedback on what works and what doesn't. Options that produce split feedback would indicate that keeping it as an actual option for release might be beneficial, as people have different preferences on that specific thing. Additional discussions and ideas on this topic can be found in comments here: https://feedback.vrchat.com/vrchat-ik-20/p/chest-trackers
14
·
interested
Remote feet are out of sync when Foot IK in Animator is enabled
VRCSDK 3.7.5 Unity 2022.3.22f1 >Settings : In AnimatorController used in PlayableLayers, any of the “Foot IK” in the state settings are enabled. >Environment where the problem occurs : Remote avatar (avatar as seen from others) >Assumption : AnimatorController enables FootIK to realize the gimmick. Therefore, all proxy animations with broken IK are not used, and the created Tpose and IKPose are set. This allows the full body tracking to function properly. The avatar has a mechanism in place to switch tracking and animation locally, and we have confirmed that any remote changes will have no effect. The avatar is set up with normal full-body tracking enabled, as well as foot and hip tracking, or full-body tracking disabled. >overview There is a small issue that occurs in both desktop and VR mode. That is what happens in the remote avatar perspective. When the avatar does some animation and disables foot tracking, it will momentarily tpose to a moment of no motion at room scale, but then revert back to normal. This issue itself will come up later in the issue. In VR mode, full body tracking (5-point and 6-point tracking) is not synchronized, even though all tracking states are enabled. When not synchronized, the animation appears to be a Tpose animation. When not in sync, it is not moving at room scale. Also, in the reference video I uploaded, when the avatar is on the skateboard, the tracking of the feet is turned off, but the same phenomenon is happening. When the avatar is moving, there appears to be no problem. Again, this is happening remotely. Locally, where the IK animation is set up, the problem does not occur. * However, when the HMD is turned up and down during full body tracking, the entire avatar shifts up and down, but I am not that concerned about this issue. >Animation of remote viewpoint Link : https://youtu.be/0GC4_BNo284?si=A-5Y8n8rTHCzl1wC Translated with DeepL.com (free version)
0
Load More