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.

Further information I forgot to post earlier is 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.

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!

Could you show pictures of your blueprints?

I sure can! Which ones would help as I am not sure what is helpful. I can show the Animation Blueprint, or the Character Base that everything derives from. Note, in my testing when I created a new character, it was solely using the Animation Blueprint and none of the Base or Player Controller blueprints at all. The only thing being executed was the Animation Blueprint. If that helps narrow it down.

The animation for the idle contains 3 different animations because I was testing which ones work and which ones cause this issue. Idle2 was the only one that did not cause this issue and it is from the Animation Starter Set.

The Relative Camera Location shows the numbers being printed and they do not change unless there is input. When this is NOT an issue, those numbers are changing every tick via the Character Blueprint.

If you would like more or a different set of blueprints or any other screen shots, please do not hesitate to ask! I appreciate anyone looking at this and sharing any ideas! Much appreciated!!!

Could you show me/us how you set up your character blueprint? What happens if you enable UsePawnControlRotation on your SpringArm?

342009-control-rotation.jpg

Ok, which character and which animations do you use? I could try to rebuild what you want or you could upload your files

The Use Pawn Control Rotation is on the Camera attached to the spring arm. If I swap it, it makes no difference for the issue. The only issue is the camera relative rotation is always 0,0,0. That was a good idea though. I have tried so many variations of that. LOL What else can I show? The attached is currently how it is setup now.

342049-spring-arm.png

342050-camera.png

I am currently using the base Mannequin character. I pulled most of the animations from Mixamo and then used MixamoConvert by Terribili Studio to make them compatible with the skeleton. Yeah I can build a project with just this base stuff and upload if that is easier? Would that help?

Also let me mention, this issue does NOT happen on the ThirdPersonExampleMap. Everything works perfectly. That is why this is even more strange. But it happens on the TimeOfDay new level that I created when I was testing/debugging.

The project as you use it would be good, File=>PackageProject=>Zip Up Project (if it is not too large). Oh, and what happens if you override the GameMode Settings for your new map? Open the map in the editor and go to the WorldSettings.

342053-world-settings-gamemode.jpg

I created a new project with all the necessary base components of the character. As expected, this has no issue on the ThirdPersonExampleMap but on the new level I created, it does not work. This all follows the issue I have been having perfectly. Let me know if I can provide anymore.

TestProject

When I start TestingMap I can walk around and look around with my mouse :confused: It works for me right of the box. With updating the PrintString at EventTick. Did you change EditorSettings? Do you have a Joystick connected?

Yes that is correct. The movement, the mouse all of that works without issue. The problem is, when you start the TestMap, do not move the or touch the mouse once it is started and notice the camera relative rotation being printed on the screen. That does not update at all. Once you move the mouse and change directions, it begins updating. Then if you go back so you are facing a 90 degree and move just past the horizon by looking up, the camera stops updating. You can also see by pressing F, when the camera is not updating, how the camera fails to follow the character. Also when the camera is not updating, the camera does not bob. if you move the look down to where it is updating, you will see the head bob. Does that help clarify? I might need to post a small video to better see what I am experiencing.

https://drive.google.com/file/d/1gaPk3bq0DR3j8i8RWNLmlXfY3omgHkgW/view?usp=sharing

AWESOMENESS! I appreciate the help so much. I will try those and see what I come up with. I said that this one was rather odd… LOL

  1. I can make this happen without the spring arm, but I was hoping to use the spring arm to make sure I do not camera clip through walls, but we will see what happens.
  2. I was referring to the 90 degree straight is where the camera stops updating. In other words, perfectly perpendicular to the straight sides of the level. facing perfectly straight ahead is when the camera stops.
  3. Yeah the bobbing was just my way of knowing it was working or not updating because i could see the slight movement or not.
  4. As to the light…that is so very weird. That would explain why when I duplicate the ThirdPersonExample level it would encounter the error. As soon as I built lighting it started working flawlessly.

I will give these a go and let you know. Again I appreciate the second mind. I have been banging mine for way too long on this issue.

Soooooooo :

  1. Remove the SpringArm and attach the camera directly to the head bone. Should fix the camera movement with animations. I tried different locations of the camera and tried different camera angles when starting the animation. Camera did always follow (instead of sometimes stopping mid-air with the SpringArm)
  2. Camera rotation: Due to the fact that the camera only rotates up and down (left right moves the character) only one value should change from -90 to 90
  3. You have an idle animation where you move slightly so there should be a little bit of movement for the other 2 values because of the tick updating, ok, but there is none => I tried a lot of things…
  4. Solution for no bobbing/ idle animation with new map(and that is something I never entcountered): Set the DirectionalLight to Stationary and build your level… I can’t explain it, I am really sorry, but then it updated :smiley: So you can also reproduce the problem on the ThirdPersonExampleMap when you set the DirectionalLight to movable.

I don’t see any connection between the light and your idle animation. Maybe there is a bug in the issue and bug tracker at Unreal or you should create a new entry yourself. I can’t think of any setting that would create such error :confused:

Perfect :slight_smile: and no problem, you’re welcome

I figured it out. The lighting was the key. I already had my main lighting set to Stationary so that was not ok as my frustration began again. But then…ah ha! I 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!