Showing posts with label Game Texture Development. Show all posts
Showing posts with label Game Texture Development. Show all posts

Wednesday, 9 December 2015

Game Texture Development - Alien Head


To start this project I loaded Zbrush, loading the supplied tool into the document. Saving files in Zbrush can be a bit confusing but it is a good idea to save out a project file and a toll file for your work. Project files will save your tool in the state that you left it in, meaning that all of the layers you have created remain saved and the mesh will automatically load into the document.



Filling all objects with a base colour really gets you off to a flying start. I decided to fill the objects with dark colours because I intended to dry brush(cavity mask) the model, this would accentuate all of the details produced in the sculpt. Key areas on the sculpt were then painted a block colour, ready for a dry brush pass.




It is worth noting that there is a layer system in Zbrush that works very much like Photoshop. This can be a great addition to your workflow, allowing you to reduce the opacity of a certain section in the poly paint. Creating a new layer I selected a lighter skin tone, adding highlights to key areas on the model. With this in a separate layer you can tone it down with opacity if the highlights seem too harsh.


Deciding that the alien head should have some more detailed areas to its physiology, these sections at the back of the neck were painted dark purple. This was all done in a new layer, encase I changed my mind about the idea later in the poly paint process. This was then dry brushed with a lighter colour in order to bring out the detail of the sculpt.


Once the dry brush pass was complete, I selected a lighter colour still. This was to be used as a highlight colour, moving in to the key areas and painting highlights. Again this was completed on a separate layer, giving me the option to tone down the highlights with the opacity slider.





The purple section at the back of the sculpt seemed a little too isolated and did not blend well with the texture as a whole. To remedy this I introduced similar colours to the characters mouth and neck, using the same dry brush and highlight techniques. It is also worth noting that there is an intensity slider for your brush, much like the Photoshop opacity slider. This slider gives you considerable control over your poly paint, allowing you to build up detail.
Nearly at a completion point I decided that more highlights of a slightly different skin tone were needed. Creating a new layer and using the cavity mask tool, I moved in and painted these more detailed highlights with a low intensity value in order to build up the detail.




The characters teeth were also painted using a dry brush technique. With a low intensity value I built up the colour at the tip of the tooth allowing it to gradually fade as it gets to the base of the tooth. I believe that this quite successfully emulates the look of decaying teeth.





Once complete all layers must be baked onto the model, ensuring that all vertex colour information is exported in the obj. file format.







It is worth noting that each sub-tool must be exported separately. In a character model built for animation, assets such as teeth and eyes would be skinned separately anyway. Try to use clear naming conventions for your assets, allowing other people to understand your work. It also speeds up your workflow as you immediately know which asset you are looking at in the file system.

Making sure that the low poly model has soft normals. This is because the normal map applied later supplies all of the normal detail that the model will need. Export the low poly model as an obj. file and create an envelope asset that should also be exported.




There are many ways to bake your maps from your high poly model, I find Xnormal to be among the most efficient. Setup for this process is pretty self explanatory, just insert the meshes into the correct sections, select the maps you wish to bake and hit bake. Obviously better results can be observed by changing the baking options. Remember to un-check the ignore vertex colours option on the high poly mesh inserts.




If you do not bake the Zbrush layers into the mesh before exporting obj. you may see an error such as this. This is because not all of the vcol information was saved out into the obj. file.






Once the maps are baked they can be applied to the model in Maya. A new material is created and named, with the maps being attached to the shader in the correct slots. At this point only the diffuse, normal and ambient occlusion maps have been created. I then went on to create the specular map in Adobe Photoshop, ensuring that the specular highlights appear in the correct locations and at the correct intensity on the model.
Opening up the vcol map in Adobe Photoshop will allow you to make any amendments that you wish, the main reason that I did this was to use the information in order to create a specular map.





First a hue and saturation adjustment layer was added, having all of the saturation in the layers below it removed. This is a good way of removing saturation from an image because it does not damage any of the colour information on the original layer.




Another adjustment layer was added in order to alter the levels in the image. Increasing contrast between light and dark values. This gave me an apropriate base to work with when editing the specular map.





Painting with a dark colour and the layer style set to multiply allowed me to reduce the white values in specific areas. Using this method meant that I could erase or correct any mistakes made without effecting the original image.





Painting a lighter colour on a new layer with a vivid light setting gave me the ability to increase the white values in certain areas of the image. I thought about the different sections of the character, which areas would be glossy, such as around the eyes. These are the areas that should display lighter values.








Wednesday, 25 November 2015

Game Texture Development - Cottage

To start the modular texturing technique I created the roof tile texture as a separate texture file. Using the line tool to lay out where the tiles should be placed. The layer underneath this was a colour fill layer, using the colour value that I desired the overall roof texture to have. I had experimented with the different textures that I intended to create for the cottage, making sure that they worked well together.


In order to create the texture for the roof tiles, I used custom texture brushes. Lowering the opacity of the brush to slowly build up the texture. Separate layers were created for each section of the texture. The darker shading tones for example were built up on a separate layer.




Highlight information needed to be added in order to give the impression of depth in the texture. This would also help later with the normal map process. I tried to use as much reference imagery as possible when painting the texture, in order to get the slate materials properties correct. This texture was then flattened and offset, having the seams removed using the patch tool. This created a perfectly seamless tileable texture.
Not wanting the roof of the cottage to seem too plain, I decided to create an alternate tileable roof texture with moss between the tiles. This will break up the composition of the roof texture and add more interest to the model. I created this texture on separate layers using a custom Photoshop brush. I used some darker tones to do this and some lighter tones for highlights. Once finished I mixed in some of the tones from the tile texture in an attempt to blend the moss more realistically.
Next up was the stone texture. Again creating a colour fill layer, giving me a base colour to build the texture up from, using custom brushes created from Photographs of country stone. I chose a lighter colour tone than what I wanted the overall colour of the texture to be, this is because I was thinking about the texture being applied and the multiply layers that may be used. Using a colour fill layer always allows you to go back and change this colour later in the texturing process.

Building up the base stone texture was the next step in the process. This involved using custom brushes on a low opacity setting to build up the texture. Two different custom brushes were used for this on two separate layers. I believe that this added some verity and realism to the texture.




The grout texture was the most important part of the process. For this I painted large stone like shapes in the center of the document, offsetting this layer often and painting more stone shapes in the center of the document. This meant that the texture would be painted with tiling in mind. once I was happy with all of the shapes I then filled in the 'grout in-between all of the shapes.



Shading was added to the stone shapes in order to add depth to the texture. Once the shading layer was completed I duplicated the grout layer and used it as a layer mask in order to ensure that the shading did not appear outside the stone shapes.





Highlights were added to the stone shapes with the light coming from the top left, this layer will be turned off for the creation of the normal map. The highlights would create anomalies in the normal map due to the height values that are produced. These highlights were created using a custom brush with shape dynamics and a low opacity added. Allowing me to build up the highlights while maintaining a stone texture.


Once I was happy with the overall texture I decided to alter the colour fill layer at the bottom of the layer list. This altered the colours for all subsequent texture layers. working in this non destructive manner is great for speeding up your workflow. More detail was then added on separate layers, some extra texture detail and the introduction of subtle moss patches.


Moving on to the wood texture for the wooden sections of the cottage. I used a soft round brush with shape dynamics for the grain of the wood, adding to this on new layers with custom brushes for the introduction of interesting textures. Subtle shading was then added on another separate layer, again using some of my custom brushes. I would like to explain that it is possible to paint any texture using standard Photoshop brushes, using custom brushes will speed up your workflow.
Once the wood texture was finished I added a hue/saturation layer and a levels layer over the top of this. Altering the values of these adjustment layers allowed me to gain the desired colour and tonal range. I believe that this finished texture matches the overall selection of textures for the cottage.



The diffuse layers that I had created were duplicated and moved into a separate layer. I then de-saturated the layers using and adjustment layer and altered the levels of the overall image until the desired effect was attained.






The normal map created from the wood texture was merged with the normal map baked from the high poly model. This is done by changing the layer style of the layer on top to overlay.






The rendering texture was a fairly easy feat after creating the other textures for the cottage. I just had to make sure that I painted an even texture across the whole document using custom brushes. The stones in this texture were taken from my previous stone texture document and placed using the UV sheet as a guide.




Creating the texture sheet for the door and windows was the last task for this project. I started by importing the wood texture that I had already created. Duplicating this layer and using the warp tool to get it to follow the arch of the door frame. A levels layer was then added with a layer mask applied, in order for it to only effect the area of the cottage door. Altering the values in the levels layer I was able to attain a darker wood texture for the cottage door.
Introducing new block colour layers for the door handle and window I then began to add more detail to the door and frame texture. The patterns etched into the wood were created using a hard round brush with shape dynamics and a lot of care. Once one section was complete I used this to duplicate the other sections of the pattern, these layers were then merged and set to multiply.

The hinges on the door texture were painted using a soft round brush with shape dynamics, textures were then added with a clipping mask once the basic shape was mapped out. Once the texture was in place I added shading and highlight values on separate layers, using a custom brush.




I used a soft round brush, as I had for the previous cottage texture, in order to create the window glow effect. A new layer was created which I named 'sketch', using this layer to sketch out the design of the window. On a layer above the sketch I then refined the window design using a hard round brush with shape dynamics attached.


This is a luminosity map for the cottage windows, making the windows seem as if light is being emitted from them even if the light intensity in the scene is set to low. You can use colour in a luminosity layer, it does not have to be gray-scale. Just be careful with the intensity of the colour as it can easily create hots pots on your model and look a mess.




Duplicating all of the layers used to create the diffuse map and sorting them into a folder named 'spec', I then began to alter each individual layer in order to get an accurate specular highlight for the properties of each material portrayed.







Normal maps baked from the high poly mesh were merged with the normal maps created from the texture sheet. This is done by setting all normal map layers apart from the bottom one to overlay. This is also useful if you have baked several normal maps separately but want them to appear on the same texture sheet.






In conclusion I believe that this small project was very successful as I learned some new techniques and processes for modular texturing. The textures work well together as a whole and I could see the finished asset being used in a game such as World of Warcraft. If there is one thing that I could improve, it would be to increase the resolution of the roof texture. Thanks for reading and have a good one!