Open raineaeternal opened 2 years ago
Thanks for your report. I found the problem. As soon as you touch any camera setting in Camera2, it will update previous config and add limits
field in the camera .json file. After this everything works just fine
old config:
"Smoothfollow": {
"position": 10.0,
"rotation": 5.0,
"forceUpright": false,
"followReplayPosition": true,
"pivotingOffset": false
}
After touching any camera setting:
"Smoothfollow": {
"position": 10.0,
"rotation": 1.1,
"followReplayPosition": true,
"limits": {
"pos_x": "-Infinity:Infinity",
"pos_y": "-Infinity:Infinity",
"pos_z": "-Infinity:Infinity",
"rot_x": "-Infinity:Infinity",
"rot_y": "-Infinity:Infinity",
"rot_z": "-Infinity:Infinity"
},
"pivotingOffset": false
}
Looks like Kinsi unintentionally added backwards incompatible feature with adding support for BL replays. Sadly, it cannot be gracefully handled on our side :c
please go over to Camera2 github and forward this issue to Kinsi 🙏
That is not what is happening - Camera2 configs always get updated / migrated on game start - So if you update from the pre-limits version and start the game, the config file is updated right on game start. Demo of me deleting Limits and just starting the game: https://user-images.githubusercontent.com/8348306/196133120-58b7aa67-8fa3-4e2b-8650-89efb7144cfa.mp4
That being said, the limits have nothing to do with smoothing, thats just for limiting positional / rotational ranges
The issue here is probably that Scoresaber replays get smoothed twice - Once by scoresaber itself, and then again by Camera2. This is becase the only values that I can get from Scoresaber are already smoothed by it for usage with its own replay system. I have asked Umbra multiple times if I could somehow get unsmoothed values but to no avail.
So that its probably why it feels like SS is smoothed but BL is not, because SS is oversmoothed to hell and back. If you up the smoothing in Cam2 you would get a similar result - But the end result should look the same as it does in Solo, if its not, something is wrong - As you can see the smoothing is unconditionally applied in any situation: https://github.com/kinsi55/CS_BeatSaber_Camera2/blob/ecbb037721f7b79be027ce6a8f7533eeb7c5fe57/Middlewares/Smoothfollow.cs#L201-L202
Oh yeah, I doublechecked and you're correct - there is nothing wrong with Camera2, my apologies 🙏 But also there is nothing wrong with BeatLeader, I don't think we should introduce inconsistency between Solo mode (live recordings) and Replays.
Although it was my fault, I do have a bit of a feedback on what confused me, @kinsi55 . Initially I had rotation smoothing on 5, which turns to look like no smoothing at all. Then I tried different values on slider, nothing worked, and I left it in a roughly the same spot as before, but it was on 1, which turns out to be too smooth.. That being said, why the top value on slider is 50? :DD it is so sensitive in the start, very confusing.. Pls change 🙏
The value goes directly into the lerp methodas you can see above which of course isnt linear - I would have to add some extra math / mapping behind it to change the behaviour
nono, I propose changing the slider top limit, not the logic. I doubt that anyone uses values larger than 10, if 5 already looks like an earthquake :DD
But anyway, returning to the original topic. The only solution I can see (without changes from the SS team) - is separate smoothing settings for SS replays in Camera2. We won't add additional smoothing to compensate the difference. Cam2 will have full and predictable control over the camera behavior in BL replays
I might just go ahead and disable cam2 smoothing in SS replays until I get raw values from SS on the next full moon, maybe.
I just tested the new replay feature and its pretty awesome, but I find some inconsistencies between the replay handling.
BeatLeader replays do not smooth at all, whereas the same map with the ScoreSaber replay does get smoothed by Camera2.
I can provide examples if necessary.
Edit: I'm reporting it here, since you bundle Camera2 in the release - and therefore think it's part of your responsibility to fix