Rotate an object to a set rotation at a set speed

What I’m trying to achieve is being able to set a direction and have the object point its “feet” in that direction

const FVector objectDown = -PhysicsBody->GetUpVector();

const FQuat ObjectQuat = PhysicsBody->GetComponentQuat();
const FQuat DeltaQuat = FQuat::FindBetweenVectors(objectDown, GravityDirection);
const FQuat TargetRotation = DeltaQuat * ObjectQuat;

This gives me how much I need to rotate the object by to achieve the right orientation (TargetRotation) but what I can’t get is the “over time” part just right, I’ve tried Lerping and Interpolation but while these methods do work they vary depending on how much rotation the object needs to do and they slow down as the object gets closer and closer to the target.

Is there a method that will rotated an object to a rotation at a select speed?
example:(5 deg/second * DeltaTime)

Using a timeline. Not sure how when coding though, easy in blueprints.

I considered using a timeline and while that would keep the rotation constant the rotation rate would differ depending on how much I needed to rotate.

example 90 degrees would be done in one second but 180 degrees would also be done in one second, the 180 would be done faster

Not necessarily. Because the time of the event from the timeline does not need to be used, you can just use it as a graph for rate of change. Ie per time interval you rotate x amount until the desired roration is achieved.

Can do that with a simple variable function too.

Again, I don’t know how to code it but by logic you would know either the desired rotation or the desired direction of the player after it’s done rotating. So you’d rotate x amount every delta time until desired rotation is achieved.

Or by using interpolation and some math behind the time portion, ie decide how long it should take to rotate based on rotation needed.