Making Callisto's Wind

-2017.7.18 3:00pmA gust of wind from the game

In Callisto, I needed to add some motion to the scene, some visual activity to make the place seem alive! Since it's technically a fairly barren ice moon, with more snow than life, it made sense to add something to make it look windier.

I quickly settled on a cartoonish looking wind swirl, which you can see above! It looks cool, it's easily recognizable, and it's super easy to implement quickly! I didn't even need to write a custom shader for this, as it's accomplished entirely through scrolling the UVs on the material.

Mesh up top, UVs with the final texture on the bottom.

The trickiest part about creating this effect was making the mesh for it, and even that was pretty simple. This was accomplished in Blender using a Bezier Curve with a simple bevel object to create the swirl mesh, with some easy auto-unwrapping for the UVs. If you want more details here, let me know, and I can write a little more about it!

A trick with a broad range of applications.

The important part of the mesh is getting the UVs right! We want the wind streaks to travel horizontally over the mesh, but we don't want the streaks to be always visible. You can see that my UVs are all bunched up on the left side of the texture, with the streaks on the right side. As the UVs scroll to the right, the streaks will then fly across the mesh!

And this is the script I use to make this work! I also have another script that I use, where I call Destroy(gameObject, 1f), the timed overload of the Destroy function, so that the wind streaks only appear once.

There's a lot going on here, but the gusts really make the place feel windy!

Here it is in its final context! You can see I also added some simple blowing snow/dust particles as well. The swirl by itself can't be repeated very often, or it looks repetitive, but it also looks quite out of place just occasionally on its own. The particles allow for a constant sense of wind that allows the gusts to fit in much better at large intervals :)