Pretty sure this is an engine bug but wondering if anyone’s got workarounds. Currently if you use the BP/Python control rig sequencer library to set control euler transforms, it’s impossible to set a rotation axis value more than 360 degrees away from the existing value. Specifically, rotations will mod to the range ceil(current/360)*360-540 : ceil(current/360)*360-180
- they are correct in an absolute orientation sense, but when playing back you get a single-frame 360 flip as the value mods.
yaw curve:
After programmatically setting to a monotonically-increasing value (basically Y=X):
I think this is to do with the internal conversions to and from FTransform
(which means FQuat
for the rotation), but there’s clearly some attempt made to keep the actual rotator values near where they were before. Unfortunately as implemented the library function is pretty useless, as you can’t “jump” to the next bracket without the user manually adjusting the curves. In the example above I can never set any key to -180 or below, or above 180, without going and manually adjusting the curves, and likewise if I do that I can’t then return them to this -180:180 bracket. Obviously this kills the prospect of automating things.
For reference the function I’m referring to is UControlRigSequencerEditorLibrary::SetLocalControlRigEulerTransforms()
, which is unreal.ControlRigSequencerLibrary.set_local_control_rig_euler_transforms()
in python.