Download

Character Camera Stops Updating

Setup

I have a character blueprint with a camera attached to a spring arm which is parented to the head socket of my character. The socket offset is (35,0,0) and the boom arm length is 10. Movement works. The camera is not updating its rotation unless I move down past horizon. I also observed, at each 90 degree (left, right, front, back) the camera stops. I assumed there was something wrong with the animations so I began debugging and trying multiple things to find out where the failure was happening.

Debugging

In my character, I placed on Tick, a PrintString that is printing the RelativeRotation of the player camera. Ah ha! The rotation is not updating unless I move the character a bit and then it snaps into place and works. As I move the camera up passed horizon, it stops updating again. WHY?

I have one level (ThirdPersonExampleMap) where this issue does not happen and for the life of me I do not understand why this ONE level works. I duplicated the level to see if that was an issue. The character camera stopped updating there too. Then I built the lighting and it began working again. Now I am confused.

I built a new level using the Day/Night template. Nothing in it has changed except for the character. Same issue. The camera does not update unless I look down past horizon. Ah ha! Build the lighting. Nope. Still a no go. Now things were getting weird.

I started from the bottom. New character. Base Player controller. No animation blueprint. Just a character in the level. Still happens. How is this possible?

Ok, new project. Moved my Test Character to the new project and…■■■■…no go. The camera rotation freezes the second it begins. If I move my camera behind the head of my character, it begins to work again. Placing it back where it is inside the head it stops. Ah ha moment! If I place the camera at the head socket location or behind, the camera updates. I removed the camera boom believing that was causing an issue. Nope. Same issue. With the camera as a child of the mesh, parented to the head socket, at Location (0,0,0) it works. Any Location in front of (0,0,0) the camera rotation no longer updates unless I look down past horizon.

I created a new character, no animation blueprint. No controls. Just a mesh with a camera and the base player controller. Still happening. :frowning:

To guess and confirm this was the issue with a mesh and boom and camera, I brought in the starter character and placed it in the level. I adjusted the camera on the boom as stated above (the socket offset is (35,0,0) and the boom arm length is 10 attached to the head socket and camera to the boom) and viola, it works without issue.

Help

So now I am lost. After two weeks of debugging, trying different things, I am reaching out to the community for some help! I am willing to try new ideas or new debugging. Also willing to share screen shots if necessary. Hoping someone has experienced or at least knows of a possible solution.

I wonder if this is caused by the collision probe on the spring arm. Have you tried with it disabled? Probably not related but do tell.

Great question. I have turned off the collision probe on the spring arm. I have changed the probe size. I have changed the channel. In fact, one of my iterations, I removed the spring arm completely and attached the camera directly to the head socket. None of these seemed to change the outcome.
I am glad you brought that up though, because I did fail to mention that before.

After some time, I have finally come back to this to do some more debugging. It turns out, some of my animations are causing this issue on specific levels. Why is it level specific, I have no idea. I did find, if I change my Idle animation, which I got from Mixamo and converted, to an Idle animation from the started pack this starts working again. I am guessing this has to do with some odd root motion issue? Again I am unsure. I may keep banging on this, but ultimately I think I am going to just rebuild my characters from scratch, including the Animation Blueprint, with better converted animations. I am going to use the plugin from the Unreal store and see if I get a different outcome.

Please, if anyone has any suggestions upon this new lieu of evidence, please let me know as this will be a process to re-do all that existing work. Nonetheless, game development is never easy!

With some help, it has been solved. The lighting was the key. I had turned off Cast Dynamic Shadows on the light to save some performance hopefully. Guess what? As soon as I turned that back to true and rebuilt lighting…BAM! Everything is working fine and as it did before!!!

Once this was true again I did not have to change anything else and everything started working just like it had! Funny how the Cast Dynamic Shadows on the light caused my camera to stop updating on the player…at least it is solved!

SPECIAL THANKS to L1z4rD89 for so much help and ideas!!! Amazing weird bug! Thank you Thank you Thank you Thank you Thank you Thank you Thank you Thank you Thank you Thank you! I cannot thank you enough L1z4rD89!

@L1z4rD89 Could you share the why?

I wish I knew why. In fact I did some further testing and when I change my directional light in any way to where you have to rebuild lightning…this issue comes back. Anytime I move the light or change it colors or, etc… the camera matching fails to update on my character. As soon as I build lightning for the level, viola, all is working as normal. And I found that changing the Static, Stationary, or Dynamic does not directly affect this issue unless I change Cast Dynamic Shadows to false.

I am VERY curious how this is linked, but I have no idea how I would go about debugging to find that answer.