Interactive, shapeable Snow

Hi there.

I am a total beginner with UE, and is probably waaaaaay over my head. I was wondering if it is possible to create interactive snow/sand?

For example, if my character has a shovel, and I poke the shovel into the sand/snow, and pick it up again, will I be able to dig a hole based on how hard/deep I poke my shovel, and create a proportionally sized mount when I unload my shovel? Can I shape mound then, like a sandcastle?

To be more precise, I want to try make a snowball fight game, where you can pick up snow anywhere on the ground, form a ball and then throw it. Where you picked up the snow should be a realistic hole. If, for example, you dig enough, you can make yourself a little trench to hide, or if you pack the snow, you can make a wall. So I want to be able to manipulate snow in the game the same as you would be able to in real life. The snow doesn’t have to look realistic (it can be stylized or whatever), but it should act realistic.

My gut feeling tells me that might not be possible, and even if it is, would probably make mince meat out of your cpu or gpu. But no harm in asking, right?

Thanks in advance!

just a guess, but you might be able to simulate effect by using destructive surfaces… by tesselating your terrain in pre-established holes all over the place… then as you perform an action with your character… you could destroy the mesh… then spawn a snowball into your hand…

Hi,

@: wouldn’t necessarily be the best option because you would need different depth layers for destruction and I believe there is a limit of 5-6 layers. I may be wrong on that but It’s not an infinite amount.

Using something like Morph Targets or swapping out meshes that would simulate kind of effect would be a better more optimized route.

is just my theory on creating something like and there may be better ways but I’m just throwing out some ideas here.

You could have multiple meshes setup with different holes and depths to them. When you have your player doing the digging motion you can use a snow-like particle effect around the shovel like it’s being tossed around and dusty. Swap the mesh out when the animation finishes and you now have your new mesh that has the hole in the ground.

would be where I would start if I were looking into type of effect.

I hope helps.

Hi

That sounds like an idea. But will that work on a large area? Eg, if I want to hold my snowball fight on a playground?
v=wJFE2pb0Ri4
If you look at video that I found (it’s for blender) I’m looking at a similar effect to number 6, 8 and 9 in the video.

If you’re just swapping out meshes can work however you have it set to work. You can have multiple BPs setup to have different styles and swap the meshes that way.

#6 is using cloth (not specifically Apex Cloth, which wouldn’t work with type of effect) to get the deformations. You can use that to get your different meshs with the deformations but you cannot dynamically create that effect in the engine without coding some things in source I’m sure. You could fake doing the mesh swapping I’ve suggested though. It will take some work to get right but can be done.

#8 would be a destructible style mesh. However, it is key to remember that demo is a rendering demo and not necessarily something that is running in real-time meant for games. That type of destruction would be run off the CPU only and would be very taxing on FPS. If you want a demonstration of , setup a cube Destructible Mesh in UE4 with a fracture value of 500-1000 pieces. Set it up so that it will destroy on impact when you drop it and see how much that impacts FPS. method really isn’t feasible IMO.

#9 The same applies to #9 for all the reasons listed above. Also, the Directional Wind actor does not affect physics. It will work with Apex Cloth and foliage assets when the material has been properly setup.

Batman Arkham Origins was created in UE 3 and had some seriously good snow. It might not be suitable for what you’re doing but it could point you in the right direction. (Also if you find anything concrete about how they did it, please let me know. :slight_smile: I’m pretty sure it’s just a heightmap being transformed with stamps/decals, but it was a really cool effect.)

Alternatively you could use very high resolution voxels, maybe even one voxel per unit giving you centimeter resolution. From there you could apply a marching cubes/marching tetrahedra algorithm to give things a more smoothed out, natural feel. Space Engineers is a good reference, but they’re using much larger voxels than you would want for something like , probably 100x the size I believe.

You’ll want to set a pretty low height/depth. I’d say 32 centimeters is probably high enough, though 48 or 64 might even be reasonable if you want some levels with deeper snow. Each chunk should be full height in Z, and then whatever size ends up working for you in x and y. (Same chunk size in all axes makes things pretty easy to keep track of though.)

You’ll have to pretty severely limit your worldsize, or at least the interactive snow parts. Obviously test rather than taking my word but I’d estimate a 10x10m playable area would be a reasonable size

If you keep a single material type for the entire level, then you should be able to do some serious compression in memory relative to other voxel systems that need to be able to represent many different types of blocks. Or you could try to put some other metadata in there, such as wetness or density, and have those affect the simulation.

sounds like a pretty cool project, let me know how it goes!

Hi All

I really like and 's ideas and I will try them out! Like I said, I really am an amateur still, so it might take me quite a while to get the hang of it and make it work, but at least I know now that there are some options! Thank you all for the input!

Hang in there with it and if you get stuck feel free to ask questions here and on the AnswerHub. There is a really good community here that is willing to help out! :slight_smile:

I saw tutorial a while back and it looked really interesting, so I thought I would share in case you are looking for a similar effect.

is a snow material that can ‘grow’ on a surface over time, allowing snow accumulate on a surface dynamically during the game driven by a blueprint. Add on top of that a snowing particle effect and it could look really good! I have not had the time to go through the tutorial yet (it is split in 2 parts), and it doesn’t help with your original request of digging into snow, but could be a helpful effect for adding to the realism of your scene. Hope you find it useful! :slight_smile:

https://forums.unrealengine/showthread.php?8986-Dynamic-tessellated-snow-material

I think documentation page will be interesting for you: ://udn.epicgames/Three/DevelopmentKitGemsRealTimeDeformation.html Probably you will get it to work/are abel to re-create it in the UE4 :slight_smile: -> with tessellation you could theoretically dig into a mesh, but I dont know how it will look like for the performance of your game ^^

@: Here is a GDC power point where it is outlined how they achieved the effect in Batman Arkham Origins.

://www.gdcvault/play/1020177/Deformable-Snow-Rendering-in-Batman

1 Like

Much appreciated! That’s a really clever way to alter the heightmap… Runtime cost doesn’t seem to be that bad either.

Do remember that was in UE3 and not UE4. But Yeah I definitely agree it’s a cool way to get the and have something like that! :slight_smile:

Wow that is an interesting way of doing it, too bad it can’t be done with landscape as well, but definitely an interesting read. Thanks for the link!

Hey, Sorry to revive an old thread, but I am interested in using the technique created for Batman Arkham Origins! Before I got started I was wondering if anyone had already successfully implemented the same technique and could save me some time trying to figure it out.

If no one has, does anyone know how to generate/alter height maps in real-time?

Looking at the presentation, I dont think it would really be that difficult to setup, seems to have a few similarities to my Fluid Surface actor. ie Using a ping pong buffer. I reckon someone could easily modify my to do the job. Biggest would be performance, you would need to implement the dynamic allocation of these surfaces around the player (Maybe have some kind of manager keeping track of things).

If I have a need for such an effect, I will give it a go then.

Can you elaborate a bit on that?

Looking through it how it was done in Batman it seems pretty straightforward, at least the solution based on tesselation.

Only the generation of the heightmap seems a bit complicated. First hunch would have been to use a SceneCapture2D but it doesn’t support orthogonal rendering.

Yeah, the generation of the heightmap is the only bit I’m struggling with, anyone have any ideas?

Its there a tutorial about or an example ?

I see in the Company of Heroes 2 too and the maps are large with permanent 3D snow steps (Characters and Vehicles):

https://dl.dropboxusercontent/u/28070491/UE/Forums/3DSnow.jpg

Anyone came around to implementing ?