Landscape LOD Tutorial

Revision as of 10:28, 1 July 2008 by imported>Kienjakenobi

This tutorial will summarize the steps necessary to create LOD terrain - the land you see in the distance in Obivion (if you have the far land option turned on). We will also discuss common problems and possible solutions.

Getting started

If you want LOD terrain, you are probably working on a new worldspace. For information about creating a new worldspace, and using the heightmap editor, see these tutorials:

So go ahead and work on your heightmap. When you are happy with your landscape, save it in the heightmap editor but don't save the esp file yet.

Fixing Mesh Errors

This section is for those who just now created a new landscape and have not yet saved it even for the first time. If you have a well established mod that has been saved and re-opened successfully in the Construction Set at least once, then you can skip this section.

Here's where the going gets a bit rough. The lanscape you just created probably has some errors. These errors show up as "rips" in the landscape mesh which wouldn't be all that dramatic, but when the CS saves your esp, it can not save cells with such errors in them. Which means, when you reload a plugin with such a faulty cell, those cells will be gone, they will be gaping holes dropping down to 0 elevation. Therefore we need to fix these rips before we save our plugin. These rips occur most frequently around cell 0,0 and other corners where four quads meet, if you have more than four.

Quads
quadrants, 32x32 cells. If you have created a map by painting one whole viewable area in the heightmap editor, you have four quads (visible as divided by the green lines in the overview if you have created one), they meet in the lower lefthand corner of cell 0,0

Switch to the render window and enable the cell grid (press B ) and wireframe (W). Go to cell 0,0 and check the four corners of the cell, one of them (lower left most times) will have a rip. You will need to flatten or smooth that vertex using the landscape editing tool. If your landmass is larger than four quads you need to go to all quad intersections (every 32 cells) and check for the same type of error.

Once you have fixed all of those save the esp. If you still get errors about cells that are missing data, make a note of which cells they are (do not hit "yes to all"), fix them as described, and then save again. Repeat this process until you get no errors.

Creating the LOD mesh

In the heightmap editor window, go to the File menu and select Generate LOD. There are two LOD generation options, which vary only in generation speed and accuracy. They are Quick Prototype and Full and are less accurate but faster, and more accurate but slower, respectively. Depending on the speed of your computer, generating the LOD meshes can take a long time (on my AMD 4400+ dual core it takes ca 20 minutes) . Be patient, your computer has most likely NOT frozen, although it may look like that! This step creates the actual model for the distant terrain, which is stored as a .nif file just as any other 3D object in the game. It also generates the normal maps for the terrain. These are saved as .DDS format files, with an _FN suffix in the file name and will be saved in \data\textures\landscapelod\generated\.

Creating LOD diffuse maps

Before this step you may want to clean out your \data\textures\landscapelod\generated folder. This will avoid conflicts and makes it easier to find your newly generated files. Backup existing files (e.g. from one of the better LOD mods) to some other location while working on your mod.

Now we need a texture for our distant terrain. The CS has a functionality for creating such a texture based on the textured terrain you see in the render view. So for your final release you should update these textures after you have done all your texture editing, so that your LOD texture will fit as close as possible with your detailed textures.

So, if you aren't there already, switch to the render window. Go to 0,0 in the render window and press shift-w to turn off the water (also turn off cell grids if they are still on (B). Turn off bright lighting in the taskbar. The texture will be generated from what you see in the render window, so if you e.g. leave the water on, your LOD textures will include the purple water texture which looks pretty bad in the game. Now right-click in the render window and select Generate LOD Textures / For this quad from the popup menu. Now the texture generation process will load all cells and take snapshots of them (it actually generates a 64x64 pixel texture from every 2x2 cells). These are stored in \data\textures\landscapelod\generated\partial\. If you don't have any objects it will go pretty quick, otherwise it may take a considerable time. At the end of this process the partial textures are stitched together into one large 1024x1024 texture that is stored in \data\textures\landscapelod\generated\. Now you need to move into each quad - e.g. move to cells 0,-1 / -1, -1 / -1,1 and repeat the process for each quad. If nothing happens, it means that partial textures for this quad already exist. If you need to update the LOD textures, you have to delete the old partial files first.

The Naming Bug

There is a small bug in the COnstruction Set that incorrectly names the textures that are created in Data\Textures\LandscapeLOD\Generated. If you'd load your mod now, you will likely see purple landscapes everywhere because of this bug.

To fix this, simply go to the textures in \data\textures\landscapelod\generated and rename any textures that have a single 0 in it. A bunch of the new textures will have a "0" instead of a "00" in the part of the name that indicates cell coordinates. You need to rename the files, replacing all instances of 0 with 00. For example, the texture titled "11607696.0.-32.32.dds" should be renamed "11607696.00.-32.32.dds"

The Black Texture Bug

If you find some of your textures have black areas, this is due to a bug in the Construction Set. The partial textures were not assembled correctly. This seems to be hardware or system related because some people get it while others do not. There is no known fix to the Construction Set at this time, but there is a workaround. I have created a python script that can assemble the textures correctly.

Updating LOD information

If you have buildings or trees in your world you also want to update LOD information for those.

Go to the world->world testing->update distant LOD menu, make sure the right boxes are checked and find your new world space in the lefthand side of the window. Select your world space and then click on the "export for this world space only" button. Depending on the number of objects, this process can again take a long time but with no objects in the world space the process you take a couple of seconds at most, even for a large world. I am not yet sure how the landscape update exactly works - you won't need it if you followed the steps above, but I usually let the update run anyway. Also see the Visible When Distant Tutorial.

Testing it

At this point you should be able to save everything and test it out in the game. An unresolved issue is conflict with other mods. At this time it is recommended to only load oblivion.esm and your mod - loading other mods interferes with the LOD terrain, and it will not be visible. This probably has to do with the hashcode for the textures not matching the hashcode for the mod, that seems to be dependent on mod name and mod load order. Currently no fix for this problem is known.

Anyway, Load up your mod, load or start a game, and move to your world by bringing down the console (~) and type COW MyWorldSpace 0,0 (or some other cell coordinate you want to visit. "MyWolrdSpace" of course should be replaced by the ID of the Worldspace you created). Jump around the map with coe x,y to visit different cells.

Enjoy your beautiful LOD terrain!

Additional Notes

If your distant LOD land does not show up, it is recommended that you download Tes4Gecko. This will let you move your World Space to the master index and allow your land to show up regardless of the plugin's load order.