The basic idea of flow maps is that it contains the flow directions, with each pixel representing a 2D vector. Flow maps allow varying velocity and directions.
The original thought was from Valve’s Software’s talk in Siggraph 2010. I didn’t go to Siggraph 2010 and for some reason I always have the impression I went to listen to a similar talk in GDC 2011. A tutorial about flow maps in UDK came out a few months ago and can be found on UDN.
I learned a lot from that tutorial, and added some features:
– There’s also a switch that you can paint vertex color on the mesh to decide flow directions instead of using the flow map.
– Adjust the normal map according to the flow speed, which make the flow looks more natural. At high speed, the normals are stronger, while at low speed, the flow looks more flat.
– Remove pulsing by using a noise texture.
– Use a detailed normal map to remove repetition.
The thought of making a vertex paint version comes from my concern that the artists who’re going to use them may not know how to create a flow map at first. Painting vertex color in the engine and observing the output in real-time, may help understand the principle and then create the flow map in Photoshop. In some cases where the mesh is reasonable subdivided, the flow doesn’t need very fine detail, the vertex paint method works pretty good if paint with a big falloff so there won’t be any hard edges.
It’s a very interesting topic and make a good use of the texture coordinate. I plan to dig deeper into UV animation and experiment more effects related in the next few days.
:D Unreal is epic!