Disintegration/Dissolve

I’m part of a team working on a game

Being a game, you tend to shoot a lot of people in the game. Usually when you do that, they fall down with holes in them. But, this game’s in the future… and in space. Falling down dead isn’t enough. We wanted certain weapons to disintegrate or dissolve our bad guys in interesting ways.

It’s a mobile game also. Mobile isn’t the limitation it once was, but it still forces us to be aware of performance impact.

I found a few UDK 3 tutorials on dissolve and adapted the technique to UE4. Once I got it working as a UE4 material, I expanded it into a material with several parameters:

  • a texture to control the dissolve. A vertical gradient, for example would cause the dissolve to start at the bottom and move upward (well, currently depending on UV alignment) while a noise pattern will cause holes that grow larger
  • two colors used to control the effect at the edge of the dissolve. A red and an orange color create a burning effect, while a blue-green combination creates something that feels more like electricity
  • emission boost - a number used to control how brightly the edge glow
  • dissolve amount - set from 0 to 1 in a blueprint or from code to make the object actually dissolve. A value of 0 means no dissolve, and 1 means completely dissolved.

It’s still very much a WIP, but the results are promising so far. It runs well on mobile and we can get quite a bit of variation in effect by changing the texture and colors, meaning different space guns can disintegrate different space baddies in different ways. All of the following videos are using material instances based off the same base material:

Here’s a very rough disintegration effect using a proxy bad guy:

[video]

(older versions:)
[video]
[video]

An electrical dissolve:

[video]

A cloud-noise based disintegration:

[video]

A mosaic-based “digital disintegration”:

[video]

Noise-based disintegration with smaller noise pattern:

[video][/video]

A hair-like image-based dissolve:

[video][/video]

A blurred hair-like image gives an effect similar to a Star Trek transporter:

[video][/video]

Vertical gradient gives a very even “burning up” look:

[video][/video]

And a vertical gradient that’s been distorted a bit, gives a more natural “burning up” look, similar to Assassin’s Creed poster burning:

I’ve got a few details to finalize and a few things I want to improve in the material (including adding an option to use screen-space UVs rather than object UVs), but once I’m happy with it, I’ll probably do a tutorial and give out the base material. I probably won’t give out the specific material instances we decide to use in our game for obvious reasons, but it’s super easy to create new with the base material.

VERY cool! I look forward to seeing your tutorials on this!

This is excellent!!!

This looks great. I can’t wait to see the tutorials!

The effect in the skelekill mov is awesome! The glimpse of the eyeball in socket as the proxy bad guy disintegrates is a nice touch and adds depth to what otherwise might simply look like a texture disappearing.

Thank you, . The first thing that struck me when I was working on the dissolve material with spheres and cubes was that the dissolve effect made them look hollow - like they were a shell without mass. Sticking the skeleton inside a character was an attempt to mitigate that feeling of hollowness. The dissolve pattern leaving the eyeball for last was pure serendipity, though… I can’t claim much credit for it.

These videos above are just done with Daz3d models in an empty Unreal template project. Now that I’ve got a general dissolve look I like. I’m pretty sure our artists will improve it greatly. They’re already experimenting with additional dissolve layers for armor and internal organs and with adding particle .

I’m pretty excited to see what we end up with.

hi ,
can you tell me how you dissolve the human body? are all textures instances that are based on the same base material, which has a dissolve function? or is it done another way?
thanks,
Ben

The long and short of it is that I create dynamic material instances for each piece to be dissolved. That instance has a parameter that controls how disintegrated it is. 0.0 is not disintegrated at all, 1.0 is fully disintegrated. The material uses a blend mode of Masked, and there’s a noise texture is plugged into the Opacity Mask pin. Well, it’s not directly plugged in to the Opacity Mask - I use the parameter to drive some image processing on the noise filter and then use the filtered texture to drive the opacity mask.

When the character is hit, I create a dynamic material and replace its existing material with the dynamic one. I also make the skeleton (which is a separate USkeletalMeshComponent from the main character mesh) visible and give it a different instance of the dynamic material.

I set the dissolve parameter over time from 0 to 1 on the body. I think the example above dissolves in about .75 seconds. After a delay of .2 seconds, I dissolve the skeleton the same way.

There’s more to it than that, and more parameters, but that’s the basic approach. I’m planning to do an in-depth tutorial. I’ve started writing it, but it may take me a little while to find time to get it done.

Thanks , that helped me a lot :slight_smile: it’s still looking very basic, but I have my own dissolving material now and applied it to a whole character (using instances). thanks!

I’ve written a 6,000 word step-by-step tutorial on how to create the effect. I also managed to simplify the graph node a little. The blog post will be targeted at beginners to the material system, but will include a project containing the material for anyone to download. It should be up this coming week some time, possibly the following week. I just need to wait for it to go through a few rounds of editing and then it’ll go up on the company blog.

I like it to be fair, Wish the ability to emit from masked areas was added :frowning:

AWESOME, . Loving the effect!

DieByZero:

That’d be a neat feature. I’m not sure if it can be done with an opacity mask, though. I haven’t tested it, but I assume the mask affects all the pins, so it would probably require another material layer to achieve. Something to experiment with, though. Thanks for the feedback.

So cool!, this is very similar to some of the switch that I’ve made for “Switch” :smiley: Your electric transition is definitely my favorite.

(And this one from the UDK days:)

Thanks, Tom! I’ve watched several of your videos and wondered “how did he do that”. :slight_smile: In fact, one of my artists a few days ago sent me one of your videos asking if I could implement an x-ray material similar to one in one of your videos.

I like the mosaic-like dissolve in the second. I achieved something similar with a mosaic image driving it, but it wasn’t as fancy or clean as yours.

Well, it took it a long time to get it through copy editing and design, but here’s the tutorial I promised: Disintegrating Baddies: Dissolve Effects in UE4

Good job , Keep it up.

Wow this is really awesome, devoured the whole tutorial already.

This tutorial raises the bar, pure quality !

Just an fyi for people that may cast for an actor and then dissolve it, you may want to use the ‘Play from Start’ input for the timeline. I found using just play would dissolve the first actor and the subsequent actors would just vanish as the dissolve value stayed at 1.

So, I guess you are saying that we have to add this material instance to every object that we wish to dissolve?