d4rkc0d3r / d4rkAvatarOptimizer

d4rkpl4y3r's VRChat Avatar 3.0 optimizer
MIT License
368 stars 16 forks source link

GOGO LOCO height breaking #98

Closed QtpyeRose closed 3 months ago

QtpyeRose commented 4 months ago

when the optimizer is run on a model with gogoloco in it it appears to break the height function of gogoloco, with only the feet moving. i am using optimizer version 3.6.1 and the vrcfury prefrab for gogo 1.8.3 with vrcfury version 1.859.0

i have confirmed that this issues does not occur when the optimizer is not used, but when it is it breaks the height function

even with only optimize on upload ticked it still breaks.

Toys0125 commented 3 months ago

I can confirm that that happens to me as well. Only in Unity 2022.3.22f1.

AsaNekoo commented 3 months ago

I can confirm as well. on Unity 2022.3.22f1.

d4rkc0d3r commented 3 months ago

I can't reproduce this issue. Where exactly does it break for you?

I am myself not familiar with gogo loco but I tested it on an avatar with av3 emulator in editor real quick and toggling any of the sitting/lying down animations and then using the ufo slider does move the entire avatar up and down.

AsaNekoo commented 3 months ago

In game

Toys0125 commented 3 months ago

Sadly, it seems that the Unity editor doesn't showcase the issue. All I know is that having the optimizer active causes ggLoco to break in-game. Desktop or while in VR.

QtpyeRose commented 3 months ago

my testing was done on an avi with all toggles etc stripped out, only a base mesh + avi descripter, with gogoloco via vrcfury prefab, and using the optimizer with only "optimize on upload" ticked (no other options)

re-looking into it, i may have accidentally left the ASL controllers on, but i dont think thats the cause.

either "optimize on upload" has some extra functions that cant be turned off, or the very script itself is doing something that is messing with gogo locos functions.

this is an issue categorized here in the gogo loco docs, and claims its often an issues caused by things messing with the action layers

in personal talks with the creator of GOGOLOCO (you can join the discord to get in contact with them if need be) they said

"Probably because they remove the go empty animation Since the path is broken on purpose"

which is just speculation on a possible issue as far as i know. (i don't think they looked into the actual code of this optimizer)

it also seems to have some relation to the switch to the newer version of the unity editor (2022.3.22f1 instead of 2022.3.6f1) though i have not tested to confirm if this issue is unique to 2022.3.22f1

d4rkc0d3r commented 3 months ago

either "optimize on upload" has some extra functions that cant be turned off

it does do several things always. see the readme for a list.

"Probably because they remove the go empty animation Since the path is broken on purpose"

I specifically handle cases where all curves in an animation get deleted because they don't reference anything by injecting a new broken binding with a length that should match the longest deleted curve.

Either that part broke somehow or the unity version bump changed something about asset serialization that makes something not save correctly. The second would explain it working in editor but not in game.

Toys0125 commented 3 months ago

Either that part broke somehow or the unity version bump changed something about asset serialization that makes something not save correctly. The second would explain it working in editor but not in game.

I actually want to talk about that since I know that your script had an issue with the Dex clone system that would error out the serialization a while back, and they had to hack their code to fix the issue. image

d4rkc0d3r commented 3 months ago

It wasn't the serialization and instead the first thing. The broken curve I generate doesn't work in 2022.3.22f1 because I used EditorCurveBinding.DiscreteCurve instead of EditorCurveBinding.FloatCurve

Switching to the latter does solve this issue and also #99