How do I prevent the camera from jumping when the spring arm intersects a corner?

Hi all. I absolutely love using the spring arm and can get some nice smooth camera movement with the right lag values. But when the spring arm intersects a corner or any kind of abrupt geometry between the camera and the character, the camera jumps jarringly to the intersect position. Not cool.

I thought I was being clever when I detached the camera from the end of the spring arm, put a dummy SceneComponent in its place, then had the camera chase the SceneComponent (“Camera Position Target”) using VInterpTo and RInterpTo:

When I played the level and intersected the spring arm on a corner, the camera glided nicely to its target position, but then I noticed it had an annoying twitch every time my character changed direction. When I turned on “Use Controller Rotation Yaw” in the Pawn defaults, the twitch went away, though now my character looks like he’s spinning on a lazy susan every time I move my mouse.

Anyone else annoyed by this? Got any ideas on how to remedy it (short of programming a custom camera movement from scratch)? What I’d love is for the spring arm to have this smoothness built in. Maybe put in a feature request? Any insights would be much appreciated.

All you have to do is to check if the length of the spring arm has decreased abruptly (if it has encountered a corner). You can achieve this by creating a float variable named sth like “ArmLengthPrev” and taking the difference between this and the current spring arm length. If this is greater than a certain threshold (possibly 0 or 0.1), your branch would return TRUE and FALSE otherwise. If TRUE then you apply the interpolation; if FALSE you make the camera immediately jump to the scene component position.

Don’t forget to update the ArmLengthPrev variable after the process is finished.