True First Person - A Blueprint in progress

Hello All!

So I am currently trying to recreate the amazing True first person from UDK by the Awesome Kris Redbeard in blueprint.

At the current moment I have been able to establish which was rather simple after some trial and error an TFPS system using the First Person Blueprint, but I am unhappy with the results and feel like that it would be better if the Camera was attached to a socket instead of free floating above the characters body so that it feels more like a proper head.

But before I proceed to release what I have so far I was wondering if anyone has been able to attach a camera to a socket via blueprint. I have tried but I keep drawing a blank sadly. So anyone have any pointers? :smiley:

Thanks

I would really like to know this as well.

I’ll save you some trouble:

  1. Create blueprint based on your character of choice.
  2. Under components tab, add a camera component.
  3. Parent camera component to bone / socket of your choice.
  4. Make sure to enable “use controller rotation”.
  5. Compile blueprint.

That’s it.

Thanks once again, Kris!

I attempted to do that but I could not get it to parent for the life of me. I created a socket based off of the head bone and tried several times to get it to attach (thru various means) and no bueno. But thanks for the reply Kris. I will re-evaluate the process when I get home from work and see how I was going about it wrong. :slight_smile:

First attach the camera to the skeletal mesh:


Then you will get the list of sockets and bones:

I was actually able to do this earlier this week, but I have not had time to produce the tutorial yet. But this pretty much sums it up!

To add onto this you can achieve two different results depending on which blueprint setup you use. If you use the Thirdperson blueprint you get a camera that can rotate at the base of the head which would work well if you clamped the rotation and used something like the oculus rift. If you use the first person blueprint you have to copy over the 3rd person mesh/skeleton and animations into the folder and use them from there which would give you a camera that has no rotation and is locked directly to the body orientation and is recommended that you create animations for turn in place.

Do you know exactly what causes the full rotation or no rotation between the blueprints in either of the templates? I was just looking at this too after reading this thread. It’d be nice to know because I’d like to have the option to allow head turning or lock the head rotation.

You can setup characters and movement components to follow/not follow certain parts of the player controller rotation.
Probably just that.
Have a look for ‘Use Controller Rotation’ or similar in the CharacterMovement component.

I did look in to that, but there seems to be something fundamentally different between the first person character and the 3rd person character in each template. As an example: If your in first person template and you use your WASD keys, you will walk forward, walk backwards, strafe left, and strafe right. However, when you are in the 3rd person camera template your character will walk forward, face and walk backwards, face and walk left, and face and walk right.

With the basic setup at the beginning of the thread you get a little of both. When I set up the True First Person camera, I could rotate it 360 degrees while standing still while not rotating the player character. While running the view would seem to move my character in my looking direction. It seems like movement across the Y axis effects the player character differently between both templates. In the First Person template, your whole capsule rotates around as you move the mouse. The opposite is true in the 3rd person template.

bOrientRotationToMovement causes what you describe.
From C++ Third Person Template character constructor:


    // Don't rotate when the controller rotates. Let that just affect the camera.
    bUseControllerRotationPitch = false;
    bUseControllerRotationYaw = false;
    bUseControllerRotationRoll = false;

    // Configure character movement
    CharacterMovement->bOrientRotationToMovement = true; // Character moves in the direction of input...    
    CharacterMovement->RotationRate = FRotator(0.0f, 540.0f, 0.0f); // ...at this rotation rate
    CharacterMovement->JumpZVelocity = 600.f;
    CharacterMovement->AirControl = 0.0f;

Its been few months and I don’t want to resurrect old thread, but if someone else will stumble across this, you can lock rotation in blueprints project, by adding “Set Use Controller Rotation Yaw” and setting bool value depending on the camera boom arm length.

I tried using this in the shootergame sample. I made the first person mesh the same as third person as well as blueprint. Everything works. When I aim down tho, the arms seem to cover the entire screen and u can see more of the gun while when I aim up, you see no arm mesh or anything and your gun and arm have went down the screen. How do I fix this? Is it with the aimoffset blendspace?

@Game_God, the short answer is yes, you do need to setup an aimoffset blendspace.

I’d like to see more discussion on setting up True FPS, since we had a decent go while working on Wake Up Call, but we ran into all kinds of problems with stretching and aim offsets. Can some experienced people drop a line on their process(es)?

I’d also like to see someone else with a bit more experience add to this. Its easy as pie to set up the camera Unreal Engine 4 Tutorial: Horror Game - Part 12 "True FPS Camera REDUX 4.7" - YouTube
but as Game_God mentions when you set this up with the ShooterGame demo, the arms don’t move with the camera and no one has detailed how to fix this with a blend space. I’m going to try to figure it out myself and if I do I’ll be sure to post back here.

Was curious, how’d you get the character to aim up/down with a weapon? I’ve tried driving a spine bone rotation with the Character Controller look up/down. But I’m getting some weird moblur/Temporal AA artifacting: Dropbox - hand jitter.mp4 - Simplify your life

Use GetBaseAimRotation() - Actor Rotation to get an aim offset.
The use this offset in your animation Blueprint to drive an blend space or some IK nodes that make your character aim.
The easiest fix for the motion blur issue is simply to disable it :slight_smile:
There is no Temporal AA fix.
It doesn’t like patterned things.
We still get weird blur effects from it.

This might be the aimoffset you’re looking for.