- Home /
Dematerialisation Effect
Firstly, sorry about the name, I can't think of a more suitable description for the effect.
Hi all, I have been looking for a way to achieve a specific visual effect in Unity3D. The effect would be of a model changing into "energy" and then that energy being drawn to a singular point in space. A similar effect to the capturing effect for Pokemon Origins; shown in the GIF below.

I've already tried using particle systems, but the amount required kills the frame rate. I was hoping to achieve this with some advanced shaders. Unless someone here can think of a better solution?
A Blendshape can do it in conjunction with a good shader.
Answer by Scribe · Jan 11, 2015 at 07:12 PM
As meat said, and animation or blendshape to make your geometry collapse to a point would be a good start, here's a little test shader I made to try the effect out, you can change 'Amount' from 0 to 1 to blend the effect:
Shader "Custom/Dematerialize" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_BumpMap ("Bumpmap", 2D) = "bump" {}
_MainColor ("Main Color", Color) = (1.0,1.0,1.0,1.0)
_RimColor ("Rim Color", Color) = (1.0,1.0,1.0,1.0)
_Amount ("Amount", Range(0.0, 1.0)) = 0
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf SimpleLambert
sampler2D _MainTex;
sampler2D _BumpMap;
float4 _MainColor;
float4 _RimColor;
float _Amount;
half4 LightingSimpleLambert (SurfaceOutput s, half3 lightDir, half atten) {
half NdotL = dot (s.Normal, lightDir);
half4 c;
half t = (NdotL * atten * 2);
t = lerp(t, 1, _Amount);
c.rgb = s.Albedo * _LightColor0.rgb * t;
c.a = s.Alpha;
return c;
}
struct Input {
float2 uv_MainTex;
float2 uv_BumpMap;
float3 viewDir;
};
void surf (Input IN, inout SurfaceOutput o) {
half4 c = tex2D (_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb*(1-_Amount) + (_MainColor*_Amount);
o.Alpha = c.a;
o.Normal = UnpackNormal (tex2D (_BumpMap, IN.uv_BumpMap));
half rim = 1.0 - saturate(dot(normalize(IN.viewDir), o.Normal));
o.Emission = _RimColor.rgb * lerp(0, pow(rim, _Amount), _Amount);
}
ENDCG
}
FallBack "Diffuse"
}
I didn't know unity had support for blendshapes, I had actually already built the effect using blendshapes + geometry cache in $$anonymous$$aya but wasn't able to export to Unity reading that it only supported rigging animation not vertex animation.
I also tested out the shader and it gives a pretty good effect using some random noise for the bumpmap, and as a plus it also works with my camera post effect.
Glad you got it working nicely :) I'm sure that you could make better effects than this shader but its a nice start! Thanks for marking as answered.
Answer by RetepTrun · Jan 11, 2015 at 06:38 PM
Maybe fade out using the alpha of Mu's texture while increasing its shininess and simultaniously do a particle effect for the green dots, and add some other shiny distracting particles. Also have Mu scrunch up into a ball as much as he can really fast.
I think actually morphing him into lightning or whatever would be really hard.
Thanks for the feedback, unfortunately I'm utilizing a custom TriangleDepthNormals edge detection post effect that doesn't play well with transparency.
Your answer
Follow this Question
Related Questions
How on earth did they create Elizabeth's tears? 0 Answers
Losing image effects in build process 1 Answer
Trying to achieve this color effect 0 Answers
Vortex Image Effect 1 Answer
Subnautica like underwater effect / rays 0 Answers