[1017] [BUG] Default FX layer in client breaks Gesture layer animations. Sample inside.
tracked
ん
んなあぁ
When no user-created animation controller is provided for the FX playable layer, animations on a user-created Gesture playable layer fail to animate properly in-game (though they work in-editor). Simply adding a completely empty animation controller to the FX playable layer slot fixes this issue. This suggests that the client-provided controller for the FX playable layer is interfering with the Gesture playable layer in some manner.
The debug menu shows the layer in the correct state and with the correct layer weight, but it does not animate until an FX player layer is provided by the user rather than the client.
I have created a sample project based on the current avatars SDK to showcase this issue. It includes two copies of a minimally configured avatar in the scene TestScene -- one labeled working, and one labeled as broken. The only difference between these two is the empty FX layer defined on the avatar descriptor for one but not the other. The animation in question is some very noticeable rapid ear movements.
Log In
Fax
tracked
Franada
User have a lots of issue with Mask. Those are all you need if you use Write Defaults OFF. Something you should.
- Action Layer : humanoid all green and transform all OFF
- FX Layer : humanoid all red and transform all OFF
- Gesture Layer : humanoid all red.
There is no bug.
If you use Write Defaults ON. How can you sleep peacefully.
ん
んなあぁ
Franada: This post is half a year old. The only difference between the working and non-working sample was that one was using the FX playable layer provided by the client at runtime and the other had a
completely empty, stateless
FX controller placed in its playable layer override slot on the descriptor. Given that a simple, looping animation from the Gesture layer functioned on the version of the avatar that had a completely empty, stateless
FX controller provided, but not on the one that had the playable layer from the client at runtime, there was (and it seems still is, as I just loaded a newly built test avatar and the problem persists) certainly a client bug at play. Furthermore, if you bothered to look at the sample I put on GitHub, write defaults is OFF in the sample, and it's still broken. I've tried it with write defaults both on and off, with the same result. Masking has no effect on it, either, in this case -- just to humor it, I went and added masking exactly as you have in your picture, and it was still broken just the same, as expected.
As a side note, Unity turns write defaults on by default for a reason. It's not some bad boogeyman that should never be used, it just needs to be used PROPERLY, and many people don't use it properly. I have never, even once, had a bug on my avatar that was caused by write defaults -- and I have some fairly complex state machines. When I don't want write defaults, I turn it off. When I want write defaults, I leave it on. That's how I can sleep peacefully.
Bluegills
Have the issue as well, preventing me from finishing my avatar I've worked on for months... :(
Franada
Bluegills: you need those mask or one layer will make another not behave properly.
Bluegills
Franada: The fix was to not touch the gesture layer at all for any reason. Just do everything in the FX layer.
Franada
Bluegills: No. Read the documentation. It's said no transform in the FX.
Bluegills
Franada: Yes. Transforms work in FX layer. Gesture layer does not need to be touched at all for animations tied to gestures.
Miamikicchi
Can confirm this issue on several avatars I worked on. INYO's workaround has worked in the meanwhile.
-Neop-
I found that this issue seems to be related to the Write Defaults setting on FX layers: If an active state on the FX layer has Write Defaults disabled (in my case tail bone) transforms in the gesture layer don't get animated.
Inactive FX layer states do not cause this issue. The Write Defaults setting on gesture layer states seems to neither cause nor solve this issue.
I can confirm INYO's workaround (adding an avatar mask to the FX layer, thanks for the hint!).
INYO
I've did some research for it and noticed that FX layer without avatar mask to disable all muscle and transform will break all non-humanoid animation in Gesture layer, like tail/ear, even use default FX controller (un-check the custom FX at Descriptor component) it still block gesture layer animation.
One way can solve this issue is add the avatar mask on FX layer, the mask must have defined skeleton and unselect all transform, the problem with this way is if set the mask with defined skeleton, no matter all transform is disable or enable, the Material-change animation will not work anymore!
Franada
INYO: you have write default somewhere or your mask are wrong. See above.