How did Epic Games achieve this 3D effect on their Fortnite site?

1.6k views Asked by At

I have been looking at Epic Games' Fortnites Website and I am trying to figure out how they achieved the 3D effect on the page:

Epic Games' Fortnite website - scrolled down to 3rd slide

Does any one have any idea how to do it? I would really like something similar to a project I'm working on. I have found Three.js, but I am quite sure that is not the solution they went with.

2

There are 2 answers

1
Martin Schuhfuß On

For these types of questions, i can only recommend to install spector.js and have a look yourself. In short: everything you see is 100% faked.

I mean, that's always the case. In fact, if you want to build something like that, your first question should always be: how much of this can I fake and still get away with that?

In this example, it turns out: everything. Just open the devtools and click through all the assets in the network-tab. You will find these two textures:

texture normalmap

looks familiar, right?

So what they appear to be doing is they are using three.js with some custom shaders to handle the translations, the flickering of the lights and the highlighting. These effects are computed using the normal-map and an additional mask-texture which I couldn't quite figure out what it does. But again, if you look at the scene in spector.js you can see the shaders used for every drawcall.

The only thing that is a bit more complex is the little robot-friend in the bottom left corner. But again, it's not 3d as in meshes and so on but rather a set of flat textured quads running a bones-animation thing.

I think that makes it a really great website after all.

Given that epic is building the unreal-engine I would suspect the original renders were done there. And I agree, the lighting looks really amazing :)

1
Nikolay Babanov On

It is a simple parallax effect using animated sprite sheets.

Parallax effect is achieved by using several layers of images/video on top of one another in different Z-depth.

You can achieve the moving part by using the mousemove event to track the cursor.