Jump to content

[Skyrim] Object LOD Creation Discussion


Hana

Recommended Posts

I am by no means an expert, lets make that perfectly clear to start.

 

While thinking up a new solution to get an LOD version of the Gildergreen into the game, without the side effects of disappearing trees or duplicated trees, I tested the method described here under Generating Object LOD. I created a new static tree object, gave it an LOD suffix file name and placed it in the correct folders. I also created an LOD texture file for it.

And it worked. Well, at least partially. There's an issue with it not showing the proper textures. It came out as stone, but I'll figure that out later. Point is, the method works. What it's done is re-generated the Meshes\Terrain\Tamriel\Objects bto files. All 678 of them.

However, the USKP does not want nor need to impose all the new object LOD's on everyone's game. What we want is just the files specific to this area of Whiterun. That's not easy to figure out with the file naming convention. They appear to be named by quads...
 

example;
-----------
Tamriel.4.0.0.bto
Tamriel.4.0.4.bto
Tamriel.4.0.-4.bto
Tamriel4.0.8.bto
etc..

In addition, there are already a couple of reports of incorrect LOD in Dragonborn (Miraak's Temple, Skaal Village). The above method will work with new LOD meshes but again we run into the task of figuring out the correct .bto files specific to those areas.

(If only we had a TES5LODGen to automate the entire process and where people could do this themselves)

Link to comment
Share on other sites

If I understand right you need to find the only affected bto files. Sharing all of them between several testers may be an efficient although random solution. We may even be able to discover the "mathematical formula" that applies to the files naming convention. A group work sounds like a possible solution.

Link to comment
Share on other sites

Presumably, if you made new LOD terrain, the only files that would deviate in filesize from vanilla are the altered ones.  Is there some means to filesize check/checksum/whatever multiple files efficiently?  Look for ones that are different in filesize (or significantly different if the very act of regenning alters filesizes).

 

I'm willing to strip out geometry from the Temple of Miraak, but there's no point until this LOD business is sorted out.

 

Crazy idea...  Ask.  We drop a line to GStaff (are there other Beth CMs?) and ask him to pass along an inquiry as to how distant LOD filenames/coordinates work.

Link to comment
Share on other sites

Is there a way to quickly check identical files between old ones and the new generated ones ? I have a few tricky ideas but you may be laughing... :unsure:  So, I'm ready to investigate them if you can send me the entire package.

Link to comment
Share on other sites

Hana would have to do that, I haven't done anything with the Temple of Miraak LOD stuff.

 

The temple is actually two pieces... would it be better off if only the outer piece has the LOD for both and the inner one does nothing?

Link to comment
Share on other sites

Hehe, you guys are way ahead of me. That looks like good info there, MadCat. I wasn't sure the filesize suggestion would have worked, it's only adding a very very small object but it's possible I guess. I'm not feeling so great right now, but when I am I'll relook and focus on this.

 

Were you going to make the low poly temple, MadCat?

Link to comment
Share on other sites

Cell coordinates for LOD are grouped according to their name. There are 3 levels to the grouping 4, 8 and 16. These first numbers correspond to the cell dimensions of the LOD mesh

tamriel.4.0.0.bto is 4x4 cells so it contains 16 cells:

  • 0,0
  • 0,1
  • 0,2
  • 0,3
  • 1,0
  • 1,1
  • 1,2
  • 1,3
  • 2,0
  • 2,1
  • 2,2
  • 2,3
  • 3,0
  • 3,1
  • 3,2
  • 3,3

tamriel.8.0.0.bto is 8x8 cells so it contains 64 cells. All of the cells found in 4.0.0, 4.0.4, 4.4.0 and 4.4.4

Just use a cell grid map such as mine ( http://skyrim.nexusmods.com/mods/2251 ) and you can figure out pretty quick which meshes need to be replaced.

 

Quoting Worm's post here for further discussion. Good stuff.

Link to comment
Share on other sites

  • 2 months later...

Hi AFK modders

 

Since a few monthes I am working on a mod project within its own custom 64x64 worldspace ( Far from being exhaustive, but still a few screenshots here : Pyandonean Islands )
This project includes custom resources such as different sets of tropical animated trees.
For these trees, I  managed to get different LOD once in-game, in copying the vanilla .Nif files structures ; however there is still a distance from where the trees will totally vanished…
I guess this is why the "Generate LOD tree" is intended to be used for, in the CK ? ...However, despite a lot of tries I can't succeed in making it working.

I made a lot of resources and the “Pyandonean Islands†mod should finally offer dense jungles to explore within wide environments :
This is why I feel really sad to remain stuck there  :cry:

...As you started to work on Skyrim LODs before I did, please, you might help in giving me some advices ?

Only to mention, I also asked a few help to Elinen from the Hoddminir project and am still in wait for his/her answer ; in case (s)he would be the first I'll be back here to complete.

 

Here are the failed I tried :

  • Using the CK “Generate LOD trees†on my world space did not even created any .BTT files for my custom trees.
    Then, I added the vanilla pineforest01 on my island and I tried again “Generate LOD treesâ€. 
    The CK created a .BTT file… However, once in game, pineforest01 is still just vanishing while very far, just as my own custom trees.
     
  • I discovered later that adding a “mytree_lod_flat.nif†in the same dir as “myTree.nif†resulted in creating .BTT files for my custom trees.
    However, still no more success than I had before, for my custom trees as for the pineforest01 :
    All trees are still completely vanishing at a far-enough distance.
     
  • I tried then a lot of things, taking in account several tips I found there about creating Worldspaces LOD
    It means I made the generation and tests from an .esm file instead of an .esp file
    I used the Tree-LOD patcher in the last beta release of TES5Edit , etc…
    ...But still , nothing : Even with the .BTT files created, I see no differences at all ; my trees just still pop at a few cells !  :wallbash:  
     
  • What about this “Has Tree LOD†check on objects such as Statics or even Activators
    Did anyone tried something about that ? Does it mean other objects can use the TREE LOD system ?
    What would be the benefits regarding to a classical Static Object LOD with manually linked .nif file ?
    ...It seems Static Object might even be able to use both of them !?!? I am really confused  :blink:  

Whatever, THX a lot for ur time ! 

P.S. You have a great board !  :banana: 

Link to comment
Share on other sites

Well, after many many fails, I finally find everything I needed...  :bunny: 
...In paying more attention to the game structure.
...Here are my conclusions, I guess this might help a few people coming here ? icon_smile.gif

To be able to make TREE LODs, anyone should :
 

  • 1. Unpack the .NIF files for the trees you are using in your new/modified WorldSpace :
    Vanilla trees are stored in Data\meshes\Landscape\Trees
    The same way, you should unpack the needed textures :
    Vanilla ones will be in both : Data\textures\terrain\ and Data\textures\landscape\trees
    Note: You can use custom directories if you have your own custom trees.
     
  • 2. The .NIF file for the tree itself should always have a paired .NIF file with “_lod_flat.nif†suffix :
    For example, treepineforest01.nif + treepineforest01_lod_flat.nif
    Opening this file with Nifscope you’ll see a simple crossed Dual-Planes textured with a full feet-to-cap tree texture :
    For the treepineforest01_lod_flat.nif, the texture used is : textures\terrain\tamriel\trees\TamrielTreeLOD.dds
    Bethesda used a single texture for all their far away trees, and then different UVsets for the lod_flat NIF meshes itselves.
     
  • 3. ( ONLY FOR CUSTOM TREES: ) Let’s say you have a custom myCustomTree.nif file tree :
    Copy the template treepineforest01_lod_flat.nif and rename it myCustomTree_lod_flat.nif ; place it in the same folder as myCustomTree.nif itself.
    Now, make a texture including a picture of your tree ( you might make a screenshot of the whole full tree and then crop it with an alpha map )
    Name this texture : myWorldSpaceNameTreeLod.dds (DXT3, 1024×1024, 11 mipmaps) and place it in your directory : Data\textures\Terrain\myWorldSpaceName\Trees
    Create a normal map with the name : myWorldSpaceNameTreeLod_n.dds in this same directory.
    Now, in your myCustomTree_lod_flat.nif, with Nifskope, edit the texture path to point to your textures ; change the UVset if needed so it fit your texture.
     
  • 4. Finally, open the Creation Kit, and then : WORLD > WORLD LOD > choose your worldspace > tick the “Tree†check > GENERATE
    you should now have a .LST file and a .BTT files created for each found tree in : Data\meshes\Terrain\myWorldSpaceName\Trees
    If you have not placed the right meshes, and textures at the right places and with the right names as explained in 1. 2. & 3., these .BTT files will be unuseful !  :cyclops:
    You’ll still have a pop-in-and-out of your trees.... Otherwise, you’ll have the nice surprise to see your trees even from very far  ! 

     
  • 5. Big worldspaces ( 32×32 or more ) might be bugged ( “wall of trees lod bug†) unless you do one of this two things :
    - Generating the LODs from an .esm file instead of an .esp
    - Using TES5Edit last beta release to apply on your plugin the script “LOD tree patcherâ€, once LODs generated.

     
  • 6. It might be considered the possibility to tick the check “is full LOD†on a reference placed in your cell.
    This one will always be visible. This way, I did a few very low-poly activators spawning the real trees at the very last moment thanks to Papyrus scripts :
    A little bit more heavy than the engine LOD itself, but it allowed me to switch between different trees ( more or less animated according to the weather for example, or more or less damaged by fire )
     
  • 7. It might also be considered there is an “Has Tree LOD†check on base objects such as Statics or even Activators.
    But well, I am still investigating about these ones : Did anyone tried something about that ?
    As questionned above, does it mean other objects can use the TREE LOD system ?
    What would be the benefits regarding to a classical Static Object LOD with manually linked .nif file ?
    …It seems Static Object might even be able to use both of them !?!? I am still really confused about this one.

See ya.

Link to comment
Share on other sites

Me, again, for a few very-last more things about Tree LODs :
 
  •  "Has Tree LOD" is really acting to allow any kind of object to have a tree LOD.
    It requests you to prepare the things the same way as you would with a real tree :
    You must join a myMeshName_lod_flat.nif file working the same way as the usual _lod_flat.nif other files.
     
  • The way you prepare your myMeshName_lod_flat.nif does not change anything EXCEPT the UVsets.
    It means, you can't choose neither the 3D shape of the LOD, nor if it has Alpha, nor even the texture which MUST be one-only by worldspace ( with standard naming convention ).
    While generating the Tree-LODs of a worldspace, these files will only be useful by the CK for the NiTriShapeData UVsets.
    This means basically you should make a big Texture file with empty parts in case you would like to add some day new tree species - otherwise you'll have to change later these UV sets for each lod_flat file...
     
  • Ticking "Is Full LOD" on a reference only works if the base-object has a computed LOD for its kindness :
    If you generated trees LODS and tick the check for one of the tree, its "Full-LOD" will override its "standard flat LOD" ;
    if you tick "Is Full LOD" for statics, you'll have to generate Objects LOD - And, even if you ticked the "Has Tree LOD" on the static object, a Tree-LOD generation won't allow the "Is Full LOD" part...

That's it. I think we're done with it for now !  :grin:

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...