Home Technical Talk

[Steep] Tech or method used to deform the snow ?

Offline / Send Message
Pinned
Hi guys !

I was wondering if any of you knew what is the tech or the method used to deform the snow in the Ski game Steep by Ubi ; or if any of you had any input about how to do it ?

I've already looked for the Batman Arkham Origins Method [GDC Vault Presentation], and searched for an adapted way to do it in Unreal Engine 4. I found this guy post on ArtStation : Dynmanic Snow deformation in UE4, but this method is limited to plane surface.

So I was wondering if any of you guys had any idea on how to create deformable snow in UE4, like in Steep.

EDIT#1: Or if any one had any idea on how to adapt Sean Puller's method in order to get it working on any surface (not only plane)

Thanks all, and sorry for the english (I'm French)

Replies

  • Jakob Gavelli
    Options
    Offline / Send Message
    Jakob Gavelli interpolator
    Unreal 4 pretty recently added a feature that lets you get the UV coordinates of a line-trace. Which means you can trace to a rendertarget.
    Have a look at this video for the basics : https://www.youtube.com/watch?v=1Z-V1Buk6z8
    I don't know if this is exactly what you're looking for as I never saw or played Steep, but should be ONE solution to the problem?
    Using this technique I made a blueprint that can replace any staticmesh or landscape to support this kind of deformation:

  • Froyok
    Options
    Offline / Send Message
    Froyok greentooth
    You may find some insights in how the snow deformation was made in AC3, since they had non-planar surfaces as well. https://www.gdcvault.com/play/1017710/Rendering-Assassin-s-Creed
  • marks
    Options
    Offline / Send Message
    marks greentooth
    There's some talks about one of the Tomb Raider games recently that did a similar thing, in a similar way, but I don't have a link 
  • t_beaugelin
    Options
    Offline / Send Message
    @Jakob Gavelli Okay ! You method seems pretty great ! Might lok at the video you have given to me :) Thanks ! One question, does this method support non plannar surface ? I guess it is, since you can attach the render target to the feet.

    @Froyok I'll defintly look at this !

    @marks If you find a link, I'm taking it !

    Thanks all for your quick answers !
  • Jakob Gavelli
    Options
    Offline / Send Message
    Jakob Gavelli interpolator
    yeah, doesnt matter. It's a trace down from the feet, what it hits gets deformed. Doesn't matter what angle or whatever it hits.
    The drawback is that EACH object you want deformable needs a separate black/white texture with probably 128x128 up to 1024x1024 resolution depending on the size of the object.
    So for a massive landscape I don't think it's viable unless you come up with a clever solution. Such as using chunks and unloading the textures or something. So this technique is probably most suitable for smaller areas of deep snow, and not an entire gameworld. 
  • t_beaugelin
    Options
    Offline / Send Message
    @Jakob Gavelli Well for the moment, only the player needs to affect the deformation, so it shouldn't be so heavy to do.
    Any input on how you made it, please pretty please ?
    Thanks !
  • Jakob Gavelli
    Options
    Offline / Send Message
    Jakob Gavelli interpolator
    Look through the 1 hour video I linked, he goes through his material and blueprint setup in a pretty detailed fashion, and from that you should be able to recreate the inverse of what he does in the video. Attach the Linetrace to a footdown event or whatever and there you go ^^
    It does require a basic knowledge of materials and blueprint to get it up and running! So get to it!

    If you need help with it show what you've got when you've tried some different approaches and we can see what's up!
  • t_beaugelin
    Options
    Offline / Send Message
    @Jakob Gavelli Okay ! I'll look at his then ^^
  • marks
    Options
    Offline / Send Message
    marks greentooth
    @marks If you find a link, I'm taking it !

    You've heard of google, right ?
  • Obscura
    Options
    Offline / Send Message
    Obscura grand marshal polycounter
    First and last try... U use a render target and you draw a distance to a point so you get a soft circle. You use an additive kind of render target and you just update that with the fed player position. You need to use "draw material to render target" node and before that you feed the player position into the sphere renderer so it aligns to the player and then you just draw it. But yeah....^
  • RN
    Options
    Offline / Send Message
    RN sublime tool
    Please correct if wrong.
    The deformation itself is done in the vertex shader of the snow mesh. You sample the render target texture in there and then move the snow vertices down from their original position based on the colour that you sampled (the same colour that you're using to define steps on the render target).

    You can then do some things like fading the render target back to its "neutral" colour with time, so the oldest snow steps raise back again.
  • Obscura
    Options
    Offline / Send Message
    Obscura grand marshal polycounter
    I think that is only possible with 2 render targets. One rendered as additive and a simple overwrite one.  And you would render the simple one when the player doesn't move and you would subtract it from the final material. I'm not sure though, I haven't tried this, but this would make sense.
  • t_beaugelin
    Options
    Offline / Send Message
    Hello guys !

    If I've made some progress, and I want to show what i got and ask for help, should I start a thread in the UE forum ?
    Because it's not really related to do it here, so I was wondering...
    Anyway, I'm posting it here : 
    For the moment, I'm trying to reproduce the method used for the first part of the video @Jakob Gavelli linked, but in the same time trying to adapt it in order to make it work with the feet of my character... I think I'm close, but it appears  that either I'm badly doing my LineTrace, or it is bugged. The black plane is the plane where the magic is supposed to happen. (See screenshot).
    The trace is working great on a "normal" plane, but when I walk on the Blueprint plane (like I said, for the moment I'm following the vid), the trace suddenly does not work correctly anymore.
    Any advices ?

    Thanks all for your input !

    PS: @marks Yeah I know google, just thought you could have saved it...
  • Obscura
    Options
    Offline / Send Message
    Obscura grand marshal polycounter
    If this is for footsteps, I think its much simpler to just attach a collision volume to the foot, and binding an event when it intersected with the ground. No need for ray trace.
  • t_beaugelin
    Options
    Offline / Send Message
    @Obscura No no, its not for the footprints. My footprints system is working perfectly. When I'm walking on the black plane, it is supposed to leave a white dot after each step, this dot being a little higher than the plane.

    EDIT#01: In other words, when walking on the black plane, it is supposed to displace geometry, on the location of the LineTrace. But the linetrace is not working properly, so I don't know if the deformation system works or not.
  • Obscura
    Options
    Offline / Send Message
    Obscura grand marshal polycounter
    If you show the line trace graph, maybe we can find it out why it isn't working correctly.
  • t_beaugelin
    Options
    Offline / Send Message
    Okay, so here it is.
    The "LeftFootArrow" node coresspond to the red arrow under the left feet in Character Viewport. (The red arrow are used for my footprint system)

Sign In or Register to comment.