[1567] Freeze to world not respecting parent constraints
closed
Viva Meccanica
Broken this patch after working for several months. Aware of similar reports just wanted to document it breaking again as of today.
- constrain something to something else
- animate freeze to world the constraint
- the constrained object appears at its original location and not its offset one
Log In
Dexvoid
closed
Thanks very much for the additional info. It looks like this avatar is using a parent constraint to freeze the armature's head bone to a position in the world. Unfortunately, because of timing dependencies, we cannot restore the change that was added in version 2024.4.2 that previously allowed this approach to work.
This issue is caused by the engine moving your head bone back to where it should normally be before your constraint runs later in the frame. This means freezing the constraint causes it to capture the position of the head on the armature rather than the position the constraint would otherwise move the head to.
Since this problem only affects constraints attached directly to an avatar's armature, you should be able to restore this functionality on your avatar by making these changes:
- Create a new game object outside your avatar's armature and add a parent constraint to it.
- On this new parent constraint, assign your avatar's hand as the source.
- Change the parent constraint on your head to use your new game object as a source.
- In your animator, update your Head In World toggle to freeze and unfreeze the constraint on your new game object rather than the constraint on your head. Your Head In Hand toggle can keep targeting the constraint on your head.
We may update our constraints documentation in the future to mention this incompatibility.
Dexvoid
tracked
Dexvoid
needs more information
Hi, thanks for your report. Please provide the ID of an avatar suffering from this issue along with a brief description of the steps taken to trigger the issue and a summary of what you're expecting to happen instead. It doesn't matter if the avatar is public or private.
Viva Meccanica
Dexvoid
avtr_f8ea367e-7fe6-4678-9ab7-91a170893d2c
Navigating my very disorganized radial menu
Expressions -> Customization -> Ears -> Head In Hand
And then, in the same submenu Head in World.
(note that with the manual buttons you have to have the head in hands to drop it. There's also a gesture based system for taking off the head that does the same exact things)
Relevant Animations:
Head In Hand (works fine)
head2neck:
VRC HeadChop.Enabled = 0
head : VRC Parent Constraint.IsActive = 0
+ A poiyomi graffical toggle for UDIM tile discarding
neck2head:
VRC HeadChop.Enabled =1
head : VRC Parent Constraint.IsActive = 1
+ that same poiyomi graphical toggle for UDIM tile discarding
Head in World (Broke in [1567] after working for awhile)
grabhead:
head : VRC Parent Constraint.Freeze To World = 0
drophead:
head : VRC Parent Constraint.Freeze To World = 1
Viva Meccanica
Dexvoid
Head In Hand puts the model's head in the model's left hand via a parent constraint (this works fine)
Head in World freezes the models head in the world from the hand using "Freeze To World" in that same constraint (Worked fine before [1567], now always Freezes To World as if the head was still on the Body and not in the hand)
Ẃarhawk
Whatever this is, it breaks the ability to move it afterwards, too. My band-aid solution in the previous build, in order to respawn the object at the same starting point each time on a toggle, was to include position data in the animation. That no longer works, even if the animation is totally separate and the constraint is disabled beforehand. Only reloading the avatar unfreezes it for the first drop.
Dexvoid
Ẃarhawk Hello, if you're still encountering this issue in the most recent release of VRChat, please open a new bug report including the ID of the avatar suffering from this issue as well as steps taken to trigger the problem. Thanks!