Ultra Tree LOD

Left vanilla tree LOD. Right 3D ultra tree LOD.

Ultra tree LOD or LOD trees in object LOD are the terms used for when LOD for trees is done in object LOD instead of the standard tree LOD system. The LOD for the trees can be 3D tree LOD models, tree LOD billboards or a mixture of both - hybrid tree LOD models.

In fact, DynDOLOD already does LOD for some trees in object LOD for certain tree references whenever game engine limitations prevent the use of standard tree LOD. For example trees growing at angles or trees which are planted in the same areas as child worldspaces.

Requirements

Ultra tree LOD requires tree LOD billboards generated by TexGen. In case 3D tree LOD is desired, 3D tree LOD models need to be installed in the load order. If a 3D LOD model is not available for a tree, the tree LOD billboard will be used automatically in its place. Use TexGen to generate all required tree LOD billboards. Consider generating HD Tree LOD billboards with normal map textures for better looking tree LOD that reacts more naturally to lighting than standard tree LOD.

DynDOLOD Resources ships with 3D tree LOD models for the vanilla trees of Skyrim, Skyrim Special Edition and Skyrim VR and a few select mods:

Below is a list of mods that are known and tested to contain hybrid trees. Read their description for information which versions, trees or install options contain dedicated/optimized 3D LOD models. Install hybrid trees assets according to their documentation. Let TexGen generate all required tree LOD billboards. It is recommended to not install any legacy billboards. In case legacy billboards are included in a mods download it is recommended to hide/remove them.

When converting Skyrim tree mods to work with Skyrim Special Edition, typically do not convert the full tree models, as that will change their CRC32 checksum which is used to match the 3D tree LOD models. If full models have been converted, update the CRC32 in the 3D tree LOD filename so they match again.

Generating

By checking the Ultra checkbox on the advanced mode, the LOD for all trees can be done in object LOD while the standard tree LOD system is being disabled. There is no need to change the fTreeLoadDistance SkyrimPrefs.INI setting.

Depending on the mesh mask rules the LOD for such trees will use (hybrid) 3D tree LOD models (if available) or use tree LOD billboards directly or as fallback in case a 3D tree LOD is not found. The default fallback is defined by the TreeFullFallBack=1 setting in ..\DynDOLOD\Edit Scripts\DynDOLOD\DynDOLOD_[GAME MODE].ini. 1 = Billboard, 2 = Bilboard2 etc.

Depending on clicking the Low, Medium or High buttons the tree mesh mask rule is populated with different defaults.

Mesh masktree
LOD Level 4Billboard[1-6]
Level0 for 3D tree LOD
LOD Level 8Billboard[1-6]
LOD Level 16Billboard[1-6]
FlagsVWD
GridFar LOD
ReferenceUnchanged

Typically set LOD Level 4 to Level0 for 3D tree LOD. Use Billboards for all LOD levels in case performance or resource usage is of concern, but the advantages of doing trees in object LOD is desired over the limited standard tree LOD system.

While Billboard1 is suitable for standard tree LOD billboards and HD tree LOD billboards, consider using Billboard4 with HD tree LOD billboards for even better visuals. Billboard1 has 4 triangles per tree, while billboard 4 has 8 triangles per tree. The additional triangles allows for better reactions to light sources from all directions together with the HD tree LOD billboards. It is a good alternative to 3D tree LOD models in case performance or resource usage is of concern or as fallback for individual trees in case 3D tree LOD models are not available.

While the LOD is generated, a log file with a detailed report for each tree is created to ..\DynDOLOD\Logs\DynDOLOD_[GAME MODE]_Tree_Report.txt. It will contain an entry for each tree and which types of assets were found and used for the different LOD levels:

TreeAspen01 [TREE:0006A9E6] Meshes\landscape\trees\treeaspen01.nif
Vanilla tree, Billboard found, 3D LOD model found
Billboard_0: textures\terrain\lodgen\skyrim.esm\treeaspen01_0006a9e6.dds, textures\default_n.dds
Billboard_1: textures\terrain\lodgen\skyrim.esm\treeaspen01_0006a9e6_1.dds, textures\terrain\lodgen\skyrim.esm\treeaspen01_0006a9e6_1_n.dds
Billboard_2: textures\terrain\lodgen\skyrim.esm\treeaspen01_0006a9e6_2.dds, textures\terrain\lodgen\skyrim.esm\treeaspen01_0006a9e6_2_n.dds
Level0: meshes\dyndolod\lod\trees\treeaspen01passthru_lod.nif using textures...
Level1: meshes\dyndolod\lod\trees\treeaspen01passthru_lod.nif using textures...
Level2: meshes\dyndolod\lod\trees\treeaspen01passthru_lod.nif using textures...
Dynamic: Meshes\landscape\trees\treeaspen01.nif using textures...
LOD4: Level0
LOD8: Billboard1 using internal
LOD16: Billboard1 using internal

As the above example shows, a 3D LOD was found for the tree base record with the form ID 0006A9E6. The NIF model path and filename will be different if other tree mods are used. The messages will change depending on 3D LOD models being found and the fallback to billboards or full models.

Internal Billboards and External Billboards

By default using billboards in object LOD use the same 2 plane cross intersecting at a 90 degree angle very similar to the traditional tree LOD. This internal billboard supports normal maps and different lighting options which are explained in the Billboards Brightness section below.

It is also possible to define external billboard models in ..\DynDOLOD\Edit Scripts\DynDOLOD\DynDOLOD_[GAME MODE].ini with the settings:
TreeBillboard1=Internal
TreeBillboard2=DynDOLOD_flat_2x2_lod.nif
TreeBillboard3=DynDOLOD_flat_3x2_lod.nif
TreeBillboard4=DynDOLOD_flat_4x2_lod.nif
TreeBillboard5=Internal
TreeBillboard6=LODGen_flat_lod.nif

In order to use a different billboard, update the tree mesh mask rule and set the desired Billboard2, Billboard3, Billboard4 etc. for LOD Level 4, LOD Level 8 or LOD Level 16.

DynDOLOD will first look for the NIF in the ..\Data\DynDOLOD\ folder and in case none is found it will look in ..\DynDOLOD\Edit Scripts\DynDOLOD\. This way it possible for mods to simply include their own external billboard NIF models without users having to copy files.

The mesh DynDOLOD_flat_2x2_lod.nif defines the same 2 plane at 90 degrees similar to the internal billboard. The mesh DynDOLOD_flat_3x2_lod.nif has 3 planes intersecting at 60 degree angles and allows for 3 different textures.

While the internal billboard is suitable for standard tree LOD billboards and HD tree LOD billboards, consider using DynDOLOD_flat_4x2_lod.nif with HD tree LOD billboards for even better visuals. The internal billboard has 4 triangles per tree, while DynDOLOD_flat_4x2_lod.nif has 8 triangles per tree. The additional triangles allows for better reactions to light sources from all directions together with the HD tree LOD billboards. It is a good alternative to 3D tree LOD models in case performance or resource usage is of concern or as fallback for individual trees in case 3D tree LOD models are not available.

LODGen_flat_lod.nif is the same file shipping with xLODGen in case a user wants to replicate the visual results with xLODGen.

In order to use vertex colors in an external billboard NIF, at least one vertex color in a shape needs to be 0.9 or less. Otherwise if all vertex colors are "white" e.g. RGB all > 0.9 they may be removed for optimization. Note that vertex colors will be replaced by the FlatLODVertexColor or FlatLODWithNormalMapVertexColor and then changed by the FlatLODColorVariance settings unless those settings are disabled with -1 as explained below in the Billboards Brightness section.

See the existing DynDOLOD_flat_2x2_lod.nif for how vertices are defined with coordinates 0.0 and 1.0 respectively. The values will be multiplied with width, depth and height values from the billboard txt files which are automatically created by TexGen together with the billboard textures..

See the existing DynDOLOD_flat_2x2_lod.nif or DynDOLOD_flat_3x2_lod.nif for how each plane is a separate shape and defines a different texture, numbered _1, _2, _3 to be able to define different billboard textures for each plane. If only one billboard texture is found in the load order it will be used for all planes. If a _1.dds texture is found, then textures with the same name like _2.dds, _3.dds etc. are added to the texture atlas and used for the billboard. Any billboard with the same filename but without a number indicator is ignored. Generating HD tree LOD billboards with TexGen creates a front and side view texture.

See the existing DynDOLOD_flat_2x2_lod.nif for how the NiTriShape/BSTriShape Names are used to pass instructions to LODGen by setting it to "PassThru SphereNormals".

The "PassThru" means to not modify the shader settings to the typical settings required for object LOD. So the Shader Flags and Lighting Effects are left alone for the billboard. Remember that not all shader settings are supported by LOD and certain combinations can cause CTD.

"FixedNormals" means to not rotate the normals of the shape - they behave like world normals, always pointing in the same direction regardless of the orientation of the model. Typicaly the normals of traditional tree LOD just points straight upwards 0, 0, 1 into the sky so all sides receive equal lighting. By setting "SphereNormals" LODGen is instructed to adjust the normals like they originate from a center point below the translated/rotated billboard. This will make the planes react a bit better to lighting coming from different directions, without one side going considerable darker like it is the case with the typical "face" normals.

Example of sphered normal vectors in NifSkope

Billboard Brightness

Use the Billboard brightness dropdown on the advanced mode in case the tree LOD billboards are too dark or too bright.

In case the brightness of Billboard1 needs to be changed independently, change the values of FlatLODVertexColor for standard billboards and FlatLODWithNormalMapVertexColor for HD tree LOD Billboards in ..\DynDOLOD\Edit Scripts\DynDOLOD\DynDOLOD_[GAME MODE].ini.

In case of Billboard2 to Billboard6, consider editing the vertex colors of the corresponding NIF files. See Internal/External billboards for more.

3D Tree LOD Brightness

To control the brightness of 3D tree LOD models, edit ..\DynDOLOD\Edit Scripts\DynDOLOD\DynDOLOD_[GAME MODE].ini.

The three settings CrownBrightness, TrunkBrightness and FlatTrunkBrightness are multiplied with the vertex colors of the corresponding shapes of the models used for tree LOD.

Use values < to 1 darken and values over 1 to brighten. Note that vertex colors are always clamped between 0.0 and 1.0, so depending on the original vertex colors increasing the brightness is limited.

Trees on the Map

The standard tree LOD is hidden on the map, but can be made visible by turning off terrain and object LOD with the tll command in console for comparison.

By default the map shows object LOD from LOD level 16. Since the tree mesh mask rule defines to use a billboard for LOD Level 16, these trees show on the map together with the other objects from this LOD level.

If tree LOD is not desired on the map, either set LOD Level 16 for all tree mesh rules to None instead of Billboard. Alternatively edit Skyrim or Custom INI and set the object LOD level for the map to 32. That turns off all object LOD on the map, since by default there is no LOD level 32 object LOD:
[MapMenu]
uLockedObjectMapLOD=32

If no LOD level 32 object LOD files exist, the setting can cause stuck object LOD in active exterior cells or object LOD to be missing entirely. To generate LOD level 32 object LOD, set Level32=1 in ..\DynDOLOD\Edit Scripts\DynDOLOD\DynDOLOD_[GAME MODE].ini. LOD level 32 object LOD can only show on the map with the Skyrim INI setting. In the normal game view only LOD level 4, LOD level 8 and LOD level 16 Object LOD are shown.

If all rules for LOD Level 32 are set to None (not a single model or billboard is used in LOD Level 32) for a worldspace, LODGen will generate LOD level 32 object LOD files to be just like the LOD level 16 object LOD files without any LOD for trees. If there are any models or billboards defined in LOD Level 32 for a worldspace, then LOD level 32 object LOD will be generated for the worldspace as usual with only the specifically assigned models and billboards - just like object LOD for any of the other LOD levels.

Certain ENB settings like FogColorMultiplier or FogColorCurve in [ENVIRONMENT] can affect how tree LOD looks on the map. Consider changing the default key combination to toggle on/off all ENB effects from SHIFT+F12 to the m key typically used to open the map. Open enblocal.ini in an editor and change:
[INPUT]
// no shift
KeyCombination=0
// m
KeyUseEffect=77

Another option is to use different ENB settings based on the weather for the map. By default the form ID for the weather used on the map is 000A6858.

A third option is to make the static billboard trees in LOD level 16 object LOD not react to any lighting settings. Open ..\DynDOLOD\Edit Scripts\DynDOLOD\DynDOLOD_[GAME MODE].ini in notepad and set FlatLODLevelLODFlag=3 before generating. As a side effect the tree LOD on the map may appear a bit too dark, but at least it will not react to certain ENB settings.