Monday, 7 January 2013

More Bits and bobs and a look into the future


This section will serve as an explanation of some of the other things I’ve been working on for ether that didn’t really need a whole section made for them, as well as a look into what I’ll be working on next.

First I could mention Lens Flares. Lens flares were made through textures in Photoshop. In order to save memory, 3 different lens flares were comprised in one image. To do this I simply painted monochromatic lens flares into each one of the image’s channels (R,G,B) allowing me to have 3 different lens flares in one image. Lens flares were also used to simulate Bloom due to the glitch UDK currently has on DX9, where a yellow Bar appears on the right of the screen if bloom is activated.

 The buoys in the sea were made using the same techniques, only applying a Sine wave for movement in the material.   

The next big thing would be the Skydome. With the same idea in my head of keeping everything reusable and versatile, I created a skydome that could be used for night time scenes as well as day time, dawn, dusk, etc. To do this I made a material network that would allow to change the colour of the sky, clouds (and clouds amount) and stars. This material also allows to edit the amount of stars in the night sky as well as their complete deactivation.



As for the future, for Ether 2 I will be creating a lot of Snow systems, as well as making the season changes more interactive and better. I will continue to try and create the most efficient workflows possible so that our small studio doesn’t have to spend too many resources.

Here is a video detailing a few other things and with better explanations:

I hope you have enjoyed my work so far! Until next time!


Particle Systems!


Particle systems in Ether posed pretty much the same problems as everything else so far. How to make them fit the Ether style? How can we make them quickly? Bellow you will find some of the particle systems I created for Ether and how the process was.

One of the main issues with VFX work is that it can be very time consuming. The other issue is, when making Ether in a hand painted style, you almost want to stray away from using technology too much and avoid normal maps or anything too “techy”. When making particles this was to be the same, however, since we didn’t have much time to meet our deadlines, We allowed technology to do most of the work for us. I figured, as long as the textures look like they belong in Ether, that’ll do!

The first particle system is the Flies that hover around the port’s lamp posts. This was simply made by creating a soft edged 16x16 texture of a yellowish dot. After that, I just applied an orbit module to the particles and adjusted their velocity and spawn areas. A very simple yet efficient particle system.



The second particle system is the chimney smoke. To make this I used a flipbook technique, in which I divided an image in 16 parts (4x4) to create the different steps of the animation of smoke from its birth to its expansion and eventual disappearance. This allowed me to make the smoke look hand painted and fit the ether style, while not having to worry about actual animation for the smoke. When importing, it’s important to check the “Flipbook” option. After that, I edited the material and applied it to the particle system, and after a few tweaks I got the effect I wanted.



For the wind particle systems, we decided to go with something more painterly, as if an invisible brush was drawing the strokes of wind within the world. To do this, a simple, soft edge 16x16 texture was used and a Ribbon Particle system was created. This allowed us to animate the particle system and move it around the level as it leaves a trail of paint on the world. The results are surprisingly nice for such a simple particle system!



The last particle system I wanted to look at is a prime example of how to create workflows that are efficient and fast for small teams. In the case level, the team had the idea of having birds flying around the level. Since creating 3d models of these and rigging them and then animate them would have taken up too many resources, I decided to tackle the problem with a particle system. I applied the same Flipbook principle I used for the chimney smoke and made a texture with the different stages of wing span of a bird’s flight. This allowed me to create hand painted textures of the birds, and after that, I was able to use an orbit module in the particle system to recreate the flying of the birds. The results were convincing and far cheaper than making a 3D version with animation.




You can find a video breakdown of the particle Systems of Ether here:

 

The trees of Ether


When setting out to create the trees for Ether, the team had the idea of being able to change the seasons on the fly, so for example, one minute it would look like a summer day, the next it would turn to autumn. From the get go, I had this in mind and I was able to create a system that allowed for us to do that, by slightly tweaking the grass shader I made earlier on in the development process.

Apart from that, making trees that would hold up to the Ether style in a fast and efficient manner would prove to be quite hard. Modelling trees in an singular fashion, creating enough variation and making sure Uv mapping them in the traditional manner would have taken an extremely long amount of time, and since we’re a team of 2 artists, I had to figure out a system that would allow me to create trees in a fast manner, UV map them with ease, and for them to allow for an almost modular approach in their creation workflow.

The following explains how I go about making the trees for Ether and how I managed to create an efficient workflow for a small team.

The first thing I did was create a spline that would define the shape of the tree. Each branch would become a separate spline. After this is done, I made a cylinder and edited it to make it resemble a tree trunk or branch.  Once this was done I UV mapped this piece. The idea behind this method is that we will now duplicate our cylinder and create an INSTANCE of the original. This will ensure that every time we need to edit our branches, we can just edit the original and not have to worry about akward rotations or positions that our branch will take.


Once we have our instanced cylinder, we apply the “Path deform” modifier and stretch the cylinder to follow the shape of the branch. After making a few of these branches, we will have the skeleton of our Tree.  Now we can paint the texture for the bark. In this case, for the Oak, I made the following texture:



Now it’s time to make the textures for the leaves. One thing I must note is that when texturing the leaves, I didn’t want to create extreme colour variations. The reason behind it is that to ensure the transition between summer and Autumn doesn’t end up having unrealistic coulours like blue leaves!


Once this is done, we can create a plane that is Vertex painted (in order to work with the wind expression) and apply our leaves texture. With these planes, we can now create a clump of leaves that we can place as branches and create the canopy of our tree.

The final result in udk is:

And to show the season changes:



Here is also a Forested area created with the trees and foliage:


Here you can find a video explaining the tree making process:

 

Thursday, 22 November 2012

The foliage of Ether… so far… and mostly the grass!


The next challenge of Ether was foliage, specifically the Grass. As always, the grass needed to be optimised to its full potential, and of course, not compromise the ether style at all.

The original approach I took was to create 3D blades of grass using planes, and then use those shapes to paint over in the texture. Since the blades of grass were going to be very thin, utilising the linework and loose brush style of Ether wasn’t much of an option, and this was very obvious, especially when looking at the grass from close up. However, this first approach became a good starting point for the wind simulation and subsequent foliage approaches… at least now I knew what NOT to do! (in terms of texture and shape!)

 

And it is the wind expression that became very important. To bring life to the environments, we wanted the grass to move with the wind.

For this, I began using the same expression as I did with the ocean waves (the mesh would be pushed in different directions, but it’s the same basic concept)… the problem was that I needed the base of the grass to stay still and I wanted for us to be able to change the direction, strength and speed of the wind on the fly, without having to make major changes to the material. On another note, I needed this material to work across the board when it comes to foliage, so I began to put a system in place so that all foliage would work with these rules. It took a long time to get it to work, but I believe the amount of time it will save down the line will be priceless to a small studio with only 2 artists like WPG.


To get the wind to work, I needed to introduce “Wind Direction and Source” into the material. The basic concept is to convert this information into a vector (to specify the direction and strength of the wind) so that we could change it on the fly. This is multiplied by the wave expression and voila! It doesn’t work! ... Sadly, one of the things I overlooked was the fact that doing the wind in this way would displace the whole mesh… so even the base of the grass was moving… this resulted in a very unconvincing, almost comical version of the grass that was floating and moving around the environment. The good news is that it was easily fixed! All I had to do was multiply that expression by a vertex colour… in this case, the red colour. This way, any verts in the mesh that are coloured in red will move, while black ones will stay still. This meant that I had to go back and edit all my grass plane meshes and vertex paint them accordingly. Once this was done, the result was much more convincing!




Now I had the grass working, however, I couldn’t get past the fact that the grass did not follow the Ether artistic style, so I had to take a new approach in terms of the type of mesh I used.

The new meshes were thick, had a much better view from above and allowed me to paint the textures following the artistic style of Ether…All of the vertex painting rules had to be followed, but knowing that in advance made the workflow that much faster… I’m really happy with the results and I think it does justice to Ether’s artistic direction.



Now, although the grass was looking good, and I had created a system that could be used across the board in all foliage, the actual meshes themselves weren’t too reusable… if we wanted to make an autumn scene, we had to repaint the textures all over again, costing us a lot of time and a lot of memory!... this needed to be fixed, not only on the grass level, but across all foliage.

Luckily, it was an easy fix, and a rather functional one! All I had to do was multiply our diffuse texture with a Vector Parameter… then we can create an instance of the material, and we have completely versatile grass colours on the fly.

Here is a video detailing the grass shader and its reusability, as well as other types of folliage:



Now we have the shader out of the way… now we can focus on the rest of the foliage…  Having discovered that thin shapes don’t go with “Ether” style, creating the rest of the foliage was an incredibly fun and enjoyable experience… I still haven’t finished, but a lot of it is in place!

Here are some pictures of some types of foliage and a video to see them in action:


Here is a video of some gameplay for Ether, where you can see the folliage and water in action :)



In this edition of foliage, I have chosen not to put any trees in, although a more in depth explanation of how I am making the trees for Ether is coming very soon!

Although I feel that the grass shader is getting close to being finished, I still want to introduce some stuff for decay and burning foliage… I’ll keep you updated on my progress J

Thanks for taking the time to stop by and read! If you have any questions, please ask!

Next up, Particle Systems!!

Water... a lot of it!!


The first challenge at White Paper Games came in the form of water. Replicating realistic water is quite a feat on its own, however, for Ether, we required the water to make sense with the world and follow the artistic style that we had already established for the game. This created a number of challenges that needed to be solved:

-          How do we make the water hold up to the visual style of Ether?

-          How can we make water using the minimum amount of resources possible?

-          Can we make the water reusable and applicable to non-ocean instances?

-          How can we animate the water without any physics simulations?

This set of questions had to be answered and here is the result we have come up with:


The first and foremost concern I had was to keep the visual style of Ether intact. Therefore, the normal map that would create the ripples would have to be hand painted.

I used Corel Painter for this instead of Photoshop. In Corel, you can adjust the amount of paint added to the brush and make it lit so that it feels thick and painted on canvas; I felt this was crucial in order to get a good painterly effect on the water. The result was pretty bad for the first set of tries but I ended up getting an effect that was quite nice:


Now I just had to mix a couple of sets of normal and pan them in different directions and a subtle effect was created!



Now that the ripples were sorted, I needed to focus on animation… an ocean has waves and this couldn’t be simulated with physics considering our limitations, so a workaround had to be found. I started doing a lot of research into how to solve this and began to create a solution to this problem.

Using the world displacement node in the material, I could displace certain parts of the mesh based on a mathematical expression. The fastest way to do this was using a Sine wave. In short, it creates a wave that varies from black to white, making everything that’s white push up, and everything that’s black go down. The good thing about this is that it’s extremely cheap (only 4 instructions in the material).  The only downside to this is that it works based on the amount of verts the mesh has, so it meant our water shader had to be quite highpoly. In the end, we went with a 2048 triangle mesh, which is still pretty low poly for a whole Ocean!

Here is a small picture of the wave expression:


 The next problem was to make the oceans depth believable and also make the foam for the water when it hits other meshes.

For the foam, using a depth biased alpha with a foam texture worked fine. For the translucency, playing with a few values did the trick and the results were quite convincing.

Here are a couple of videos, one explaining my approach, another just showing the water in action, inside the game:





This expression is highly reusable, in fact, it became the base for all foliage and wind based materials in the game! So I’m very happy I took the time to make sure this material was spot on and game ready as soon as possible.

Next, I will begin to talk about the foliage for Ether!

Stay tuned!!

Small change of plans


Hello again!

So… the has been a small change of plans regarding what I’ll actually be doing for my MA. Although I would love to delve deeper into tessellation and next gen processes, (which I will, at a later date as part of my MA as well…) I’m going to focus on showing the work I am doing at white paper games, specifically focusing on how we can use technology to enhance our workflow speed and efficiency while keeping the artistic value and style of our project intact. I would also like to explore how important it is for an indie studio to have these measurements in place in order to achieve a goal as ambitious as our debut title: “Ether one”.

Over the next few days I will be updating this blog explaining everything I have done and used in Ether, and hopefully provide some insight as to how it has affected our workflow (or how it will down the line).

 

Friday, 26 October 2012

And here are the Results in UDK

I did my tessellation video, I'm very happy with the results! Problems still appear though:

Fixing seams seems imperative at this point.

After talking with my tutor Josh... do we need lighting information in the Diffuse now that the engine is handling all of that? Do we need such a detailed normal map?

In any case, here is the video documenting my progress: