What you did here is awesome!
I’m in desperate need of this functionality. I have tried following your tutorial. Creating a C++ project, setting up the .h and .CPP files from your description as best I could, but I’m no programmer and my knowledge of C++ is limited (understatement). So I wasn’t able to get it to work. Is there any chance I could persuade you to share a pre-compiled version (if that’s even possible) or something to that effect, that would help me get the functionality of manipulating spline point rotation via blueprint without having to dig deep into C++ troubleshooting? I would be most grateful for any help you can give me.
The rotation at a spline point is defined by the spline point’s tangent and up vector. So currently you can set the point’s rotation in blueprints by using the desired rotation matrix’s up vector as input to the spline function SetUpVectorAtSplinePoint and the rotation matrix’s forward vector as input to the spline function SetTangentAtSplinePoint.
Additionally we will add a blueprint-callable spline function SetRotationAtSplinePoint for UE 4.26 which encapsulates this logic for convenience. We will also add a blueprint-callable spline function SetScaleAtSplinePoint which can be used to set the Y and Z scale. The X scale is not used in spline points since this direction follows the spline.
(Side note: Feureau’s example at the beginning of this thread is out-of-date now but it only would have affected the spline point’s up vector. Be aware that internally USplineComponent’s member data SplineCurves.Rotation, which replaced the now-deprecated FSplineRotInfo, is only used to rotate the up vector from its default position. The resulting up vector and the spline point’s tangent are then used to derive the side vector.)
After further consideration, we have decided to change SetScaleAtSplinePoint’s input to be a vector (as it was in the original Github PR submitted by contributor projectgheist) rather than only the Y and Z scale values. Even though the scale’s X value is not currently used, this makes the function more adaptable if the scale X was ever to be used in the future.