- Home /
Aura effect, need tips/advice
Hi, I am trying to create a sort of smoke-effect around the character, sort of like an evil aura very much like this (with perhaps a little distortion to make it appear like a flame):
I was wondering how to go about doing this. The character will be animated and moving around. We tried doing it with the unity particle system, but the effect is very static (texture outline of the figure) and hard to control, with the effect sort of following him around like a trail instead of being around him at all times.
We also tried doing particles in 3dsmax which was connected to his bones, but its not really good-looking, plus it generates a lot of geometry for the particle sprites.
My thought was, if it would be possible to do a shader that creates a sort of animated, transparent material, and the material would be applied to 4-6 animated planes around him, creating something like the screenshot above. Are there any better ways?
Answer by taoa · Apr 18, 2011 at 12:56 PM
From what we can see of that picture, it's a combination of particle effects (pinky smoke around the thighs) and multiple redraws of the character's silhouette.
No need to explain how to make the particle effects.
As for the silhouette, it's more complicated. Therefore more interesting :)
I would first make use of Unity's RenderWithShader feature on the character. Combined with a shader that would only draw the silhouette's color, you'd end up with a render texture containing nothing but that silhouette (Make sure you don't try to use the game's camera for this, just make a new one in your script and use the nice Camera.CopyFrom function. I once tried to do that on the same camera and almost got crazy).
After that it's just a matter of drawing a series of quads around the character (I'd suggest drawing them before the character but turning ZWrite off and then draw the character over that), quads that you'd have textured with your render texture. By making the quads more and more distorted on the top (higher and larger) while keeping the base the same for all quads, you should end up with something very similar to your screenshot. Using a traditional alpha blending in this series of transparent quad should give you this accumulation effect.
If you want this effect to be like a trail, you'll have to draw your quads at previous positions of the character. Positioning and properly texturing all those quads will be probably the most annoying part of all this :p
And if you also want each silhouette of the character to be of a particular time before the present frame (say you want the 7th silhouette to be of 7 frames - or fixed fractions of a second - before), then you'll have to store as many render textures as you want different silhouettes. So you will probably want to consider to not do your RenderWithShader on the entire screen but just on the bit where the character is, so that you can use much smaller render textures.
I probably scared you to death with all that. But this is all feasible ^^ Just ask if you have more questions.
$$anonymous$$ore like excited me to death xD Let's see, where to start. The particle part is ok, no need to delve deeper there.
Getting the silhouette color is the part I don't quite see yet. How would I go about doing that? I am thinking a separate camera attached to the character pointing at it at all times, putting the character on a layer so the camera can cull everything else besides the char, and then do a render texture, but then what?
Then apply your render texture on a quad (billboard) that is drawn at the same place than the character (placement will require some fine tuning, but you'll manage! ^^). Of course, you'll have to stretch the quad a bit towards up, and move away the top two corners a little bit to obtain a result like in the picture. Or do whatever you want if you want another result. Rince and repeat a few times to get the accumulation effect. Done. Sell. Win billions.
Your answer
![](https://koobas.hobune.stream/wayback/20220613123518im_/https://answers.unity.com/themes/thub/images/avi.jpg)