- Home /
Creating a "daredevil" vision aka SONAR vision ( like The Dark Knight)?
Hello Devs,
I am trying to make my player blind and help him by an echolocation effect. It would be a spherical wave that would transcend from the player's position. My environment is dark and during each wave it spreads for about 'n' units from it's position to describe the environment. So my end result would be in reference to these pictures. I do really like the tone of the pictures too.
DAREDEVIL :
well, Jennifer Garner is beautiful :)
BATMAN :
When the environment is fully described and the player is always under constant motion. The problem added on top of this is that this experience is just temporary. I might also turn it to normal vision if the player achieves certain goals.
Technical Help :
I am not sure as of how to approach and get a solution. The only path that I could think of is to use shader and manipulate what I need. My experience in shader is very limited and hence is my creativity with shaders. I really need some help to start with or how to face the issue.
WHAT I HAVE DID SO FAR :
I did have a custom echo shader and it did not work quite well. It was basically a modified version of this blog http://www.seethroughskin.com/blog/?p=1716
ISSUE WITH THE ABOVE IMPLEMENTATION:
On a visual perspective, it just colored the meshes which wasnot what I wanted for. I also had to manually change the material on all the required meshes which I found not be the right way, as I might completely change this echolocation experience at certain point.
I highly appreciate your help. If the above approach is not viable or if you guys suggest some other approach please let me know.
Thank you,
Karsnen.
I'm just guessing here so sorry if it's not helpful. As I understand, this echolocation would not give you a fully crisp picture of your surroundings.. because if it would, you could just create some kind of post processing on the whole image, to get this feel (the tones, blur, bloom, etc.).
The post process is still very important for this, because you can manipulate the image, not individual vertices and stuff. For the effect I think you should swap the material on all objects, or create a shader that can handle both. Basically you need a very simple shader for your objects here, the rest should be done in post process.
You should first try to achieve an effect like on the second picture, without the wave effect, but using it's core idea. Because the wave propagation would be quite intensive computationally, just simulate it. The waves would come back best if they hit a surface that's facing you. The more the surface facing away from you, the less information would return to you about it. This part is easy to compute in the shader, you just use the surface normals and the view direction, and take the dot product of them. This can be used to apply a "brightness" value to the pixels (or vertices). After this basic brightness value is computed, you can refine it based on whatever reasoning, for example objects that are closer, return slightly more brightness because more indirect waves are likely to bounce on them and back to you, and this way you can bring back some of the realism you lost with the simplification. To top this, you can add a randomization to the final values to get a more "moving", "flickering" effect, so it changes in time too.
If you want to spot enemies in this mode, you can cheat here, and for the effect's duration, make your enemies brighter through manipulating their material. That way they can be brighter parts of the image, then you apply the postprocess/blur/awesome tone stuff to make it blue, increase contrast, add a ***load of bloom to it, film grain to simulate perception errors, or even depth of field.
z_murc I think it would work. Lets say that I am not going to consider the wave effect for the moment but just concentrate on the brightness of the objects that are closer and make the environment dark everywhere else.
I think it would be better to go ahead with vertex rather than pixels (fragments).
Now I have to try it out. If you happen to get with any another ideas like this, please do let me know. I appreciate your help.
Hi,
Im trying to do something similar with echolocation. I couldnt find much information about how to use it. Since this is an old comment I would like to know if anyone found something useful or maybe how to start on it?
Thanks.
Answer by dragon489902 · Apr 19, 2017 at 09:29 PM
Yo! One thing you might look at is https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0ahUKEwjFmr2L4KvTAhUO3mMKHYPnDhgQFggnMAE&url=http%3A%2F%2Fwww.devilstuningfork.com%2Fdownload.php&usg=AFQjCNF3yzxVyc-BmJvZ_8q-GK8Cs7K_uQ
God that link is obscene. But it's a game, Devil's tuning fork. I copied the link from google, that's why it's crazy... But it does an incredible job with echolocation. Also from what I know the Daredevil thing is flaming BS. It's NOT echolocation at all. It looks cool tho XD
Hope that helps! -Dragon489902