TESAnnwyn - A Heightmap (3D Landscape) Importer/Exporter for TESIII: Morrowind and TESIV: Oblivion


Author: Paul Halliday (aka Lightwave on the Morrowind/Oblivion forums).
Current Version: 0.21 (Eighth release): 05-Nov-2007
Official Homepage: http://www.projectmanager.f2s.com/morrowind/index.php?menu=TESAnnwyn.html


TESAnnwyn is a heightmap import/export utility for TES3 (Morrowind) and TES4 (Oblivion). It can turn the 3D landscape contained in one or more ESP/ESM game files into a single heightmap image, or import a heightmap image back into a 3D landscape for either game. The image formats supported are 8-bit, 16-bit and 32-bit RAW files and 8-bit greyscale, 16-bit and 32-bit BMP files. It can also import and export a 24-bit colour BMP image as a vertex colour map and paste it over the heightmap if desired and it can export a texture placement map for TES3 (multiple layers for TES4) which when reimported will ensure that all the textures are put back in their original places. If you export a TES3 3D landscape to a heightmap and import it to TES4, TESAnnwyn will try and convert all your TES3 textures in to TES4's nearest equivalents (the ones found in Oblivion.esm) so your landscape is fully textured. e.g. You can export the land from Morrowind.esm, Siege at Firemoth.esp and Bloodmoon.esm in to a single heightmap/vertex colour map and texture placement map image and reimport the fully textured lands in to TES3 or in to a single worldspace in TES4.

With 8-bit greyscale images you can emboss virtually any image on to a 3D landscape with minimal effort and with the vertex colour image you can add photographic quality colour shading. TESAnnwyn can also paste the entire landscape in a base texture of your choosing, for Oblivion this includes the numerous 3D dynamic grass textures. For TES4 you may also define a custom texture on the command-line. Options exist to limit the height-range of imports, limit the maximum and minimum import heights, ignore cells containing land between a specified range, the ability to scale all heights and adjust the vertical height offset.

Any exported heightmap image can be additionally processed in a third party image program or heightmap tool for further modification. With a tool such as Adobe Photoshop for example, it is possible to scale up, miniaturize or rotate the entire landscape. When the same is done with the vertex colour map and texture placement map(s), the imported landscape will be an exact translated scaled version, including all the original textures.

Heightmap images and vertex colour map images can also be exported with cell-grid lines if desired, which is useful for getting an idea of scale and for producing Claims maps. For TES4 imported landscapes, TESAnnwyn will generate a unique (time based) FormID number for the worldspace which means that any generated LOD (distant land) files will always be displayed in the game regardless of the load order of your mod, saving a lot of testing and redistribution headaches.

TESAnnwyn can also generate cell-sized NIF files from a TES4 landscape, though currently these only contain the heightmap and normals (for shading). This system is still in development but is part of the LOD2: Distant Land replacement system which gives full quality in-game distant land without the bugs in the original game's system, at a notable cost to performance.

When TESAnnwyn exits, it will also display the highest and lowest points recorded during import or export and the cell co-ordinates in which these were occur. These heights are shown in THU (TES Height Units), Game units and real world metres. The south-west cell location is also displayed during heightmap exports which is helpful to use when re-importing so the cell co-ordinates match the same land position they did before export.

This program has been written entirely by myself as has the method of reverse engineering the landscape, vertex colour map and texture format (and various TES3/TES4 record formats). AFAIK little data of any use seemed to exist on the net regarding how landscaping works, other than that which I've added myself to the TES4 Wiki. I will release the source code eventually too, but I still have a few things left to add in the meantime (mainly GUI, native TES4 texture export/importing).

Currently TESAnnwyn is Command-line based (a shortcut to the standard Windows XP command console is provided, which should work with most people's setups). But I will eventually put a GUI on this utility which will make it simpler for the less technically inclined to use.

TESAnnwyn gets its name from Annwyn, the Welsh word for the Celtic OtherWorld. And TES, obviously, The Elder Scrolls. :)


INDEX


1. What TESAnnwyn can do:

a. Export a TES3 Morrowind Landscape to a RAW/BMP image.
b. Export a TES4 Oblivion Landscape to a RAW/BMP image.
c. Import a RAW/BMP image containing heightmap data and create a TES3 Morrowind 3D Landscape.
d. Import a RAW/BMP image containing heightmap data and create a TES4 Oblivion Worldspace 3D Landscape.

2. TES Size Limits

a. Height points per cell.
b. Gradient limits
c. RAW/BMP Height Range Limits

3. Choosing between RAWs and BMPs.

a. 8-bit Greyscale BMPs.
b. 16-bit and 32-bit BMPs.
c. 8-bit, 16-bit and 32-bit RAWs.
d. RAW files produced by the official TES4 CS.

4. Running TESAnnwyn and TESAnnwyn's Options.

a. Options for importing a landscape from an image.
b. Options for exporting a landscape to an image.

5. Automatic Texturing of a Landscape

6. Some Examples

a. Export a 16-bit BMP image from Morrowind.esm
b. Export a 32-bit RAW file of the Tamriel Worldspace landmass in Oblivion.esm, increasing the height of all points by a factor of 1.5:
c. Export a re-scaled 8-bit greyscale BMP of Vvardenfell (the landmass from morrowind.esm). The '-r' option ensures that the height
d. Import (emboss) a greyscale BMP to a TES3 landscape.
e. Import a 16-bit RAW in the Construction Set's format (e.g. called q2.raw of size 1024x1024)
f. Import a BMP heightmap (MyBMP.bmp) but do not import cells whose height is all -2048 units (i.e. sea-bed wilderness):
g. How to scale up a landscape: Create a twice scale Solthseim (from island from Bloodmoon).
h. How to scale down a miniature: Create a 1/16 scale miniature of the entire Tamriel worldspace from Oblivion.

6. Quirks or common issues. All at the end. :)

7. Additional Credits

1. What TESAnnwyn can do:

EXPORT

a. Export a TES3 Morrowind Landscape to a RAW/BMP heightmap image:
This will export all the TES3 landscape contained in an ESP/ESM to an 8/16/32-bit RAW or BMP, or Greyscale BMP in heightmap form. All the height data points can be raised by a specific value and multiplied by any scale (e.g. a scale of -0.5 will produce an inside-out heightmap with all height points halved). For greyscale BMPs, the image can be automatically re-scaled so the minimum and maximum height points lie between 0-255. The exported image can also be marked with a grid of black square cell boundary lines if desired.

b. Export a TES4 Oblivion Worldspace Landscape to a RAW/BMP heightmap image: This will export all the TES4 landscape in a specified Worldspace contained in an ESP/ESM to an 8/16/32-bit RAW or BMP, or Greyscale BMP in heightmap form. All the height data points can be raised by a specific value and multiplied by any scale. The exported image can also be marked with a grid of black square cell boundary lines if desired.

c. Export a TES3 or TES4 Worldspace Vertex Colour Map alongside the heightmap export: Vertex Colour Maps are 24-bit RGB colour images that can be stored on each heightmap point. They are usually used to paste building and path layouts for texturing in the render window, but are also used to darken or tint areas of a map to produce different effects. Morrowind and Oblivion both contain quite comples RGB images which detail the layouts of several towns, paths, rivers, shrines, rocks, trees etc. You can export these to a separate 24-bit BMP using a '-c' option at the same time as exporting the heightmap. Like the heightmap export images, this BMP can be marked with a grid of black square cell bounaries if desired with the '-g' option.

d. Export a TES3 Landscape Texture Placement map:
A texture placement map is a 16-bit BMP where each pixel represents the unique number that TES3 uses for a texture. If you're curious, the number that Morrowind uses for each texture is included in the tes3_ltex.dat file distributed with TESAnnwyn. You can resize this texture placement map in an image editor using 'nearest neighbour' interpolation (the most basic and commonplace method of resizing an image) so that when reimported, the textures are placed in the correct scaled locations.

IMPORT

d. Import a RAW/BMP image containing heightmap data and create a TES3 Morrowind 3D landscape:
This allows you to import any size 8/16/32-bit RAW or BMP or Greyscale BMP and have it turned in to a landscape (within the TES limits described further below), which you can visit in the CS or in game. You can tell TESAnnwyn to create the new landscape a specified number of cells from (0,0) since by default the south-west cell of the imported landmass starts at (0,0). You can also offset the height of the imported data by a specific number of game units, scale all heights by a specific factor and ignore all flat cells of a certain height (e.g. Ignoring all cells of height -2048 will avoid importing useless cells which only contain the sea-floor).

e. Import a RAW/BMP image containing heightmap data and create a TES4 Oblivion 3D landscape:
This allows you to import any size 8/16/32-bit RAW or BMP or Greyscale BMP and have it turned in to a landscape (within the TES limits described further below), which you can visit in the CS or in game. The default worldspace name created is TESAnnwyn. But you can specify your own on the command line (-w option) or change it easily in the CS. The other applicable options are the same as for importing a Morrowind landscape.

f. Import a 24-bit colour BMP as a Vertex Colour Map at the same time as the heightmap import:
A vertex colour image containing map layouts (useful for placing your towns or manually rendering rivers, paths etc if you have concept drawings) can be included during the heightmap import procedure. This can also be a photograph, which if used alonside a greyscale heightmap import can produce a very high quality embossed 3D photograph on the landscape. But you have to be 100 or more metres off the ground to appreciate that effect!

g. Import a TES3 Landscape Texture Placement map in to TES3 or TES4:
The texture placement map (provided it has been exported) can be imported in to TES3 or TES4 so the land is applied with textures in their original positions. If the heightmap and vertex colour map were scaled, this texture placement map can also be scaled (using nearest neighbour interpolation) so that the correct texture positions are maintained during scaling. For TES4, a texture comparison lookup file is used (the same one used by the TESPort program) to use the closest looking matches that Oblivion.esm has for Morrowind.esm and Bloodmoon.esm.

2. TES Size Restrictions.

Both the Morrowind and Oblivion Game engines share the same landscape size and details restrictions as each other. The smallest height unit (TES Height Unit = THU) equates to 8 Game Units (GU) which is about 11.4cm. Each height point on the landscape has a base size of 128x128 game units (1.8m x 1.8m). No finer detail is possible with the existing standard. One has to resort to texturing and meshes and vertex colouring to give the landscape an even finer feel.

a. Height points per cell.
Morrowind uses 64x64 (4096) points per cell.
Oblivion uses 32x32 (1024) points per cell. Each Morrowind cell covers 4x the area of an Oblivion cell.

b. Gradient limits.
TES landscapes store the height map in gradient form inside the ESP. Each gradient point is only 1 byte per point. This limits the amount a landscape point can increase by from the previous point to its west by a value +127 or -128 THUs (from -1024 to +1016 GUs or about +/- 14.5m). This imposes certain restrictions whilst scaling upwards, mainly around cliff edges. If you exceed this height difference between two points, it can overflow or underflow and the landscape will do the complete opposite of what you expect. For example, if the height of a landscape is supposed to increase by +128 THUs at one point, the result will actually be -128 units, so rather than a steep increase it will plummet. This gradient of 1016 game units of height per 127 game unit point equates to a 7:8 gradient (~79 degrees). It's impossible to create near sheer vertical landscape faces in both dimensions in TES, but 7:8 is still quite steep. TESAnnwyn will automatically trap any overflows or underflows and limit the increase to the maximum possible. This will mean some steep inclines fall short of their target (and the east and/or north end edge of the cell may not join with the next cell) but this is much better than the landscape dramatically doing the reverse of what's expected.

c. RAW/BMP Height Range Limits
TESAnnwyn expects each height unit stored in any RAW or BMP import files to be in TES Height Units (THU) where 1 THU is 8 GU (game units). If you have a RAW/BMP heightmap which is in game units just tell TESAnnwyn to scale the heightmap down during importing - just use the option '-s 0.125' to reduce the height to 1/8th of its original height (see options below). The RAW/BMP data is assumed to be signed (i.e. both positive and negative). A height of 0 is sea-level. The default sea bed in both games is -2048 GU (i.e. -256 THU). If the data is not signed, you can decrease the height using the '-h' option in TESAnnwyn (see options below). These are the height ranges available for each size file:

Image Size Range in TES Height Units (THU) Range in Game Units (GU) Range in Metres (m)
8-bit RAW/BMP 256 (-128 to +127) 2048 (-1024 to +1016) 29.18
16-bit RAW/BMP 65536 (-32768 to +32767) 524,288 (-262,144 to +262,136) 7,471
32-bit RAW/BMP 4,294,967,296 (-2,147,483,648 to +2,147,483,647) 34,359,738,368 (17,179,869,184 to 17,179,869,176) 489,626,000 (489,626 km)

Note however, that at heights greater than about 69km, both TES games start to exhibit jittery rendering problems, so the usable limit is actually much lower.



Grayscale images suffer from the same limitation as 8-bit images, the detail range is very small. But you may use the '-s' scale option when importing a greyscale landscape in TESAnnwyn to increase the depth range. A 16-bit RAW is sufficient for most tasks, but to model a massive mountain such as Mount Everest (peak at 8,850metres) you'll definitely need 32-bit if you want to do it to scale and using TES's best available detail.

d. Morrowind specific restrictions

The Morrowind game engine has a 16-bit height range limit. Ironically the Construction Set doesn't. This limit restricts the usable height range to approx +/- 32768 game units (+/- 4095 THU or +/- 467 metres), so, technically, mountains are impossible in Morrowind. With TESAnnwyn, you can scale down the heights of an imported heightmap manually using the '-s' option or use '-r' to exponentially scale down tall heights (above 20,000 game units) and '-l' to flatten the maximum height to 32760 game units (4095 THU).

3. Choosing between RAWs or BMPs

Both RAW and BMP file formats are very similar. The only difference is that a BMP has a header at the beginning (at least 54 bytes in size) which includes the image size and bit-depth and that the image inside a BMP is up-side down compared to a RAW. So you can double-click on a BMP in Windows Explorer and it'll instantly display the image. RAWs and greyscale BMPs are better suited for modifying the heightmap in 3rd party tools, but 16/32-bit RAWs can hold a lot more detail than an 8-bit greyscale BMP.

a. 8-bit Greyscale BMPs
Greyscale images are very limited in detail and range, from -128 to +127 THU. But you can exaggerate this height range easily by using a scaling factor when importing the BMP to a landscape. Essentially the brighter (more white) the pixel, the higher the data point. Greyscale images are most useful for 'embossing' a picture image on to a TES landscape, or if you want to create less detailed 2D maps from a landscape export.

b. 16-bit and 32-bit BMPs
BMPs are great for rapidly visualizing the topography and contours of a landscape. If you use a scale factor when exporting the BMP image using TESAnnwyn, this can further emphasize differences in landscape height more quickly. BMPs are much less useful for height map modifications since most Image Processing programs (Gimp, Photoshop etc) turn the colours in to individual RGB points, rather than height values. So scaling or stretching a landmass using BMPs is not recommended unless you have a special program that knows each pixel is a height, rather than 3 primary colours.

c. 8-bit, 16-bit and 32-bit RAWs
I recommend using RAWs if you want to modify the landscape, such as stretching, rotating, sliding or scaling the landscape. Some imaging programs, such as Adobe Photoshop, do not understand 32-bit RAWs, only 8-bit and 16-bit. I would hope some other 3rd party tools can understand them though, they do contain a lot more detail and are necessary for high detailed real-world height maps (such as the Himalayas).

d. RAW files produced by the official TES4 CS
The RAW files exported by the TES4 CS are 16-bit and always limited to a size of 1024x1024. Unfortunately the heights are also in game units (or half-game units, I haven't investigated fully). This severely limits their range to either 131,072 GU or 65,536 GU. In addition, the CS exported files are always elevated so no points are below sea level, and this decreases the upper range still further. Many people report problems trying to get high landscapes using the CS import/export system because of these limitations. There's no good technical reason for Bethesda to have lost the available range by using game units in their exports since neither game uses that level of detail.

4. Running TESAnnwyn and TESAnnwyn's Options

TESAnnwyn will be easier to use when I make a GUI front-end - of all my TES utilities, this one would benefit the most due to the large number of command-line options. Presently it must be run from the command line. This means typing opening a command prompt that contains the tesannwyn program (one is distributed with this program which should work for most people's needs) and typing in tesannwyn with some text after it (e.g. see the examples section). The format is essentially:

tesannwyn options filename1,filename2,filename3 ...

The options are described below. Many options require an additional parameter. This parameter should always be a whole number, with the exception of the scale option '-s' which can be a floating point decimal, and the Worldspace option '-w' should always be text (e.g. "Tamriel").

filename1 is the name of the ESM/ESP or RAW/BMP file you want converted. TESAnnwyn is fairly intelligent, it can spot a TES3/TES4 or BMP file and guess what you mean to do. If it can't identify the format, it'll assume the file is a RAW and that you want to import it. If you want to export multiple ESMs and ESPs into single combined images, specify each filename filename2, filename3 etc seperated by a commar, but no spaces! Spaces between filenames will confuse TESAnnwyn so if you have to convert, say, a file called "Siege at firemoth.esp" it would be better to rename a copy of it as "SiegeAtFiremoth.esp" for example. Always the latter ESM/ESP file exported maintains priority over earlier exported images, so for example, if filename1 and filename2 modifies the same cell of land, the modifications in filename2 will overwrite those of filename1, which is useful when you want to convert combine the heightmap changes from multiple mods in to a single heightmap.

Whether you are importing or exporting an image with TESAnnwyn, the resulting file will always be called the following, depending on the situation:

tesannwyn.esp :

When importing an image to create a landscape.
tesannwyn.raw : When exporting a landscape to a RAW image file.
tesannwyn.bmp : When exporting a landscape to a BMP image file.
tesannwyn-vclr.bmp: When importing or exporting a Vertex Colour Map Image. It is currently not possible to change this name.
tesannwyn-vtex3.bmp: When exporting a TES3 landscape to a texture placement map (-T 3 option). It is not possible to change this name.
tesannwyn-ltex3.dat: When exporting a TES3 landscape to a texture placement map, this file contains the lookup texture name to use for each texture number on a re-import.
tesannwyn-vtex4-*.bmp: When exporting a TES4 landscape with texture placement maps (-T 4 option). It is not possible to change these names.
tesannwyn-ltex4.dat: When exporting a TES4 landscape to a texture placement map, this file contains the lookup texture FormIDs for each colour in the texture placement maps.

These are the currently available options:


Options available for Exporting a TES3/TES4 landscape to a RAW/BMP image.

-p number Picture format type (1 is RAW, 2 is BMP, 3 is CSV - currently unsupported).
-b number Picture bit depth (8 for 8-bit, 16 is 16-bit, 32 is 32-bit).
-h number Offset the height of all exported height points by the specified number of Game Units (a whole number).
-s number Scale all height data by a factor of n (a floating point number: e.g. 2 means double the height , 0.25 means a quarter etc.)
-c Export the 24-bit Vertex Colour Map image at the same time (it will always be called tesannwyn-vclr.bmp)
-g Draw black grid-lines at all cell boundaries on all exported images (heightmap and vertex colour map).
-w worldspace (TES4 only) Export the landmass from the specified Worldspace.
-r For 8-bit Greyscale only, this option will automatically rescale and offset so all heights lie between the range 0-255. (NB. no number argument is required).
-T (3 or 4) Export texture placement map(s) for a TES3 or TES4 landscape.

Please note that the '-h' height option is applied before the '-s' scale value.

Options available for Importing a RAW/BMP image to a TES3/TES4 landscape.

-i number TES version to export landmass for: 3 for a Morrowind import or 4 for an Oblivion import.
-w worldspace (TES4 import only). The imported land will be created in the specified new Worldspace. The default worldspace is TESAnnwyn.
-p number Picture format type (1 is RAW, 2 is BMP, 3 is CSV, currently unsupported).
-b number Picture bit depth (8 for 8-bit, 16 is 16-bit, 32 is 32-bit). For RAW only, BMP is detected automatically.
-d XxY X and Y size dimensions for the import image. e.g. 1024x768. (This is for RAW only, BMP is detected automatically).
-c Import a 24-bit colour image (must be called tesannwyn-vclr.bmp) with the heightmap. This will be written as the Vertex Colour Map data.
-h number Offset the imported landmass height by the specified number of Game Units (a whole number).
-s number Scale the imported landmass height points by the specified factor of number (a floating point number).
-T number Import a texture placement map (TES3) or layered maps (TEs4). number must be either 3 or 4.
-F number (TES4 only). Force the newly created Worldspace to have this 'FormID' (rather than a unique time based FormID). Useful to preserve dependencies and LOD filenames. The 'FormID' is the reverse byte numerical format (e.g. as used by LOD files) rather than the hexadecimal form.
-0 (TES4 only). All CELL and LAND records are created in modindex 00, which means other ESPs can reference the heightmap ESP and there are no disappearing land issues.
-l min,max Limit all imported heights to min game units and (optionally) max game units. e.g. '-l -2048,32760' will limit all heights to between -2048 and 32760 game units. This example would ensure all deep sea-water land blends with the wilderness and 32768 game units is the upper limit that Morrowind can display in the game, so all higher mountains would be flattened to this level. The lower limit can be specified on its own: e.g. '-l -2048' would just prevent any imported land from falling lower than the default sea-bed height.
-r A special rescale option that gradually decreases all height above 20000 game units so that by 48000 game units it caps at 32768 game units. This was designed for Tamriel heightmap imports from Oblivion to Morrowind so that all of Cyrodiil still has some mountainous profile in Morrowind (see Vality7's Dawn of Oblivion mod or pictures at: http://www.projectmanager.f2s.com/morrowind/BeyondCyrodiil/index.html).
Combined with -l this helps make very tall heightmaps playable, if reduced, for TES3. TES4 does not have this height limit problem.
The -'s' option can also be used to de-scale the entire heightmap, whereas the '-r' option only affects much greater height ranges.
-x number Offset the starting X co-ordinate for the imported land data. Default is 0; cells start at (0,0).
-y number Offset the starting Y co-ordinate for the imported land data. Default is 0; cells start at (0,0).
-t number or FormID Apply a single texture to the entire landscape. For TES3 this is usually a number from 0 to 140 (see the tes3ltex.txt file included with this program). For TES4 this must be a FormID. e.g. 00017843 is TerrainGCGrass01 (see the tes4ltext.txt file for a list of all textures).
-u name,filename (TES4 only) Apply a custom texture across the entire landscape. Name is the EditorID you want your texture to be called (e.g. MyDesert) and filename is the filename (dds) of the texture file (e.g. mydesert.dds). Oblivion expects all landscape texture files to be under the folder Data\Textures\Landscape so make sure your texture file is placed in there.
-o low-high Do not import cells whose land is all between low and high game units. Numbers are separated by a hyphen '-'. (e.g. -2048 will ignore normal size wilderness cells, or -8192-0 will ignore all cells which lie all below sea level, or -8192--2056 will ignore all very low sea bed which is lower than the TES default (-8192 to -2056: Note the double '--', one for the range, one for the actual negative value), or 10000-60000 will ignore all cells between these high heights).

Again please note that the '-h' height option is applied before the '-s' scale value.

Additional Options:

-v : Show the version number, then exit.


5. Automatic Base Texturing of a Landscape in a single texture

If you don't have a texture placement map (normally created from a heightmap export of an exisiting TES3 terrain), TESAnnwyn includes a '-t' option which can paste the entire imported landcsape in a texture of your choosing. This is optional, but provides a much more appealing landscape than the default rock that both games use. Two files are included with TESAnnwyn: tes3ltex.txt and tes4ltex.txt.
Both contain a list of all the default landscape textures available in each game:

i. TES3 Texture File Format (tes3ltex.txt):

The format of the TES3 texture file is:

Number, Name, Filename

This file is best viewed with Wordpad (notepad can't display it properly). The last few textures in this file are Bloodmoon textures, which can't be used if you only have Morrowind.esm. You may add your own textures to the end of this list, but be careful not to damage the ones before since they are loaded in to the ESP as LTEX records.

ii. Format of the TES4 texture file (tes4ltex.txt):

This is similar to the TES3 format:

FormID, Name, Filename

This file is not needed by TESAnnwyn to create textures, it's only provided to help you find the FormID for your desired texture. I think it's possible to find them in the CS somehow too, but I can't remember where atm.

iii. Applying a single texture when importing a TES3 landscape.

Just specify a '-t number' option as one of the command line parameters. e.g. '-t 0' will apply Sand everywhere, or '-t 35' cobblestones. To turn it all in to snow for example (e.g. texture 117):

TESAnnwyn -i 3 -t 117 Myfile.bmp

The tes3ltex.txt file MUST be in the same directory as TESAnnwyn for TES3 textures to be applied.

iv. Applying a single texture when importing a TES4 landscape:

Just specify a '-t FormID' option as one of the command line parameters. e.g. '-t 00034808' will apply snow everywhere, or '-t 0002ae87' will apply one of the many types of cobblestone textures available. To make everywhere grassy for example (with one of the many 3D grass textures, e.g. 0009c719):

TESAnnwyn -i 4 -t 0009c719 Myfile.bmp

The output ESP (tesannwyn.esp) will automatically require Oblivion.esm as a master if you use the '-t' option. The tes4ltex.txt file is not necessary to make textures work: Tesannwyn does not use it. Make sure you type the FormID correctly. Case does not matter, but it must be 8 digits long or the TES4 CS will not be able to locate the correct texture when you load the file (and the landscape will be a hideous jet black!).

You may also use your own custom texture across the entire landscape if you can't find what you want in Oblivion or Shivering Isles' offering. For example, if you want to paste the entire landscape in a new texture called mysnow.dds, and would like it to be called mysnow in the Construction Set, do:

TESAnnwyn -i 4 -u mysnow,mysnow.dds Myfile.bmp

You must copy your texture mysnow.dds to the Oblivion\Data\Textures\Landscape directory in order for the game and CS to display it. You may also specify a sub-directory if you wish.


6. EXAMPLES

These examples illustrate many of the different things you can do with TESAnnwyn and at some point or other, cover just about every option available.

I. Export Examples

a. Export a 16-bit BMP image from Morrowind.esm

TESAnnwyn -p 2 -b 16 morrowind.esm

Since a 16-bit BMP is the default export for TESAnnwyn anyway, for the above example you could achieve the same just by doing:

TESAnnwyn morrowind.esm

This will export a BMP (picture type 2) with a bit-depth of 16-bits per pixel. The file will be called tesannwyn.bmp.

b. Export a 32-bit RAW file of the Tamriel Worldspace landmass in Oblivion.esm, increasing the height of all points by a factor of 1.5:

TEAnnwyn -p 1 -b 32 -s 1.5 -w Tamriel Oblivion.esm

The output file will be called tesannwyn.raw.

c. Export a re-scaled 8-bit greyscale BMP of Vvardenfell (the landmass from morrowind.esm).

The '-r' option ensures that the height and scale values are automatically re-adjusted so that the lowest landscape point is 0 and the highest landscape point is 255. This is useful for creating 3D maps.

TESAnnwyn -p 2 -b 8 -r morrowind.esm

The output BMP will be called tesannwyn.bmp.

d. Export the Vertex Colour Map from the Tamriel Worldspace in Oblivion.esm and mark it with a grid of cell-lines.

TESAnnwyn -c -g -w Tamriel Oblivion.esm

The Vertex Colour Map will be a 24-bit BMP file called tesannwyn-vclr.bmp. The heightmap will be automatically exported to an image at the same time (tesannwyn.bmp), currently there is no way to export only the vertex colour map, but since they'll both be separate files, that won't matter.


II. Import Examples

e. Import (emboss) a greyscale BMP to a TES3 landscape.

You can emboss any image you like on to the landscape, just turn your original picture (a JPEG, BMP, GIF, PNG etc) in to a greyscale image using any image package (such as Adobe Photoshop or Gimp) and save as an 8-bit BMP. For a picture called 'MyFace.bmp', type:

TESAnnwyn MyFace.bmp

The output file will be called tesannwyn.esp. Remember that a MW cell is 64x64 points. The embossed image will be very large and is better viewed from high up in the CS or from a mountain! Combined LOD effects available for Morrowind (with the MGE mod) and Oblivion you could create some cool effects. High contrast pictures which go suddenly from black-to-white (screenshots of black text on a white background are an example) can cause overflows in the way height is displayed in the CS & game (remember this is a TES limit - no point can be higher than 127 THU from the point to its west). These overflows appear as dramatic spikes and strange formations on the landscape. To fix this, you can use a scale factor of around 0.495 or less. This scale will reduce the worst possible case, a height increase from 0 to 255 to a height increase of 0 to 126 which will prevent all overflows. e.g.

TESAnnwyn -i 3 -s 0.495 MyFace.bmp

f. Import a RAW heightmap and a BMP image containing a Vertex Colour Image at the same time to a TES3 landscape:

The Vertex Colour Map BMP must be the same size as the RAW import image, or it will probably end up skewed. Your Vertex Colour Map image must be a 24-bit BMP called 'tesannwyn-vclr.bmp'. TESAnnwyn will automatically look for this file to include (-c specifies that a Vertex Colour map should be imported). If your RAW file was a 16-bit file called MyRaw.raw and of size 4096x2048:

TESAnnwyn -i 3 -c -d 4096x2048 MyRaw.raw

The output file will be called tesannwyn.esp. If you're scaling a heightmap, you can export the Vertex Colour Map, scale that image by the same amount and reimport it so it'll line up correctly on the original land.

g. Import (emboss) a greyscale BMP and a colour photograph (Vertex Colour Image) on the same TES4 landscape

This produces a neat, if gimmicky effect. If you have a colour photograph, save one copy as a 24-bit colour BMP and call that tesannwyn-vclr.bmp and another copy as an 8-bit greyscale, called, say, MyPhoto.bmp:

TESAnnwyn -i 4 -c MyPhoto.bmp

This will produce a TES4 file called tesannwyn.esp which you can load in the CS. Remember that without a '-x' and '-y' option the bottom left of the image starts at (0,0) so you must look in positive numbered cells to find it. If you zoom back to a great height you can see the photograph emblazened across the embosses landscape.

h. Import a TES4 Construction Set Heightmap Editor formatted file called q2.raw (size 1024x1024) to a TES4 Worldspace called MyWorld.

These options also apply to heightmaps produced in GeoControl using Gibbo912's presets - these presets are also designed to export the heightmap in the same form that the TES4 heightmap utility expects.
All RAWs exported by the TES4 CS heightmapper are 16-bit. They have their height raised by 4096 units and each height is stored in 4-game units. This is actually a waste of space, since they're using numbers 2x more detailed than TES can render and would have done better if they'd stored it in THU: You get 4x the range in THU with no loss of detail. A scaling factor of '0.25' (1/4) must be applied to turn their height units in to THU. The height has to be dropped by 8192 game units on import to return it to the correct level relative to the sea:

TESAnnwyn -i 4 -w MyWorld -p 1 -b 16 -d 1024x1024 -h -8192 -s 0.25 q2.raw

The output file, as always for importing is tesannwyn.esp. You can actually just type this:

TESAnnwyn -i 4 -w MyWorld -h -8192 -s 0.25 q2.raw

Because '-p 1 -b 16 -d 1024x1024' are already TESAnnwyn's import defaults.

i. Import a BMP heightmap (MyBMP.bmp) to TES4 but do not import cells whose height is all -2048 units (i.e. sea-bed wilderness):

TESAnnwyn -i 4 -o -2048 MyBMP.bmp

This prevents TESAnnwyn from importing useless and wasteful cells. Without the '-o' option a square/rectangular grid of cells will be created. You can also specify a range with '-o' such as '-o -8192--1024' will ignore all cells only containing land between -8192 and -1024. The default Worldspace created (if you don't specify -w) is called TESAnnwyn. The output file as usual is tesannwyn.esp.

j. Import a BMP heightmap (MyBMP.bmp) to TES4, apply a grass texture (e.g. FormID 00017843) to add a bit of character.

TESAnnwyn -i 4 -t 00017843 MyBMP.bmp

You can choose any FormID you like. There is a text file included called tes4ltex.txt which you may open in Wordpad or Excel (it's commar delimited) to find the FormID of your favourite texture.
To use textures in TES4, Oblivion.esm must also be loaded. As always, the output file is tesannwyn.esp.

k. Import a BMP heightmap (MyBMP.bmp) to TES4, applying your own custom texture (e.g. MySnow.dds):

TESAnnwyn -i 4 -u MySnow,MySnow.dds MyBMP.bmp

Make sure there are no spaces in the editor name or filename. In this example, your texture will show up as MySnow in the CS.

l. Import a 32-bit 4096x4096 RAW in to TES3 and paste the whole landscape in a texture, say, number 123 (Grassy snow, a Bloodmoon texture).

TESAnnwyn -i 3 -p 1 -b 32 -d 4096x4096 -t 123 MyRAW.raw

You can choose any texture number you like - choose one from 'tes3ltext.txt' (best opened in Wordpad, notepad doesn't display it properly). As usual, the output file is tesannwyn.esp. There is no need to load Morrowind.esm to display these textures, the texture list is written in to the ESP. You may add your own textures to this file, just follow the existing format (number, texture name, texture DDS filename). The texture details will automatically be added to the ESP.


III. Scaling Examples

m. This is a multi-stage example showing how to scale up a TES3 landscape to either TES3 or TES4:

We'll scale up Bethesda's Solstheim (the island in Bloodmoon) to double it's original scale.

i.) Make a quick visual overview of the landscape. This is an unnecessary step, but useful to see:

TESAnnwyn -p 2 -b 16 Bloodmoon.esm

This will create a 16-bit BMP (-p 2) file called tesannwyn.bmp with which you may quickly view the topography of the island in Windows explorer or any image viewer. It will also tell you that the lowest point on the land is -2136 game units.

ii.) Export a 16-bit RAW file of the landscape. We must increase the height by at least 2136 game units so no exported heightmap points are below 0, or this confuses 3rd party image applications such as Photoshop. We must also double the height of each point (since Photoshop/Gimp will only scale and interpolate the image in 2D, not 3D). To be able to scale the vertex colour map and land textures, we should specify '-c' and '-T 3' to export both these images.

TESAwnnyn -c -T 3 -p 1 -b 16 -h +2136 -s 2 Bloodmoon.esm

This will create a file called tesannwyn.raw. The dimensions of the file are shown at the end of TESAnnwyn's output. e.g. In this example, Bloodmoon.esm creates a 832x896 RAW file.

iii.) Load this file (tesannwyn.raw) into Adobe Photoshop, or Gimp or your favourite image processing program (which can handle raw RAW files). When prompted for details, select the correct bit-size for the file (16), the correct dimensions (832x896), a header of size 0, IBM-PC byte order (not Mac) and, if prompted, a channel count of 1. These are the same parameters you would use on a TES4 CS RAW export except that the dimensions of those are always 1024x1024). Now double the image size. In Photoshop this is from the menu: Image->Image Size. Double the number of each dimension.
In our example this means 1664x1792. Resample image should be ticked (by default this is bicubic interpolation, which is fine).
Save this new raw file, back to the original name if you want (tesannwyn.raw).
Scaling by as much as 2x or more can introduce a very slight amount of terracing using standard bicubic interpolation, though only noticable or very undulating terrain (such as Vvardenfell, Bloodmoon is quite gentle). If you want to get a smoother image and have Photoshop CS or later, choose bicubic smoother as your interpolation method. To decrease any minute terracing caused by scaling, you could even apply a blur once or twice to the image too, but that's up to you.

iv.) Scale the Vertex colour map: Load the file called tesannwyn-vclr.bmp into your favourite image processing program (Photoshop, Gimp etc) and change its image size from the original 832x896 to 1664x1792. Then save it back to the original file (tesannwyn-vclr.bmp).

v.) Scale the texture placement map. Load the file called tesannwyn-vtex3.bmp into your favourite image processing program (Photoshop, Gimp etc) and double its image size using nearest neighbour 'interpolation'. Nearest neighbour is simplest and most primitive way of expanding an image and ensures the numbers for each texture placement position are accurately preserved. Using a more fancy interpolation method can introduce false texture numbers along the borders and look weird in the game.

vi.) Import the scaled up file to a TES3 landscape. We must remember to decrease the overall height back to sea level so everything is the correct scaled height (sea level is twice as deep as before at -4096 game units). Since there is little point in importing really deep ocean sea-bed wilderness cells that contain only land between, say, -5000 and -2048 game units we can ommit this with the '-o' option: We have to specify the geometry of the raw file too (using the -d option, the new file is 1664x1792). Finally, to avoid the new land conflicting with any existing land, such as Vvardenfell (Morrowind.esm) we can move this landscape using a specified number of cells from (0, 0) using the -x and -y options, Lets say 70 MW cells west, 20 MW cells south, i.e. (-70, -20).

TESAnnwyn -i 3 -p 1 -b 16 -c -T 3 -h -4272 -o -5000--2048 -d 1664x1792 -x -70 -y -20 tesannwyn.raw

You're done. The output file is called tesannwyn.esp and can be loaded in to the TES3 CS or in to the Morrowind game and visited. Alternatively if you want to import the scaled up landscape in to TES4 (Oblivion), change the '-i 3' option to '-i 4':

TESAnnwyn -i 4 -p 1 -b 16 -c -T 3 -h -4272 -o -5000--2048 -d 1664x1792 -x -140 -y -40 tesannwyn.raw

Without a worldspace (-w) option, the land is placed in to a worldspace called TESAnnwyn. You can also modify this afterwards in the CS.

n. This is a multi-stage example showing how to scale up a fully textured TES4 landscape

We'll scale up Bethesda's Tamriel Worldspace (the entire exterior landscape in TES4: Oblivion) to double it's original scale.

i.) Export a 16-bit RAW file of the landscape. We must increase the height by at least 2136 game units so no exported heightmap points are below 0, or this confuses 3rd party image applications such as Photoshop. We must also double the height of each point (since Photoshop/Gimp will only scale and interpolate the image in 2D, not 3D). To be able to scale the vertex colour map and land textures, we should specify '-c' and '-T 4' to export both these images.

TESAwnnyn -c -p 1 -b 16 -T 4 -h +2136 -s 2 -w Tamriel Oblivion.esm

This will create a heightmap file called tesannwyn.raw, a vertex colour map called tesannwyn-vclr.bmp, some texture placement maps called tesannwyn-vtex4-*.bmp (* is each texture later) and a FormID lookup file for the texture placement maps called tesannwyn-ltex4.dat. The dimensions of the files are shown at the end of TESAnnwyn's output; the heightmap and vertex colour maps are 4288x4128 and texture placement maps 4556x4386.

ii.) Load the heightmap file (tesannwyn.raw) into Adobe Photoshop (sadly I cannot find another program that can process RAW files properly) When prompted for details, select the correct bit-size for the file (16), the correct dimensions (4288x4128), a header of size 0, IBM-PC byte order (not Mac) and, if prompted, a channel count of 1. These are the same parameters you would use on a TES4 CS RAW export except that the dimensions of those are always 1024x1024). Now double the image size. In Photoshop this is from the menu: Image->Image Size. Double the number of each dimension.
In our example this means 8576x8256. Resample image should be ticked (by default this is bicubic interpolation, which is fine).
Save this new raw file, back to the original name if you want (tesannwyn.raw).
Scaling by as much as 2x or more can introduce a very slight amount of terracing using standard bicubic interpolation, though only noticable or very undulating terrain (such as Vvardenfell, Bloodmoon is quite gentle). If you want to get a smoother image and have Photoshop CS or later, choose bicubic smoother as your interpolation method. Applying one or 2 blur filters can also remove all undulation entirely and still leave you with an impressive looking heightmap.

iii.) Scale the Vertex colour map: Load the file called tesannwyn-vclr.bmp into your favourite image processing program (Photoshop, Gimp etc) and change its image size from the original 4288x4128 to 8576x8256. Then save it back to the original file (tesannwyn-vclr.bmp).

iv.) Scale the texture placement maps. Load each file named like tesannwyn-vtex4-0.bmp, tesannwyn-vtex4-1.bmp etc into your favourite image processing program (Photoshop, Gimp etc) and double the size of each one using nearest neighbour 'interpolation'. Nearest neighbour is simplest and most primitive way of expanding an image and is vital to ensures the numbers for each texture placement position are accurately preserved. Using a more fancy interpolation method can introduce false texture numbers along the borders and look weird in the game. In our example the size should double from 4556x4386 to 9112x8772.

v.) Import the scaled up file to a TES4 landscape. We must remember to decrease the overall height back to sea level so everything is the correct scaled height (sea level is twice as deep as before at -4096 game units). Since there is little point in importing really deep ocean sea-bed wilderness cells that contain only land between, say, -5000 and -2048 game units we can ommit this with the '-o' option: We have to specify the geometry of the raw file too (using the -d option, the new file is 8576x8256). Finally, to place the land back in it's original relative position to the world-centre we can move the land south-west using by doubling the original south-west cell position of the heightmap - this is given by TESAnnwyn when we exported the heightmap originally (it is -69, -64). We need to move it by (-138, -128) cells:

TESAnnwyn -i 4 -p 1 -b 16 -c -T 4 -h -4272 -o -5000--2048 -d 8576x8256 -x -138 -y -128 tesannwyn.raw

You're done. The output file is called tesannwyn.esp and can be loaded in to the TES4 CS or Oblivion game and visited. If you want to swap textures for any reason before you reimport, you can open the tesannwyn-vtex4.dat file (in wordpad - it's a simple commar delimited text file) which is created when you export a textured TES4 worldspace. This lists the FormID to use for each colour in the texture placement maps, so if you know the FormID of the texture you want to swap, look for the old FormID in this file and change it to the new one. When you import the landscape using the TESAnnwyn command above, the new texture will be used instead.

o. This is a multi-stage example showing how to create a miniature (scaled down) landscape.

We'll scale down the entire Tamriel worldspace stored in Oblivion.esm (includes Cyrodiil and a lot of outlying landscape you can't normally reach in the game) to 1/16 scale.

i.) This isn't necessary, but you can get an overview the landscape we'll be scaling by exporting it to a BMP first:

TESAnnwyn -w Tamriel Oblivion.esm

You can view the resulting BMP (tesannwyn.bmp) in any image viewer.

ii.) Using a similar command, we can export the worldspace to a RAW file. But we'll also need to make sure all the land is above sea level (so there's no negative land height) by raising it 2048 game units. We also want to scale down the height to 1/16 (this is 0.0625 in decimal). We'll also export the vertex colour map ('-c'):

TESAnnwyn -p 1 -b 16 -c -h 2048 -s 0.0625 -w Tamriel Oblivion.esm

TESAnnwyn will report that the output file is called tesannwyn.raw and is of size 4288x4128.

iii.) Load the tesannwyn.raw file just produced in to your favourite image program (e.g. Adobe Photoshop or Gimp) and when prompted, set the image size to the correct dimensions (4288x4128), the correct bit-depth (16-bit), IBM-PC byte order (not Mac) and if prompted a channel count of 1.

Now all you need to do is reduce the file size to 1/16 of it's original scale: 268x258. In Photoshop this is done by selecting: Image->Image Size from the menu. The resample image box should be ticked (it is usually set to bicubic, which is fine). Then save the new RAW file. You can use a new name or relace the original, tesannwyn.raw.

iv.) Load the vertex colour map tesannwyn-vclr.bmp into your favourite image editor and decrease it's image size by 16. The orginal image was 4288x4128 so the new image size should be 268x258.

v.) Now we need to reimport the RAW to either a TES3 or TES4 landscape. We also have to decrease the height of all points by (2048 * 1/16) 128 game units so the sea level is correct. And tell TESAnnwyn the dimensions of this file (268x258). It's optional, but we could also tell it to not import any landscape cells that would all be the same height (sea level) using the '-o' option. To import the RAW in to TES3:

TESAnnwyn -i 3 -p 1 -b 16 -c -d 268x258 -h -128 -o -128 tesannwyn.raw

This will produce a TES4 landscape ESP called tesannwyn.esp.

Or to import the RAW in to TES4, to a new worldspace called Tamriel16 for example:

TESAnnwyn -i 4 -w Tamriel16 -p 1 -b 16 -c -d 268x258 -h -128 -o -128 tesannwyn.raw

As usual, this will produce a TES4 landscape ESP called tesannwyn.esp.


7. LOD2: Experimental Replacement Land system.

This is probably a shelved project. I've left this in the current version of TESAnnwyn, just in case you're interested. The NIF exporting function might be of use to people; TESAnnwyn will generate single-cell sized NIFs for each cell from any TES4 worldspace heightmap. This distant land replacement system uses Visible When Distant (VWD) static meshes which are perfect copies of the landscape mesh. The near meshes are excluded and only the _far meshes are rendered. TES4qLOD can be used (with the same style -L option) to generate the corresponding cell sized NIFs that the game engine uses. The in-game performance will be notably less, because of the many files that need to be loaded and the greater level of detail in these meshes - the original TES4 Distant Land system approximates the entire heightmap in to at most 3% of the data, but this leaves lots of problems on many heightmaps (mis-joins between quads, gaps in landscape, dammed rivers and blocked valleys, cut-off mountains, meshes that you have to walk through to see the landscape neyond etc), hence why LOD2 was developed.

To create LOD2 for your mod. All this requires is that you specify the '-L' option when TESAnnwyn is used to export a TES4 heightmap. e.g.

TESAnnwyn -L -w Tamriel Oblivion.esm

As well as exporting the heightmap to a BMP, TESAnnwyn will create lots of .NIF files under the LOD2 folder. There will be two levels of sub-folders, the first being the worldspace name and then four directories numbered 1 to 4. These 4 directories contain cells in the (+ve, +ve) quadrant, (+ve, -ve) quadrant, (-ve, +ve) quadrant and (-ve, -ve) quadrant respectively; these divisions help in-game loading performance since there are less directories to seek in.
For example, the meshes from the Tamriel worldspace for the cells (17,3) and (-16, 4) can be found in:

LOD2\Tamriel\1\17.3_far.NIF
LOD2\Tamriel\3\-16.4_far.NIF

The entire LOD2 folder needs to be moved in to the Oblivion\Data\Meshes folder in order to work in the game. TESAnnwyn will also generate two ESP files:

TESAnnwyn_lod2_cs.esp
TESAnnwyn_lod2_stat.esp

The first file (TESAnnwyn_lod2_cs.esp) is only meant to be loaded in to the Construction Set so the modder can run the World->World Testing->Update Distant LOD option to generate the VWD data. This ESP contains all the STAT records for the heightmap meshes (in modindex 00 so there are no load order LOD issues) and a land-less worldspace which contains cells with the respective single VWD mesh in each.

The second file (TESAnnwyn_lod2_stat.esp) is only meant to be loaded as an additional Data File in the game as it contains just the STAT records (in modindex 00). This allows the game to link its VWD data to the actual NIF files.

Two problems have prevented me from finished LOD2; the NIFs have shading problems along the edges (and my mesh overlaps for each cell have not solved this) and the game engine appears to have a unique LOD mesh cache limit - after approx 3-4 quads of meshes it refuses to load any more for that worldspace game session, something I haven't managed to overcome in the Oblivion.ini file.

8. Known Bugs or Issues to understand

i. Erratic jumps in an imported landscape: As described earlier, the TES3 & TES4 landscape standards have some limitations, the most common problem is overflows/underflows where one landscape point is +127 THU or -128 THU different to the point to its west. Either fix the problem in the original data, or use the scale option '-s' with TESAnnwyn to reduce these dramatic changes. For 8-bit greyscale imports, a scale of 0.495 should prevent all overflow/underflows from occuring, as in example d. above. TESAnnwyn includes automatic over/undeflow trapping of imported landscapes so hopefully you should never see really severe spikes or rebellious landscape. If any landscape is trapped however, there is the likelyhood that part of that cell will not join to the north or east neighbouring cell. TESAnnwyn will report how many (if any) overflows or underflows were corrected at the end. Affected cells can be quickly reshaped and rejoined in the CS render window.

ii. Exported RAWs are upside down: If you export, rescale and import a RAW the landscape is the correct way up. But you may notice that when viewing the RAW image in an image program that north and south are reversed. A simple vertical flip will sort this problem out, but is not necessary if you're going to be importing the image back in via TESAnnwyn anyway because TESAnnwyn also imports RAWs upside down. :) Currently the exported RAWs are the same way up as a BMP.

iii. Imported RAWs are upside down: The same as above! If you've produced a RAW file in an external application (such as a heightmap editor) I'd advise doing a simple vertical-flip in Gimp or Photoshop (or another application) for now, or north will be south and south will be north on the imported image.

iv. In TES3 Morrowind, mountains suddenly seem to disappear and are replaced by huge holes that plummet in to the sea: The Morrowind game has a 16-bit game unit height when it comes to landscape, which limits its height range to +/-32768 game units (nearly 467metres), so technically mountains are impossible in Morrowind. Ironically, the TES3 CS does not have this limit and can render true mountains without a problem. TES4 Oblivion also has no problem, either in the CS or in game. To work around the program, you can either use the '-s' scale option to scale down all the heights, or '-l' to limit the range of the imported heights, or even better, use '-r' to exponentially rescale heights above 285m so that by only by a height of 48000 game units (684m) will they reach Morrowind's 467m limit. Combined with '-l' you can import large heightmaps without any holes, though the mountains will be de-scaled. This exact process was carried out for the Tamriel heightmap I made for Vality7's Dawn of Oblivion TES3 Cyrodiil mod. Everything below 20000 game units was identical to TES4, whereas above it they started to tail off. Cloud Ruler Temple normally disappeared in TES3 since that was just on the 32768 height limit, whereas with '-r' Cloud Ruler was rendered much lower at about 26000 game units (AFAIR).

v. Form Count errors in the CS when an imported heightmap ESP is first loaded: This is a perfectly safe warning generated by the Construction Set when sometimes the header count stored at the beginning of the ESP says there are less CELL and LAND records than there are actually stored in the file. It's caused by a small bug in my summary calculation, but will cause you no problems. When the CS asks if you want to correct this, just click YES. :)

vi. TES4 imported files show some lag when moving between cells which does not affect those created in the CS: Provided your landscape isn't too big for your operating system, you can produce a more efficient ESP by loading it as Active first in the CS and saving it once. This will group cells in to 8x8 cell sub-groups for faster loading, which currently TESAnnwyn does not do, so if you have a huge landscape (hundreds of suqare miles) you can get 0.5-1 second delays when moving between cells if you have a very large landscape. If your landscape is too large for the CS to load as active (i.e. you exceed XP's 2Gb limit), the CS will simply crash, not TESAnnwyn's fault, but more a fault of exhaustive memory requirements by the CS and a limit in 32-bit Windows XP. I will eventually make TESAnnwyn create sub-grouped headers, but currently TESAnnwyn will at least allow you to import massive landscapes, many times larger than what the CS can support and play-test them in game.

vii. No GUI:Yes, I know. I will write one for this program though, there quite a few options to learn otherwise and not everyone is comfortable using a command line.

viii. No CSV support: I will add this eventually, it won't be hard. It'll allow you to import/export CSV (commar delimited) data which you can view, process or create in Excel for example, or any programming language. They'd be easier to hand modify and create geometric patterns (such as a Pyramid, or fractal landscape) using simpler programming languages than trying to write byte level RAW files using more complex languages.


9. Additional Credits

Thanks to Timeslip for pointing out that my large and complex height offset calculation code was gross overkill. The offset is actually just a standard IEEE 32-bit float! Woops ...


My email: Ocean_Lightwave@yahoo.co.uk