How to make a Sand Material that reacts with the player like in "Journey"?

Hey guys,

i already posted on the answerhub, but i think the forum is way more suited for a
helpfull discussion.

I want to know how i could make a Material that reacts to the Player walking through it.

Like here:

Let it be sand or snow.

Is it possible to tesselate the material around the player in order to achieve the effect?

It looks definitely very nice and adds much to the overall scene. But tesselating the entire floor (or having it at a high subdivision level anyway) might not seem reasonable. Hmm… Can some of the experienced users give an opinion onto ?

Decals with only a normal map maybe? Not sure those are supported.
For reference: an image with footprints in snow is at the end of the section “Normal-mapped decals” just before “Alpha blending”. I’ve been looking at deferred decals for university and stumbled over that page a couple of days ago.

Hi eXi,

is a very similar discussion to the one that is taking place over in thread.

There is a link to a document power point for how they did the Sow in UE3 for Batman Arkham Origins. The same methodology could apply here as well by using Heightmaps to generate the effect.

I hope helps! :slight_smile:

So, if i understood correctly,

they are using a heightmap that is set to 1 at default. If something touches the ankle high zone
it will change the heightmap at place to 0. And than they just blend between an untouched
snow version and a deformed snowversion with the heightmap value?

But how is zoned made and is possible with a landscape? Because a flat area wouldn’t
be enough :confused:

EDIT: Ok i found an article of the game that tells they used 3 heightmaps for in “Journey”
because with only 1 they would need 4 Playstations to get to run >.<

I hoped there would be an easy way to get something like to work. :confused: hmpf

It would be in the landscape material, not the landscape itself, if I understand correctly.

If only games were that easy to make! :slight_smile:

I’ve felt the same way about some things I’ve seen before. You see amazing thing and then find out that what seems so simple really has a lot of underlying work to make it appear so great. I’ll tell you though, the pay off of getting something working and really seeing it amaze is a great feeling.

Good luck and if you get something going please update and help others, like yourself, get started with some cool ! :slight_smile:

It seems that the method for Batman would not be viable at all for landscape materials, right?

Yeah I was going to mention that as well, in the presentation they said will not work for landscapes unfortunately. Not sure how you could make it work with a landscape, but worth investigating! :slight_smile:

I know it’s not easy to make games. I just thought there would be an “easy” way since the Stylized Demo shows so many great
by using a few Material Nodes.

@All: Journey used 3 Heightmaps. One for the dunes in the background, one for the normal dunes and one for the little details
in a small area around the player. But i couldn’t find an explanation on how they achieved the overall effect.

I also don’t have an understanding on how to do at all.

You won’t change the actual height of the Landscape mesh, you just use an invisible factor to blend betweed the materials
and fake the effect of a lowered sandpath, don’t you? Than the thing is, what do you use to factor out the materials?
Journey is doing it the some way as Batman. They use a heightmap and blend between materials.

But i don’t understand how you would determine the place where the player steps. Is it a volume that has a function to
get the pixel where a players feet stand? :X

In the Batman presentation linked in the other thread, they swap out the materials to pure white and then render with an orthographic camera from below. Width and height of the camera are the same as the snowy area, height is about ankle deep.

That gives them a black and white texture showing exactly where anything is inside the snow. From there the texture is blended into the heightmap and then that heightmap recalculates its mesh.

Journey doesn’t do it way, because it only really works for flat surfaces.