Difference between revisions of "Texture Creation - Basic Tutorial"

From The DarkMod Wiki
Jump to navigationJump to search
m (fix typo)
(rework the menu structure, add Gimp sections)
Line 5: Line 5:
 
Erm, well, it's not magick. Far from it, in fact. This tutorial isn't for those of you who already know how to do this*, and already know it's not magick. This tutorial is for the rest of us, those who have been too scared or lazy to even bother asking "how do I?", like me. (It's the former, honest!)
 
Erm, well, it's not magick. Far from it, in fact. This tutorial isn't for those of you who already know how to do this*, and already know it's not magick. This tutorial is for the rest of us, those who have been too scared or lazy to even bother asking "how do I?", like me. (It's the former, honest!)
  
One other thing: this is not a Photoshop tutorial. Photoshop does a whole lot of things, and I don't know squat about it yet. Tutorials for it are all over the place, so just Google it.
+
== Prerequisites ==
  
= Texture Creation for the Rest of Us =
+
You can use Gimp or Photoshop on Windows, for Linux you should use Gimp. So you'll need either of the two programs Gimp/Photoshop and the corresponding set of plugins:
  
== Prerequisits ==
+
=== Photoshop ===
You'll need: (to follow this tutorial, not necessarily for the process)
 
* Photoshop
 
* Nvidia normal map plugin - grab it here: http://developer.nvidia.com/object/photoshop_dds_plugins.html
 
  
 +
* [http://developer.nvidia.com/object/photoshop_dds_plugins.html Nvidia normal map plugin]
  
= Off we go =
+
=== Gimp ===
  
== Get your source pic ==
+
* [http://nifelheim.dyndns.org/~cocidius/normalmap/ GIMP normalmap plugin]
This could be anything from a photograph you took, to a free texture download from the internet, to a hand drawn picture, if you're one of those fortunate enough to possess that skill (though we generally prefer to work from photo-reference when possible).
+
* [http://www.manucornet.net/Informatique/Texturize.php#download GIMP texturize plugin]
 +
 
 +
If you are using Kubuntu/Ubuntu, you can also install the <code>gimp-texturize</code> and <code>gimp-resynthesizer</code> packages.
 +
 
 +
== Get your source picture ==
 +
 
 +
This could be anything from a photograph you took, to a free texture download from the internet, to a hand drawn picture, if you're one of those fortunate enough to possess that skill - though we generally prefer to work from photo-reference when possible.
  
 
If you do want to take photos, some tips:
 
If you do want to take photos, some tips:
 
* try to shoot on an overcast day; the diffuse light will remove most unwanted shadows
 
* try to shoot on an overcast day; the diffuse light will remove most unwanted shadows
* try to take the photo as perfectly face-on to the surface as you can manage. If your end result isn't perfect, don't worry, there are ways to fix it (transform->skew, to name one)
+
* try to take the photo as perfectly face-on to the surface as you can manage.  
 +
If your end result isn't perfect, don't worry, there are ways to fix it (transform->skew, to name one)
 +
* Make sure that all parts of your photo you want to use as texture are in focus (e.g. sharp). Unsharp parts cannot be fixed later, at least not without a big quality loss!
 
* try to select an area that will be tile-able (if that's what you want)
 
* try to select an area that will be tile-able (if that's what you want)
* try to capture a large area such that you'll have enough to work with, but not so big that your resolution on the final product will suck
+
* try to capture a large area such that you'll have enough to work with, but not so big that your resolution on the final product will suffer
 +
 
 +
== Create the diffuse map ==
 +
 
 +
The diffuse map is a tilable (usally) image which gives the color infomation, but does not contain lighting or height information for the texture.
 +
 
 +
=== Photoshop ===
  
== Inspect your image ==
+
Inspect the source image. If you're going to tile it, try to find a regular repeating area. This is only to make your job easier. You can tile anything, really, but it depends on how much work you want to give yourself. If you don't know what I mean here, at the next step you will.
In Photoshop, inspect the source image. If you're going to tile it, try to find a regular repeating area. This is only to make your job easier. You can tile anything, really, but it depends on how much work you want to give yourself. If you don't know what I mean here, at the next step you will.
 
  
 
After you've chosen a rough tile-able area (from here forward I'm going to assume you are doing a tiled texture), crop that area out, and size your image to the desired size ratio. I wouldn't go lower than 1024 resolution at this stage of the work, or you'll start losing picture quality quickly. So set it to 2048X1024, or 1024X1024, etc. The reason we need to fix the size ratio (not the final size) at this stage is for the next step.
 
After you've chosen a rough tile-able area (from here forward I'm going to assume you are doing a tiled texture), crop that area out, and size your image to the desired size ratio. I wouldn't go lower than 1024 resolution at this stage of the work, or you'll start losing picture quality quickly. So set it to 2048X1024, or 1024X1024, etc. The reason we need to fix the size ratio (not the final size) at this stage is for the next step.
  
== Set the offset ==
+
==== Set the offset ====
 +
 
 
Go to Filter->Other->Offset. You want to set the horizontal and vertical to be exactly half of your cropped picture's width and height. That will make the opposite edges of the texture meet each other in the middle of the view, so you can make it really tile-able.
 
Go to Filter->Other->Offset. You want to set the horizontal and vertical to be exactly half of your cropped picture's width and height. That will make the opposite edges of the texture meet each other in the middle of the view, so you can make it really tile-able.
  
== Make the seams disappear ==
+
==== Make the seams disappear ====
 
See those seams running right down the middle of the pic, vertically and horizontally? You have to make them disappear. Get to know the clone tool. (Google...) There are many other ways to shuffle pixels too, but I'll leave the specifics up to you. This is usually the hardest, most time consuming step.
 
See those seams running right down the middle of the pic, vertically and horizontally? You have to make them disappear. Get to know the clone tool. (Google...) There are many other ways to shuffle pixels too, but I'll leave the specifics up to you. This is usually the hardest, most time consuming step.
  
 
Once you've blended the lines away, run the Offset filter again to restore the correct layout of your pic, and save it out in a nice high quality (but not too big to manage) format. This is the "diffuse" image. We're using 24bit TGA for TDM.
 
Once you've blended the lines away, run the Offset filter again to restore the correct layout of your pic, and save it out in a nice high quality (but not too big to manage) format. This is the "diffuse" image. We're using 24bit TGA for TDM.
 +
 +
=== Gimp ===
 +
 +
Use the <code>texturizer</code> or the <code>resynthezier</code> plugin - these are very easy to work with and make manual work almost needless.
  
 
== Create a normal map ==
 
== Create a normal map ==
 +
 +
=== Photoshop ===
 +
 
Now that the diffuse is done, using that same pic, open Filter->Nvidia Tools->NormalMapFilter. You'll probably have to play with the values for a while to get a feel for it, and to get a normal map you are happy with. This is a rough approximation method, by no means as accurate as actually modelling a texture, but it works pretty good in most cases. Basically, it will make light areas "high" and dark areas "low". Learn how to manipulate color levels in Photoshop, and you'll be making good normal maps with the Nvidia filter in no time.  Generally, use values of 3 or 4 for simple things like woodgrain or nails.  Values of 12 or higher can be used for more 3d effects.
 
Now that the diffuse is done, using that same pic, open Filter->Nvidia Tools->NormalMapFilter. You'll probably have to play with the values for a while to get a feel for it, and to get a normal map you are happy with. This is a rough approximation method, by no means as accurate as actually modelling a texture, but it works pretty good in most cases. Basically, it will make light areas "high" and dark areas "low". Learn how to manipulate color levels in Photoshop, and you'll be making good normal maps with the Nvidia filter in no time.  Generally, use values of 3 or 4 for simple things like woodgrain or nails.  Values of 12 or higher can be used for more 3d effects.
  
 
If you think about it, there are countless ways to adjust the image (in fact, you're not even restricted to using the diffuse image as the base of the normal map...) to get desired results - inverting colors, brightness and contrast controls, painting over areas, gradients, etc. It's a "feel" thing, so you'll have to develop that for yourself. After creating your desired normal map (try not to make it too blurry, or too sharp, or too bumpy - yuck), save it out as you did with the diffuse image, with "_local" appended.
 
If you think about it, there are countless ways to adjust the image (in fact, you're not even restricted to using the diffuse image as the base of the normal map...) to get desired results - inverting colors, brightness and contrast controls, painting over areas, gradients, etc. It's a "feel" thing, so you'll have to develop that for yourself. After creating your desired normal map (try not to make it too blurry, or too sharp, or too bumpy - yuck), save it out as you did with the diffuse image, with "_local" appended.
 +
 +
=== Gimp ===
 +
 +
Use the Normalmap plugin. (XXX TODO: Add a short tutorial here)
  
 
== Add a specular map ==
 
== Add a specular map ==
If you want a specular map, the process is even more subjective. There are countless ways in Photoshop to adjust color and light level and even invert everything or parts or mask out areas. Specular maps work as such: Darker is rendered as dull, lighter is rendered as shiny. Get it? Think of the possibilities, and have fun with it. You can get some pretty amazing results with just minutes of work. Save that image out as you did the diffuse, with "_s" appended.
+
If you want a specular map, the process is even more subjective. There are countless ways in Photoshop to adjust color and light level and even invert everything or parts or mask out areas. Specular maps work as such: Darker is rendered as dull, lighter is rendered as shiny. Get it? Think of the possibilities, and have fun with it. You can get some pretty amazing results with just minutes of work. Save that image out as you did the diffuse, '''with "_s" appended'''.
  
Note that most surface types don't need a specular map.  Only shiny surfaces, like metal or wet stone, really need one.
+
Note that most surface types don't need a specular map.  Only shiny surfaces, like metal or wet stone, really need one, while wood, cobbles, dirt etc. should not have a specular map.
  
= Create your material file =
+
== Create your material file ==
Create a material for the texture. In the materials folder, create a file like mytex.mtr, and add the following:
+
Create a material for the texture. In the materials folder, create a file like <code>mytex.mtr</code>, and add the following:
  
 
  textures/your_desired_editor_texture_folder/your_texture_name
 
  textures/your_desired_editor_texture_folder/your_texture_name
Line 77: Line 100:
 
  }
 
  }
  
Oh and don't use Notepad, it sucks. That's it. Your new texture should appear in both the editor and in-game.
+
Oh, and on Windows, use Wordpad, not Notepad. That's it. Your new texture should appear in both the editor and in-game.
  
 
See [[Basic Material File]] for more information.
 
See [[Basic Material File]] for more information.
  
= Summary =
+
== Summary ==
 
So you see, it's really quite simple:
 
So you see, it's really quite simple:
 
* Crop the desired area
 
* Crop the desired area
Line 94: Line 117:
 
See [[Common Texture Mistakes]] for more information.
 
See [[Common Texture Mistakes]] for more information.
  
= Links =
+
== Links ==
 +
 
 +
=== Photoshop ===
 +
 
 
* [http://developer.nvidia.com/object/photoshop_dds_plugins.html nVidia Normal Map PlugIn]
 
* [http://developer.nvidia.com/object/photoshop_dds_plugins.html nVidia Normal Map PlugIn]
* [http://www.gimp.org/tutorials/Tileable_Textures/ Quick GIMP tutorial for tileable textures]
+
 
* [http://www.stormvision.net/index.cfm/act/tutorials/tutorial_ID/1 Another tileable texture tutorial]
+
=== Gimp ===
 +
 
 
* [http://nifelheim.dyndns.org/~cocidius/normalmap/ GIMP normalmap plugin]
 
* [http://nifelheim.dyndns.org/~cocidius/normalmap/ GIMP normalmap plugin]
 
* [http://www.manucornet.net/Informatique/Texturize.php#download GIMP texturize plugin *THIS IS AMAZING*]
 
* [http://www.manucornet.net/Informatique/Texturize.php#download GIMP texturize plugin *THIS IS AMAZING*]
 +
 +
=== Assorted tutorials ===
 +
 
* [http://www.doom3world.org/phpbb2/viewtopic.php?t=11893 Doom3World texture tutorials]
 
* [http://www.doom3world.org/phpbb2/viewtopic.php?t=11893 Doom3World texture tutorials]
 
* [http://www.quake3bits.com/htm/tutorials/creating_bumpmaps_from_images.htm Kat's normal-map making tutorial]
 
* [http://www.quake3bits.com/htm/tutorials/creating_bumpmaps_from_images.htm Kat's normal-map making tutorial]
 +
* [http://www.gimp.org/tutorials/Tileable_Textures/ Quick GIMP tutorial for tileable textures]
 +
* [http://www.stormvision.net/index.cfm/act/tutorials/tutorial_ID/1 Another tileable texture tutorial]
  
 
[[Category:Textures]]
 
[[Category:Textures]]
 
[[Category:Tutorial]]
 
[[Category:Tutorial]]

Revision as of 14:22, 6 October 2007

Originally written by SneaksieDave on http://forums.thedarkmod.com/topic/3814

For what seems like forever, we've been wanting for textures. The donated DVD, countless free sources on the web, new 'techniques and ideas' on how to make them. That's all great, but for whatever reasons, we still don't have much. A game like this needs a TON of textures, and TDM is lacking them badly. So I wanted to try to learn how to do this mysterious, wonderous, magick...

Erm, well, it's not magick. Far from it, in fact. This tutorial isn't for those of you who already know how to do this*, and already know it's not magick. This tutorial is for the rest of us, those who have been too scared or lazy to even bother asking "how do I?", like me. (It's the former, honest!)

Prerequisites

You can use Gimp or Photoshop on Windows, for Linux you should use Gimp. So you'll need either of the two programs Gimp/Photoshop and the corresponding set of plugins:

Photoshop

Gimp

If you are using Kubuntu/Ubuntu, you can also install the gimp-texturize and gimp-resynthesizer packages.

Get your source picture

This could be anything from a photograph you took, to a free texture download from the internet, to a hand drawn picture, if you're one of those fortunate enough to possess that skill - though we generally prefer to work from photo-reference when possible.

If you do want to take photos, some tips:

  • try to shoot on an overcast day; the diffuse light will remove most unwanted shadows
  • try to take the photo as perfectly face-on to the surface as you can manage.

If your end result isn't perfect, don't worry, there are ways to fix it (transform->skew, to name one)

  • Make sure that all parts of your photo you want to use as texture are in focus (e.g. sharp). Unsharp parts cannot be fixed later, at least not without a big quality loss!
  • try to select an area that will be tile-able (if that's what you want)
  • try to capture a large area such that you'll have enough to work with, but not so big that your resolution on the final product will suffer

Create the diffuse map

The diffuse map is a tilable (usally) image which gives the color infomation, but does not contain lighting or height information for the texture.

Photoshop

Inspect the source image. If you're going to tile it, try to find a regular repeating area. This is only to make your job easier. You can tile anything, really, but it depends on how much work you want to give yourself. If you don't know what I mean here, at the next step you will.

After you've chosen a rough tile-able area (from here forward I'm going to assume you are doing a tiled texture), crop that area out, and size your image to the desired size ratio. I wouldn't go lower than 1024 resolution at this stage of the work, or you'll start losing picture quality quickly. So set it to 2048X1024, or 1024X1024, etc. The reason we need to fix the size ratio (not the final size) at this stage is for the next step.

Set the offset

Go to Filter->Other->Offset. You want to set the horizontal and vertical to be exactly half of your cropped picture's width and height. That will make the opposite edges of the texture meet each other in the middle of the view, so you can make it really tile-able.

Make the seams disappear

See those seams running right down the middle of the pic, vertically and horizontally? You have to make them disappear. Get to know the clone tool. (Google...) There are many other ways to shuffle pixels too, but I'll leave the specifics up to you. This is usually the hardest, most time consuming step.

Once you've blended the lines away, run the Offset filter again to restore the correct layout of your pic, and save it out in a nice high quality (but not too big to manage) format. This is the "diffuse" image. We're using 24bit TGA for TDM.

Gimp

Use the texturizer or the resynthezier plugin - these are very easy to work with and make manual work almost needless.

Create a normal map

Photoshop

Now that the diffuse is done, using that same pic, open Filter->Nvidia Tools->NormalMapFilter. You'll probably have to play with the values for a while to get a feel for it, and to get a normal map you are happy with. This is a rough approximation method, by no means as accurate as actually modelling a texture, but it works pretty good in most cases. Basically, it will make light areas "high" and dark areas "low". Learn how to manipulate color levels in Photoshop, and you'll be making good normal maps with the Nvidia filter in no time. Generally, use values of 3 or 4 for simple things like woodgrain or nails. Values of 12 or higher can be used for more 3d effects.

If you think about it, there are countless ways to adjust the image (in fact, you're not even restricted to using the diffuse image as the base of the normal map...) to get desired results - inverting colors, brightness and contrast controls, painting over areas, gradients, etc. It's a "feel" thing, so you'll have to develop that for yourself. After creating your desired normal map (try not to make it too blurry, or too sharp, or too bumpy - yuck), save it out as you did with the diffuse image, with "_local" appended.

Gimp

Use the Normalmap plugin. (XXX TODO: Add a short tutorial here)

Add a specular map

If you want a specular map, the process is even more subjective. There are countless ways in Photoshop to adjust color and light level and even invert everything or parts or mask out areas. Specular maps work as such: Darker is rendered as dull, lighter is rendered as shiny. Get it? Think of the possibilities, and have fun with it. You can get some pretty amazing results with just minutes of work. Save that image out as you did the diffuse, with "_s" appended.

Note that most surface types don't need a specular map. Only shiny surfaces, like metal or wet stone, really need one, while wood, cobbles, dirt etc. should not have a specular map.

Create your material file

Create a material for the texture. In the materials folder, create a file like mytex.mtr, and add the following:

textures/your_desired_editor_texture_folder/your_texture_name
{
   [TDM has custom surface types here.  for example, wood, stone, glass]

   qer_editorimage  textures/your_file_folder/your_texture_name

   bumpmap          textures/your_file_folder/your_texture_name_local
   diffusemap       textures/your_file_folder/your_texture_name
   specularmap      textures/your_file_folder/your_texture_name_s

   // This is the code required for frob highlighting this texture
   {
       if ( parm11 > 0 )
       blend       gl_dst_color, gl_one
       map         _white.tga
       rgb         0.40 * parm11
   }
   {
       if ( parm11 > 0 )
       blend       add
       map         textures/your_file_folder/your_texture_name
       rgb         0.15 * parm11
   }
}

Oh, and on Windows, use Wordpad, not Notepad. That's it. Your new texture should appear in both the editor and in-game.

See Basic Material File for more information.

Summary

So you see, it's really quite simple:

  • Crop the desired area
  • Make it tileable if necessary
  • Generate a normal map
  • Create a specular map if you want one
  • Include it in a material file
  • DONE

Those who know more about this than me (I've been doing it all of one day so far) are encouraged to contribute tips if you have them.

See Common Texture Mistakes for more information.

Links

Photoshop

Gimp

Assorted tutorials