Howto:Multi-channel lightmap

From FlightGear wiki
Revision as of 20:41, 20 August 2016 by Wlbragg (talk | contribs)
Jump to navigation Jump to search

Multi-channel Lightmap

This documentation is intended to be a step by step guide to produce lightmaps for FlightGear using Blender and Gimp. It is not intended to be a comprehensive tutorial on the use of Blender or Gimp, just enough to get the job done. Anyone with expert skill in either Blender or Gimp is more than welcome to add to this guide with more details, techniques and tricks.

Start by setting up your lighting scheme in Blender. Create the light sources you want to map (bake) in your blend. You can have up to 4 lightmaps per multi-channel light map in FlightGear. Each of those four lightmaps can be a single light source or a combination of light sources. In other words, you could potentially have 2 lights on the left combined into one lightmap and two on the right into another lightmap, leaving 2 channels open for 2 more lightmaps of any configuration.


This is what your cockpit or subject will look like when looking at it in the Material Viewport if using only the normal white light.

Lighting Scheme


You can set up your lights to mimic the 3 color channels used in the shader and thus bake three different light sources into three different channels in one bake session if you wish. This would eliminate some steps in Gimp during the next part of the process, but for the purpose of this tutorial, we'll take the longer approach so you can see how it is possible to work with images and their channels. This is what you might expect to see if you do a light source per color channel (rgb).

Setting up colored light sources


Using Blender, it would be wise to work from a copy of your original blend file to use for the lightmap creation so as not to disturb the original. Because of the nature of the lightmap effect and the way it is applied using shaders, it is required to have all the objects to be influenced by the same lightmap also mapped to the same texture. Tip: Other blends that use a different coordinate space must be converted to the same coordinate space as the final blend that you are creating the lightmap from and also be mapped to the same texture sheet if you want to apply a single lightmap to all those object. This obviously can be a real challenge if using generic instruments.

Selecting object to map in the blend


Using the UV-Image Editor screen in Blender, create a new image that is the same size as the texture sheet being used. Here is where you may have a problem if you have set up your blend to have multiple texture sheets. I happen to have only one texture sheet for the entire blend (by design). These things need to be well thought out, in advance, for ease in setting up the effects later on in the creation process. This is what the map will bake to and be the source of the final lightmap.

Create an image to bake to


Uncheck the texture being applied to the objects.

Uncheck applied texture

Settings for the bake





In the "World" tab select the effects you want Blender to add to the lightmap. Tip: Use only indirect lighting. Let FlightGears shaders take care of the rest. I had good results with the following indirect lighting settings...

  1. 1) Factor .7
  2. 2) Passes 3
  3. 3) Error .25

I set "Correction" to 1.0, but it may only be use if Ambient Occlusion is also checked.


Start the bake





Your now ready to bake. You can either join all the object into one and do a single bake or you can uncheck the "Clear" box in the Bake section and do multiple bake runs over the same image using different selected objects in the edit mode one at a time. With the complexity of the Shuttle Cockpit, I found it easiest to join all the object into a single object and bake only once per light source.

  1. 1) Make sure your object is selected and in edit mode.
  2. 2) Make sure you have only the light source or sources you want in this lightmap active.
  3. 3) In the bake information (Render Tab) make sure you have a reasonable "overlap". Read up in Blender docs for that info. I used 2 and it appears to have been a decent setting for my texture sheet resolution.
  4. 4) Make sure you have selected the image you created in the UV-image editor.


Hit the bake button. When the baking is finished, if everything went OK, you should have a baked map that looks something like this.

Final baked lightmap in Blender


Or if you used colored lights it will look like this.

Multi channel bake


Some of the following Gimp steps will not be necessary if you used the colored lights approach as you will already have the three color channels combined.


Import the "baked" Blender lightmaps into Gimp. If you baked a three color channel lightmap you can proceed to the section on converting the greyscale to alpha.

Import as layer baked greyscale lightmaps made in Blender


If not then with only the greyscale lightmap layer that you want to convert to the the first rgb color channel (r) selected, click on the Channel tab. De-select green and blue channels. All that you should have selected is the red and alpha channels. Save visible to new layer. This new layer is now the red channel layer (the first channel) of what will be your four channel lightmap. Repeat this process for the greyscale image (lightmap) that is going to represent the green channel and again for the one that will represent the red channel.

Changing greyscale to one color channel


Duplicate greyscale for alpha conversion
Convert greyscale to alpha (color to alpha)
Color to alpha details
Applying Gaussian blur
Combing color channels by addition
Copying results to new layer
Add layer mask for alpha channel
Add layer mask details
Copy the alpha layer
Selecting the mask, make it active
Paste the copied alpha layer
Anchor the pasted alpha layer to the mask
The finished four channel lightmap with included alpha channel mask (rgba)

Close up visual of final four channel lightmap ready for export to FlightGear

Verifying the four channels (showing the red channel)
Verifying the four channels (showing all channels)
Verifying the four channels (showing the alpha channel)