Jump to content
Sign in to follow this  
z929669

Creating Tree LOD Models (by The Step Team)

Recommended Posts

@sheson

I don't want to spread any misinformation, so if you are so inclined, please revise this article as you like or post recommendations here (you have edit rights on the wiki like any member).

Share this post


Link to post
Share on other sites

Using CRC32 to match models is the preferred method.
The last ditch effort method shouldn't be mentioned. It is only useful for cases were there is not going to be any future updates and never any overwrites/replacers.

Personally I copy full models into a work folder and use a script to rename the files to *_[_CRC32_]passthru.NIF. Adding CRC32 with a script is easier this way since its the same file.
I then use NIFskope to remove extraneous blocks and data, spells to clean etc. and only keep the static trunk and crown and save it to the trunk work folder. Remove the trunk from the NIF. Double check/fix UV or change to UV clamp mode in the shader. Save it to the crown folder.
Then open the trunk NIF and remove the crown. Once all trunks are done, mass rename with a tool to add _trunk to the filename.

>>>Copy crown nodes into ..\Any\Path\Outside\Of\Mod\List\[TreeName]_[CRC32]_trunk.nif of the target mod in the mod list.
Remove trunk form the filename. Crowns should be the final filename.

emptypassthru_lod.nif is Skyrim LE format.  To copy BSTrIshape from Skyrim SE it needs to be updated with CAO or self made (hence my preference to remove form existing full model).

For convenience of humans troubleshooting large load orders I suggest to put the hybrids into subfolders with some kind of mod id, initials etc. like meshes\DynDOLOD\lod\trees\[mod id]\, same for trunks DynDOLOD\Render\Billboards\DynDOLOD\lod\trees\[mod id]\

DynDOLOD\docs\trees.ultra\tools\emptypassthru_lod.nif only support Skyrim LE format when copy pasting hence my preferences to remove stuff from existing full model.

Share this post


Link to post
Share on other sites
3 hours ago, sheson said:

Using CRC32 to match models is the preferred method.
The last ditch effort method shouldn't be mentioned. It is only useful for cases were there is not going to be any future updates and never any overwrites/replacers.

Will do

3 hours ago, sheson said:

emptypassthru_lod.nif is Skyrim LE format.  To copy BSTrIshape from Skyrim SE it needs to be updated with CAO or self made (hence my preference to remove form existing full model).

Part of the process I use is running all crowns through SSE NIF Optimizer, which takes care of SSE format in my standard workflow. Good to know this though.

3 hours ago, sheson said:

>>>Copy crown nodes into ..\Any\Path\Outside\Of\Mod\List\[TreeName]_[CRC32]_trunk.nif of the target mod in the mod list. Remove trunk form the filename. Crowns should be the final filename.

In my workflow, this is just emptypassthru_lod.nif renamed as indicated above (I rename this same mesh for both crown and trunk for convenience). I use this for pasting the trunks, and those are consumed by hybrid.bat without issue and TexGen doesn't seem to care about this either way.

3 hours ago, sheson said:

DynDOLOD\docs\trees.ultra\tools\emptypassthru_lod.nif only support Skyrim LE format when copy pasting hence my preferences to remove stuff from existing full model.

So doing it that way, you must be renaming the base node to BSFadeNode, or it doesn't matter? I avoid cleaning up unused strings and such left from removing mesh parts, since it's an added step.

Perhaps I will run emptypassthru_lod.nif through SSE NIF Optimizer before renaming to trunk/crown NIFs. This would ensure trunks are SSE format ... but I would still run crowns (and what I call "standard LOD models") through SSE NIF Optimizer either way to clean up strings and perform other menial tasks.

3 hours ago, sheson said:

Personally I copy full models into a work folder and use a script to rename the files to *_[_CRC32_]passthru.NIF. Adding CRC32 with a script is easier this way since its the same file.
I then use NIFskope to remove extraneous blocks and data, spells to clean etc. and only keep the static trunk and crown and save it to the trunk work folder. Remove the trunk from the NIF. Double check/fix UV or change to UV clamp mode in the shader. Save it to the crown folder.
Then open the trunk NIF and remove the crown. Once all trunks are done, mass rename with a tool to add _trunk to the filename.

In the meantime, I will try your method to see how it works for me.

Thanks for the tips!


I updated the article note at top to include a disclaimer that my workflow is one approach and that a standardized method is yet to come. I also changed options 1-3 to now be options 1 & 2 with preference as you indicated. The goal is to familiarize people with the general process, so I will update the article as I learn more.

Share this post


Link to post
Share on other sites
17 hours ago, sheson said:

emptypassthru_lod.nif is Skyrim LE format.  To copy BSTrIshape from Skyrim SE it needs to be updated with CAO or self made (hence my preference to remove form existing full model).

How can I tell the NIF game format of any random NIF file directly (without surmising from the node names)? emptypassthru_lod.nif contains nothing I know of that indicates it's for LE and not SE.

When I first was figuring out how to create hybrids, I was very confused about the empty NIF and where to get it (game format, base node name, other parameters). This is why I used emptypassthru_lod.nif as a basis.

You should know that I have no issue with copy/paste of BSTriShape into emptypassthru_lod.nif (after I rename to empty_trunk.nif). And these become my trunks and are never updated with CAO or SSE NIF Optimizer. They do work as expected with LODGen in creating the hybrids or changing the textures.

I will also add that I have always copy/pasted crowns into emptypassthru_lod.nif (after I rename to empty_passthru_lod.nif). Early on, I did not run these through CAO or SSE NIF Optimizer, and they worked without issue for hybrids or 'standard' LOD trees in my testing, so I must just be lucky or it doesn't matter for LOD?

These days I run through an optimizer just to clean up junk if it came over with the mesh parts I copied (and after getting that advice from you).

Share this post


Link to post
Share on other sites
14 hours ago, z929669 said:

In my workflow, this is just emptypassthru_lod.nif renamed as indicated above (I rename this same mesh for both crown and trunk for convenience). I use this for pasting the trunks, and those are consumed by hybrid.bat without issue and TexGen doesn't seem to care about this either way.

The filename of the crown should be that of the final hybrid model (*_XXXXXXXXpassthru_lod.nif). Only trunks should have "trunk"

15 hours ago, z929669 said:

So doing it that way, you must be renaming the base node to BSFadeNode, or it doesn't matter? I avoid cleaning up unused strings and such left from removing mesh parts, since it's an added step.

I suppose I must be converting it since its good pratice. When LODGen combines crown + trunk the output should have BSFadeNode either way.

31 minutes ago, z929669 said:

How can I tell the NIF game format of any random NIF file directly (without surmising from the node names)? emptypassthru_lod.nif contains nothing I know of that indicates it's for LE and not SE.

The Header / BS Header / BS Version is 83 for LE and 100 for SE.

33 minutes ago, z929669 said:

You should know that I have no issue with copy/paste of BSTriShape into emptypassthru_lod.nif (after I rename to empty_trunk.nif). And these become my trunks and are never updated with CAO or SSE NIF Optimizer. They do work as expected with LODGen in creating the hybrids or changing the textures.

Whatever works and is easier for you is fine.

34 minutes ago, z929669 said:

These days I run through an optimizer just to clean up junk if it came over with the mesh parts I copied (and after getting that advice from you).

Running through COA or something similar is good practice to make sure they do not upset LODGen.

  • Thanks 1

Share this post


Link to post
Share on other sites
28 minutes ago, sheson said:

The Header / BS Header / BS Version is 83 for LE and 100 for SE.

This is the key I was missing! Just opening NifSkope.exe defaults to BS header 0, and only Ni* are available on Block > Insert spell. Once I change that value to 100, I now have additional Bethesda (and Havok) categories for selecting BS* nodes (blocks).

In all of my scouring over NIF doc, I never found this.

35 minutes ago, sheson said:

Whatever works and is easier for you is fine.

Thanks. I do prefer copy/pasting blocks via keyboard over removing them from the base model, since then I avoid all of the cleanup steps (e.g., extra strings). It's also difficult for me to strip stuff from models with skinning, since parent/child blocks are more complex, and I am often left with an inconsistent hierarchy and block names. It must all get sorted by LODGen in the hybrids.bat/DynDOLOD automation anyway?

I do see that the method you lay out (CRC script on base models via xEdit > strip blocks > clean up > save as trunk/crown) is very straight forward. It trades-off the hassle of my copy/paste of CRC and treeName strings (using 7-zip CRC shell integration and Explorer) for the hassle of stripping/spells in NifSkope and launching xEdit. I will write up this approach once I run through it.

18 hours ago, sheson said:

For convenience of humans troubleshooting large load orders I suggest to put the hybrids into subfolders with some kind of mod id, initials etc. like meshes\DynDOLOD\lod\trees\[mod id]\, same for trunks DynDOLOD\Render\Billboards\DynDOLOD\lod\trees\[mod id]\

So I can package my mods this way then? I didn't consider that DynDOLOD would scan recursively beyond \DynDOLOD\lod\trees, but that seems obvious now. Fantastic.

Share this post


Link to post
Share on other sites
On 1/13/2022 at 5:50 PM, z929669 said:

So I can package my mods this way then? I didn't consider that DynDOLOD would scan recursively beyond \DynDOLOD\lod\trees, but that seems obvious now. Fantastic.

Yes. Anytime the tools look for assets it is usually done recursively.

Share this post


Link to post
Share on other sites
6 hours ago, sheson said:

Yes. Anytime the tools look for assets it is usually done recursively.

Works like a charm in constructing hybrids (after I found that I needed to account for the extra folder in the TexGen_Output path.

I also used your "strip from"  method (and CRC script) to construct the hybrids rather than my "copy to" method (and manual CRC). Your way is a tad bit quicker and a tad bit less potential for error. I only did it on some simple aspens, so I have yet to try it on skinned trees, which will be a bit trickier stripping down.

Do you remove the BSTriShape blocks from under the NiNode/BSMultiboundNode and place under root block or just leave NiNode/BSMultiboundNode/BSTriShape? I guess I will see for myself at some point but just curious.

Share this post


Link to post
Share on other sites

Yes I usually "flatten" the blocks in the process, remove everything that is not necessary for static resources.

  • Like 1

Share this post


Link to post
Share on other sites

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
Sign in to follow this  

  • Similar Content

    • By Badfrog88
      I'm retruning back to playing Skyrim after a couple of years absence. I've purchased the AE upgrade and began following the guide. I chose not to use the post-processing option during this build. While running DynDOLOD this message appeared on the screen. I don't believe this is a DynDOLOD problem, but I can't figure out what I need to do to resolve the issue.  Skyrim.esm isn't a master that needs to be cleaned is it? I don't remember reading that it was.
      Any help or suggestions would be greatly appreciated. 
    • By sheson
      DynDOLOD DLL for Skyrim, Skyrim Special Edition, Skyrim Anniversary Edition and Skyrim VR
      So far all versions of DynDOLOD use the SKSE plugin PapyrusUtil for the optional dynamic LOD in the game. Starting with version 2.45 there is now the alternative DynDOLOD DLL available.
      The current DLL version is 2.45. It works with dynamic LOD generated by DynDOLOD Standalone 2.45 and newer.
      Read the ..DynDOLOD\Docs\DynDOLOD_DLL.html included in DynDOLOD Standalone for an explanation about DynDOLOD DLL, installation instructions (overwrite papyrus scripts of DynDOLOD Resources) and how it works.
      If there are problems with it, check DynDOLOD_DLL.html and the DynDOLOD FAQ first before posting.
      If a DynDOLOD.DLL version is required for a game version that is not listed below, request it in this thread. First, search this thread if it has been requested already, though. The future will tell how long it takes to release updates.
      Typically a new DynDOLOD.DLL is required for each new game version, but not each new SKSE version. For example a DynDOLOD.DLL compiled with SKSE64 2.0.9 also works with SKSE64 2.0.10 for the same game version.
      Nexus Downloads for DynDOLOD 2.45 and higher
      DynDOLOD DLL for Skyrim
      DynDOLOD DLL SE for Skyrim Special Edition
      DynDOLOD DLL VR for Skyrim VR
      Mega Mirrors:
      DynDOLOD.DLL + Scripts for Skyrim 1.9.32 (overwrite the papyrus scripts included in DynDOLOD Resources)
      DynDOLOD Scripts for Skyrim Special Edition and Skyrim VR (overwrite the papyrus scripts included in DynDOLOD Resources SE)
      DynDOLOD.DLL for Skyrim Special Edition 1.5.39
      DynDOLOD.DLL for Skyrim Special Edition 1.5.50
      DynDOLOD.DLL for Skyrim Special Edition 1.5.53
      DynDOLOD.DLL for Skyrim Special Edition 1.5.62
      DynDOLOD.DLL for Skyrim Special Edition 1.5.73
      DynDOLOD.DLL for Skyrim Special Edition 1.5.80
      DynDOLOD.DLL for Skyrim Special Edition 1.5.97
      DynDOLOD.DLL for Skyrim Special Edition 1.6.318
      DynDOLOD.DLL for Skyrim Special Edition 1.6.323
      DynDOLOD.DLL for Skyrim Special Edition 1.6.342
      DynDOLOD.DLL for Skyrim Special Edition 1.6.353
      DynDOLOD.DLL for Skyrim VR 1.4.15
    • By TheComputerWizard
      I have been trying since November, 2021 to get DynDOLOD to work.  Every time I try, it gives a different excuse for not working.  I have Skyrim AE on my laptop with the version of SKSE64 for Skyrim AE, and that works fine.  I have the DLL's installed.  DynDOLOD resources 3.00 Alpha, and DynDOLOD 3.0 Alpha.  I think there is a newer version, (3.2?), but when I tried to run it, it didn't give me the option to select SSE mode instead of TES5 and gave an error after it started to run.  At least TexGen64 worked in that version.  In 3.00, TexGen64 gives an error that there is not a waterfall effect texture.  From the one time it did work, which was a fluke, I took the output folder and zipped and installed it as a mod in NMM, along with the DLLs and other things I just mentioned.  When I proceeded to run DynDOLOD, in 3.2 (?), it doesn't give me the option to select SSE mode and later gives an error.  No matter what I do, it always gives one excuse or another.  In 3.00 Alpha, it gives another reason.  It lets me select SSE mode, then runs for a bit and says the DynDOLOD resources are obsolete and I need the newest one.  I have the letest resources installed, and even went and uninstalled previous attempts at installing resources.  I have 3.00 and 3.2(?)  both installed.  I tried just 3.2, then just 3.0, then both.  It dives me the same bullcrap.  

      This is actually the most difficult and frustrating thing I have ever done in my life.  Nothing else comes close.  I want to smash my computer with a hammer, but that wouldn't help anything.  Did someone go out of their way to make DynDOLOD as needlessly difficult as possible?  I can't imagine it would be this difficult to "hand build" my LODs.  It would be tedious, but I can't imagine it being nearly this difficult.  

      Can someone please help me with this nightmare?  I have tried at least 3 different versions of DynDOLOD with matching resources and DLLs.  I've watched many tutorials and followed them closely.  I've buried myself in many long, confusing guides.  Nothing I've ever done in my life has been this difficult or confusing.  



  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.