Description

From User Bug Submission:

When an actor/component (e. g. a camera) rotates around another object using the rotation lag of USpringArmComponent, it cannot rotate to the top or the bottom. At these positions, the attached camera swerves around the poles as if there is an invisible cylinder with small radius, that has to be avoided. The higher the camera rotation lag speed, the smaller the evasive movement, until it finally vanishes.

I suppose the error is to be found in lines 101 and 107 of file SpringArmComponent.cpp, what leads to line 2359 of file UnrealMath.cpp: The single parts pitch/yaw/roll of the rotators are just linear interpolated, but that is obviously not a correct solution. You probably have to use Quaternions.

Steps to Reproduce

Test Project Attached

1. Create an empty project and ideally delete all disturbing objects that are in the default level.
2. Create a blueprint PitchTesterBP that inherits from Actor. Add a SpringArm as root component and attach a child component, e. g. a Sphere.
3. Enable CameraRotationLag of the SpringArm.
4. Let PitchTesterBP permanently rotate around its Y, e. g. by adding a Rotation Movement Component with Rotation Rate (0, 180, 0) to it.
5. Place a PitchTesterBP object in the level, start it, and watch the sphere.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-54222 in the post.

5
Login to Vote

Fixed
ComponentUE - Gameplay
Affects Versions4.18.3
Target Fix4.21
Fix Commit4282612
Main Commit4289353
Release Commit4399518
CreatedJan 19, 2018
ResolvedAug 14, 2018
UpdatedOct 2, 2018