Loading video...

Video Failed to Load

Go Home

Here's a custom rendering tech I implemented into Unreal for our latest PJ Rascals project ๐Ÿฆ ๐Ÿน More in thread below ๐Ÿงต

20,988 views โ€ข 2 years ago โ€ขvia X (Twitter)

10 Comments

Piston ๐Ÿน๐Ÿ’™'s profile picture
Piston ๐Ÿน๐Ÿ’™2 years ago

In Overwatch (and most FPS games), changing the in-game Field of View (FOV) value does not affect the character's weapon and hands (view model). This is because the game renders view models with a separate FOV value.

Piston ๐Ÿน๐Ÿ’™'s profile picture
Piston ๐Ÿน๐Ÿ’™2 years ago

Most players probably use the highest FOV value - 103, and you can see how that value would look on Tracer's view model at the start of the clip.

Piston ๐Ÿน๐Ÿ’™'s profile picture
Piston ๐Ÿน๐Ÿ’™2 years ago

Each hero has a unique view model FOV value, defined by animators for whatever makes the framing and poses look best. One way to get a close approximation of the value is to line up a screenshot with the pose. ( clip by @Jupiiit )

Piston ๐Ÿน๐Ÿ’™'s profile picture
Piston ๐Ÿน๐Ÿ’™2 years ago

In Tracer's case, her view model's FOV seems to be ~80. As a bonus, here's how changing player FOV looks in-game. Notice how the view model stays in place.

Piston ๐Ÿน๐Ÿ’™'s profile picture
Piston ๐Ÿน๐Ÿ’™2 years ago

Here's a great GDC talk about first person animations in Overwatch by @mattheweboehm !

Piston ๐Ÿน๐Ÿ’™'s profile picture
Piston ๐Ÿน๐Ÿ’™2 years ago

Now the technical aspect of this: The idea and matrix math is based on this code: However, my implementation is different.

Piston ๐Ÿน๐Ÿ’™'s profile picture
Piston ๐Ÿน๐Ÿ’™2 years ago

The original code was made for gameplay purposes (getting the player's viewport, etc), but our projects are not meant to be playable. We have a "sequencer-only" workflow for anims which allows us to quickly set up everything needed for a given shot and load it on any map.

Piston ๐Ÿน๐Ÿ’™'s profile picture
Piston ๐Ÿน๐Ÿ’™2 years ago

That's why I implemented the whole feature within the mesh component. You can also see a camera reference variable used to link the "real" (world) camera. Additionally, I needed to modify vertex factory shaders to make this work in UE5 (I love extra headache ๐Ÿ™‚)

Alex's profile picture
Alex2 years ago

@PJRascals Really cool! do you need to handle muzzle flashes and other non-StaticMeshComponent things? For gameplay stuff I had to transform pretty much everything FP related (muzzle flash, ejected shells, thrown mags) and a shader based solution made more sense.

Piston ๐Ÿน๐Ÿ’™'s profile picture
Piston ๐Ÿน๐Ÿ’™2 years ago

@PJRascals thanks! most effects we use are non-particle effects embedded into the 1p mesh as extra sections, so we don't need to mess around with particle systems. tho it might become a problem in the future once we decide to use them

Related Videos