Texture Creation - Basic Tutorial: Difference between revisions

From The DarkMod Wiki
Jump to navigationJump to search
Stifu (talk | contribs)
Advanced tips added for making textures tile-able
 
(20 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{tutorial-textures}} {{Original_Reference|SneaksieDave|3814}}
{{tutorial-textures}} {{Original_Reference|SneaksieDave|3814}}
A game like this needs a TON of textures. So I wanted to try to learn how to do this mysterious, wonderous, magick...
A game like this needs a TON of textures. So I wanted to try to learn how to do this mysterious, wonderous, magick...


Line 15: Line 14:
=== Gimp ===
=== Gimp ===


* [http://nifelheim.dyndns.org/~cocidius/normalmap/ GIMP normalmap plugin]
* [http://code.google.com/p/gimp-normalmap/#Download GIMP normalmap plugin]
* [http://www.manucornet.net/Informatique/Texturize.php#download GIMP texturize plugin]
* [http://gimp-texturize.sourceforge.net/download.html GIMP texturize plugin]
* [http://registry.gimp.org/plugin?id=4816 Gimp DDS plugin]
* [http://code.google.com/p/gimp-dds/ Gimp DDS plugin]


If you are using Kubuntu/Ubuntu, you can also install the <code>gimp-texturize</code> and <code>gimp-resynthesizer</code> packages.
If you are using Kubuntu/Ubuntu, you can also install the <code>gimp-texturize</code> and <code>gimp-resynthesizer</code> packages.
Line 41: Line 40:
== Create the diffuse map ==
== 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.
The diffuse map is a tilable (usally) image which gives the color infomation, but does not contain lighting or height information for the texture. It is stored as dds with dxt1 or dxt3 compression for use in Doom 3 and as 24 bit TGA (with or without RLE) for the hires repository.
 
If your image has lighting baked in (shadows/highlights), you should remove it: [[Remove Shadows in Source Images]].
 
This is just a basic tutorial for creating textures. For further information about creating Diffusemaps, read [[Advanced Tips for Creating Diffusemaps]].


=== Photoshop ===
=== Photoshop ===
Line 57: Line 60:


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.
===== Advanced tips from STiFU =====
====== Making textures with complex structures tile-able ======
[[Image:Crop hint.jpg|150px|thumb|right|Crop preprocessing]]When working with textures that feature complex structures like bones/skulls or irregular stones, it is useful to have parts of the original image that are outside your crop-area available in this process. So after you've drawn your crop-rectangle, but before you perform the actual crop, pull four Guides from the rulers (Ctrl+R) to the borders of the crop-rectangle. Make sure you have snap enabled (View->Snap) here and in the following steps. Now cancel the crop and use the Rectangular Marquee Tool (Select Tool) to copy the outside areas one by one, paste them as a layer above your image and move them to the opposite side, but inside of your virtual crop-rectangle, as shown in the image on the right. Doing this for the four edges is probably sufficient but if you want you can also do it for the four corners. Now you can easily redraw your crop-rectangle as it snaps to the guides and crop the area, apply an aspect ratio correction during, if you need to.
Depending on your preference you can now either use the Clone Stamp to draw the upper layers on the bottom layer or use layermasks on the upper layers to define which parts of them shall be visible and perform some fine-tuning afterwards with Clone-Stamp after flattening the image, if necessary. The latter approach however maintains the image-sharpness and is much more flexible and error-forgiving, because mistakes can easily be corrected by altering the layermasks. Make sure to start with the lowest of the upper layers and work your way up and also hide the layers above the layer you're currently working on.
This whole procedure makes the Offset redundant, I'd still recommend to perform the Offset though after flattening the image, to see if everything went right. Very small borders might still be visible due to interpolation during a potential scaling-process. These borders can be eliminated by Clone-Stamping or selectively applying a very subtle blur on the "seam-cross" (Pull a narrow Rectangle Marquee over the seam and perform the blur).
====== Scaling the image ======
If you choose not to use the upper procedure, it is wise to work with an unscaled image when making it tile-able, because Clone-Stamp reduces the image-sharpness quite a bit depending on the used opacity- and hardness-settings. If you scale the image down after making it tile-able you'll end up with a higher sharpness for that reason. It is a little more work this way, but the result is of much higher quality.


=== Gimp ===
=== Gimp ===
Line 74: Line 66:


== Create a normal map ==
== Create a normal map ==
The Normalmap tells the renderer in which direction a corresponding place on the diffusemap is facing, so that it can be shaded according to the present lightsources in the scene. It is stored as uncompressed 24 bit TGA (no RLE!) for use in Doom 3. You will learn the basics about creating Normalmaps here. For further information: [[Normalmaps, How to Make Good Ones]].


=== Photoshop ===
=== 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 (see [[Wall Texture Tutorial]] or [[Creating Textures with Normals out of Models]]), 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.
Line 106: Line 100:


== Add a specular map ==
== Add a specular map ==
The specularmap tells the renderer how shiny a corresponding place on the diffusemap is. It is stored as dds and its dimensions are typically scaled down to be half as big as those of the diffusemap.
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'''.


Line 112: Line 108:
== Create your material file ==
== Create your material file ==


Create a material for the texture. In the materials folder, locate the material file where you texture fits in best. Then add the following:
Create a material for the texture (see [[Basic Material File]]). In the materials folder, locate the material file where you texture fits in best. Then add the following:


textures/your_desired_editor_texture_folder/your_texture_name
<pre>
textures/darkmod/your_desired_editor_texture_folder/your_texture_name
  {
  {
     // Use on of the predefined surface types like stone, glass, wood
     // Use one of the predefined surface types like stone, glass, wood
     stone
     stone
     // or use this:
     // or use this:
Line 122: Line 119:
     // and make the first word in the description below your texture type,
     // and make the first word in the description below your texture type,
     // like so:
     // like so:
     // description  "foliage This is a grass texture"
     // description  "foliage" (This is a grass texture)
   
   
     description      "Add here a little description of your texture"
     description      "Add here a little description of your texture"
     qer_editorimage  textures/your_file_folder/your_texture_name_ed
     qer_editorimage  textures/darkmod/your_file_folder/your_texture_name_ed
   
   
     bumpmap          textures/your_file_folder/your_texture_name_local
     bumpmap          textures/darkmod/your_file_folder/your_texture_name_local
     diffusemap      textures/your_file_folder/your_texture_name
     diffusemap      textures/darkmod/your_file_folder/your_texture_name
     specularmap      textures/your_file_folder/your_texture_name_s
     specularmap      textures/darkmod/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
    }
  }
  }
</pre>


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


== Summary ==
== Summary ==
Line 157: Line 142:
* Include it in a material file
* Include it in a material file
* DONE
* DONE
The most important thing though, is to obey the [[Texture Guidelines]].


== Further Information ==
== Further Information ==
Line 162: Line 149:
* [[Common Texture Mistakes]]
* [[Common Texture Mistakes]]
* [[How to add Textures to The Dark Mod]]
* [[How to add Textures to The Dark Mod]]
* [[Texture Folder Structure]]
* [[Basic Material File]]
* [[Basic Material File]]


== Links ==
== Links ==
=== Njob ===
* [http://charles.hollemeersch.net/njob/ Njob: Most folks find this tool makes the best generated normal maps from photo sources. AMAZING]


=== Photoshop ===
=== Photoshop ===
Line 173: Line 165:


* [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://gimp-texturize.sourceforge.net/ GIMP texturize plugin *THIS IS AMAZING*]
* [http://registry.gimp.org/plugin?id=4816 Gimp DDS plugin]
* [http://registry.gimp.org/plugin?id=4816 Gimp DDS plugin]



Latest revision as of 05:02, 24 April 2024

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

A game like this needs a TON of textures. 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.

To compile Gimp plugins from source, install the following packages and their dependecies:

  • libgimp2.0-dev
  • libgtk1.2-dev
  • libglut3-dev (for the DDS plugin)

Get your source picture

This could be anything from a photograph you took, to a free texture download from the internet (see Texture Sources), 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. It is stored as dds with dxt1 or dxt3 compression for use in Doom 3 and as 24 bit TGA (with or without RLE) for the hires repository.

If your image has lighting baked in (shadows/highlights), you should remove it: Remove Shadows in Source Images.

This is just a basic tutorial for creating textures. For further information about creating Diffusemaps, read Advanced Tips for Creating Diffusemaps.

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

The Normalmap tells the renderer in which direction a corresponding place on the diffusemap is facing, so that it can be shaded according to the present lightsources in the scene. It is stored as uncompressed 24 bit TGA (no RLE!) for use in Doom 3. You will learn the basics about creating Normalmaps here. For further information: Normalmaps, How to Make Good Ones.

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 (see Wall Texture Tutorial or Creating Textures with Normals out of Models), 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

This is a rough guide by a non-expert as I (fidcal) do it so at least there is something here. It assumes you have made a temporary greyscale image file saved as say nameGrey.tga with the brighter areas representing the high ground and darker means low as described elsewhere ready to make your make normal map. It assumes you've just downloaded Gimp and its Normalmap plugin (ESSENTIAL!), maybe configured it a bit so don't know much about it but just want a dumb list to follow.

  • Open Gimp
  • Gimp consists of separate floating windows with no main window so select the toolbar window > file menu > and open your greyscale image file.
  • You can enlarge/maximize the window and zoom with the mouse wheel if you want.
  • Menu > filters > map > normalmap
  • On the normal map dialog, Click 3D map preview; it will make more sense then.
  • On the normal map dialog, in the 'scale' box there is zero by default which is useless as a default as this seems to be the scale of depth. Enter 50 for a start.
  • On the 3D preview dialog there is a window with a panel in it. Grab the panel with your left mouse button and drag it around. Now you should see a rough 3D impression of your image.
  • If you have no idea what you're doing (like me) leave the scale at 50 as a reasonable value, otherwise adjust it according to your knowledge. Maybe come back here later if you feel your final result is not deep enough or too deep. Similarly leave the other controls or adjust if you know what you are doing.
  • On the normal map dialog click OK.
  • On Gimp's image window you should now see your greyscale image has been converted probably blue looking with depressions, eg inverted the heights; that's OK.
  • Save as name_local.tga in the correct dark mod texture folder where your main texture is.
  • A mini dialog pops up : RLE compression - set this UNchecked, and 'origin at bottom left' - leave this checked. Click OK.
  • I had a lot of programs open including Doom so it seemed to hang a long time but eventually saved.
  • You close Gimp by closing that toolbar window so I guess that's its nearest thing to a main window.

That's it.

Create an editor image

As the diffusemap is very large it takes some time loading it into the editor, this is why DarkRadiant/DoomEd support the display of lowres editor images replacements. Just resize the diffusemap down to max. 256 pixels and save it in JPG format, but be sure to attach the _ed suffix.

Add a specular map

The specularmap tells the renderer how shiny a corresponding place on the diffusemap is. It is stored as dds and its dimensions are typically scaled down to be half as big as those of the diffusemap.

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, canvas, leaves, dirt etc. should not have a specular map.

Create your material file

Create a material for the texture (see Basic Material File). In the materials folder, locate the material file where you texture fits in best. Then add the following:

textures/darkmod/your_desired_editor_texture_folder/your_texture_name
 {
    // Use one of the predefined surface types like stone, glass, wood
    stone
    // or use this:
    // surfaceType 15
    // and make the first word in the description below your texture type,
    // like so:
    // description   "foliage" (This is a grass texture)
 
    description      "Add here a little description of your texture"
    qer_editorimage  textures/darkmod/your_file_folder/your_texture_name_ed
 
    bumpmap          textures/darkmod/your_file_folder/your_texture_name_local
    diffusemap       textures/darkmod/your_file_folder/your_texture_name
    specularmap      textures/darkmod/your_file_folder/your_texture_name_s
  
 }

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

Summary

So you see, it's really quite simple:

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

The most important thing though, is to obey the Texture Guidelines.

Further Information

Links

Njob

Photoshop

Gimp

Assorted tutorials