[FEEDBACK] Constraints in Local Space
available in future release
Voxian
To my knowledge, we have many constraints available to us via the default unity constraints. We can also use some extended scripting when it comes to Final IK.
I’ve used much of this when making quadrupeds, characters with two heads, and extra arms. However, all of these systems are calculated in world space only.
For Avatars, I am not aware of any way to work with these constraints in local space.
This would be very helpful when trying to map the rotation of your arm or fingers to puppet something not directly connected to your arm or hand. Right now I’m thinking of controlling wings or ears with fingers. This level of puppeteering is significantly better than using the menus or gestures, but we don’t yet have good access to it.
In my own experience, I specifically ran into this issue when trying to directly control the back legs of a quadruped with my real legs. When facing straight ahead, I could puppet them just fine, but once I curved the spine, the feet would remain pointed forwards.
I can’t imagine that this functionality would be too difficult to create. Most other unity games just copy the rotation values from one object to another and they are done… but obviously there needs to be some safety nets in place for cycle checks and other errors that might happen.
I did my best to try and find if a similar topic already posted, there may be one, but I couldn’t find it.
This post is partly a “What work around are there?” As well as a plea to add this functionality to the SDK.
Log In
Megacrafter127
Probably late to the party, but for some niche use-cases it might be necessary to provide a custom space for the constraint evaluation.
So I suggest adding the option for specifying transforms the constraint should evaluate relative to.
One transform for each source, that it is evaluated relative to, and one transform to apply the changes relative to.
As an example use case:
A ghost hand that you can puppet.
Just using local constraints, constrained lower and upper arm bones would be needed to move the hand relative to your shoulder.
However, as there will not be an upper or lower arm, this just worsens the performance for no gain.
If you could set what transforms sources and the target are evaluated relative to, only one constraint for the hand position would be needed, that is evaluated relative to the shoulder bone, shortening the required chain length.
Dexvoid
Merged in a post:
Local Constraints
Voxian
My original post on this topic is quite old and also marked as "feedback" when it is actually a feature request.
The developer update today covers some information about the limitations of constraints. https://ask.vrchat.com/t/developer-update-16-february-2023/16474 It seems that eventually our avatars will be ranked based on the number of constraints.
I would like to recommend that we include the ability to do local constraints using an official VRChat script.
Currently the only other way to make local constraints involves having three extra armatures all with constraints attached to them. For a typical avatar, this will account for 200 to 300 extra constraints that could be replaced by a small number of local constraints.
Dexvoid
available in future release
Today, we started an open beta of VRChat Constraints, where one of the advanced options is solving constraints in local space as described here. Instructions for taking part are available on our Discord server.
Ahzealion
I would also reckon that a lot of the avatars with high amounts of constraints (that are causing problem) are often trying to emulate local constraints in some way shape or form, Like the avatar clone tools, and are not performant for that exact reason. Since it takes some extreme Jank to emulate what local constraints would do.
Local constraints would just be a great addition overall and would alleviate a lot of the current "my avatar has 600 constraints on it" situations.
Voxian
I want to do a quick bump of this post. As part of the developer update today https://ask.vrchat.com/t/developer-update-16-february-2023/16474 we are going to eventually be limited by how many constraints we can use in our project.
Currently there is a method to create fake local constraints by making THREE duplicates of your entire avatar and animating constraints across all copies. For my current model, this is approximately 300 constraints just to make a local constrained version of my avatar. I am absolutely animating these off whenever not in use, but it sounds like regardless, they will affect the ranking of my avatar.
If we were given the ability to do local constraints with an official tool, this would be significantly reduced.
l
lutina
I myself are an avatar creator and the puppet movement system is a pain to import at best we need a system to make it a lot easier
Photographotter
This is a very technical request that the average userbase wouldn't understand, so I don't anticipate a lot of people joining onto this canny because they likely won't understand it.
But for avatar creators that like to make some of the really fun zany stuff this would be a huge addition to the SDK. I think most users won't know what this means, but they'll see complex and creative avatars come from this if it were implemented
Ahzealion
I've ran into many issues with axis flipping related to the current form of rotation constraints. I've found really janky work around with aim constraints. However, This process would look much better, and be much easier to achieve with local constraints
Zephyr_Drake
This is very important as it opens a lot of creative options open for creators, and gives us the tools to make our visions. It will also bring it in line with other game engines and platforms.