Also you have to keep in mind there is not an universal water material for every situation or setting. That awesome sea material you made won't certainly suit in a river or a fountain.
Moreover, on the programming side, water has to react to interaction from players, NPC or even from the weather if you plan to do a stormy scene.
The water in Assassin's Creed 3, a very well done example of sea water. |
So, let's get started. To do this tutorial we will first need a tessellated plane. You can do one by yourself in your favourite 3D program. I usually work with Maya, and it's done in a few clicks
Don't bother about UVs, export it as a FBX and get it imported into your UE4 project. As you may see in the following pic, this is 2500*2500 plane with 40x40 divisions.
Then we will need a normal texture to do our water waves.The textures I will be using are from a Skyrim Mod. One normal texture would be more than enough to achieve the material, but in this case I will be using 2 different.
Also we will need a difference clouds texture. You can make it right in Photoshop with the filter but make sure it's tileable.
The textures used in this example. You may find a download link at the end of this article. |
As you may notice, for this example I'm using World coordinates instead of Texture Coordinates. I do this because I want my material to look exactly the same whether I apply it to a huge plane or a tiny one.
Regarding the panner nodes, those are to achieve the illusion that water waves are actually moving. Note that you have to put some speed on both panners. On the upper one, I have introduced 0,01 and -0,01 for Speed X and Speed Y respectively. while on the second one the values are 0.01 and 0.01.
Now we are going to add some color and specularity variation using a Fresnel. A Fresnel is an effect that was first documented by the French physicist Augustin-Jean Fresnel. Applied to materials, a Fresnel effect allows reflection, specularity, and other attributes to vary according to the viewing angle of a 3D surface
Back to our material, this is how it should be like right now.
Our material looks pretty good right now, but we can still tweak it by adding some waves done through DX11 tessellation Before doing anything, we will have to enable the tessellation nodes by activating the following options in our material.
Notice in this example, I packed 3 kinds of difference clouds in the same texture (that's why it looks rainbowish). Aside that, we are panning our texture slightly faster than the normal maps (I'm using 0,05 and -0,05 for this panner node)
And now to finish, and since I decided to do opaque water, I can still improve it by adding an SSS effect to this material. Simply set the appropriate option in your material properties (see the screenshot) and add a color vector parameter to SS Color node.
Now you can apply you material to you tessellated plane. I did a little setup in UE and this is the result.
Hope you like. And remember, there are several ways to achieve a good water material and whole solutions like the VaOcean Plugin which is quite impressive and is more than just a material.
And here, you may download the textures used for this material. And that's it!
can you make a video tutorial? lol
ReplyDeletei must be stupid, cause im copying the whole folder from the JAR/ZIP to my Content folder in my UE4 project, but it looks like a concrete plane instead of water when I apply your texture. :(
ReplyDeletethx!much detailed than the wiki tutorial.
ReplyDeleteThanks! Super helpful and quick.
ReplyDelete