0 of 0

File information

Last updated

Original upload

Created by

epinter

Uploaded by

epinter

Virus scan

Safe to use

Tags for this mod

About this mod

A SSEEdit script to export textures usage and data. You will know what textures are missing for your meshes, metadata from existant textures, their usage and where they are installed.

Requirements
Permissions and credits
Changelogs
A SSEEdit script to export textures usage and data. You will know what textures are missing for your meshes, metadata from existant textures, their usage and where they are installed.


How to use
On SSEEdit, right click on any esp and select "Apply script", then select the script "Export textures usage and data.pas", you see the interface below (after you select 'Apply script', BE SURE TO NOT SAVE when prompted, it's a very common mistake to type something on the script and save it after):




You can process your entire load order, or select a mod directory. If you select your load order, the script will analyze each mesh installed, on Data\ and all .BSAs, then verify if the textures are found in any containers, and tell you where they were found.
If you select a mod directory, the mod meshes will be analyzed and you will know if the meshes inside that directory uses textures that can be found in your game installation or not. For a mod directory, select one that contains textures/ and meshes/ subdirectories.
You will have to wait more than an hour if you have a big load order and select to analyze it. To run the script on a mod directory, it can take one or two minutes on medium sized mods, seconds on smaller ones.
At the end of the processing, you should see an 'Exception Summary', a list of all errors occurred during meshes analysis, like this:

***** Exceptions summary *****
Exception processing mesh: Probably invalid Nif file, NifNumBlocks > 5000. Mesh ignored: meshes\effects\fxtg09nocturnalbirds.nif
******************************

Together with the SSEEdit script, I'm providing Powershell scripts to view and filter the resulting .CSVs files. All scripts have a parameter -csvDirectory, so you can specify where the .CSV files are.
Considering you have PS-Scripts subdirectory inside your SSEEdit directory, the csvs will be searched in the directory of SSEEdit (parent of PS-Scripts), then inside Output directory.

The directory structure would be like this:
Edit Scripts\
PS-Scripts\
Output\
SSEEdit.exe


get-texturesdata.ps1: for TexturesData.csv
get-missingtextures.ps1: for MissingTextures.csv
get-texturesusage.ps1: for TexturesUsage.csv
get-meshesdata.ps1: for MeshesData.csv

Output

Textures data (TexturesData.csv)

This list contains data about textures, the fields are the following:

Texture: texture filename
Format: texture format, textures not compressed will have the name "DDS Uncompressed"
Width: texture width
Height: texture height
Mipmap count: The number of mipmaps the texture have.
AlphaFlag: The alpha flag from 'HEADER\ddspf\dwFlags' or from 'HEADER_DXT10\miscFlags2', depends on texture format.
Container: where the texture was found
OverriddenContainers: other containers the texture was found, that was overridden by the one in the previous field.

Example:
Spoiler:  
Show

Texture                                Format                Width Height MipmapCount AlphaFlag               Container    OverriddenContainers
-------                                ------                ----- ------ ----------- ---------               ---------    --------------------
textures\!_rudy_misc\candle02.dds      DXT3                   2048   2048          12                         Data\        {Lanterns Of Skyrim II - Textures.bsa}
textures\!_rudy_misc\candle02_g.dds    DXT3                   2048   2048          12                         Data\        {Lanterns Of Skyrim II - Textures.bsa}
textures\!_rudy_misc\candle02_n.dds    DXT5                   2048   2048          12                         Data\        {Lanterns Of Skyrim II - Textures.bsa}
textures\!_rudy_misc\candle02w.dds     DXT5                   1024   1024          11                         Data\        {Lanterns Of Skyrim II - Textures.bsa}
textures\!_rudy_misc\red.dds           DXT3                     32     32           6                         Data\        {Lanterns Of Skyrim II - Textures.bsa}
textures\_byoh\clothes\childrenc...    DXGI_FORMAT_BC7_UNORM  4096   4096          13 DDS_ALPHA_MODE_UNKNOWN  Data\        {Skyrim - Textures8.bsa}
textures\_byoh\clothes\childrenc...    DXGI_FORMAT_BC7_UNORM  4096   4096          13 DDS_ALPHA_MODE_UNKNOWN  Data\        {Skyrim - Textures8.bsa}
textures\_byoh\clothes\childrenc...    DXT1                   4096   4096          13                         Data\        {Skyrim - Textures8.bsa}
textures\_byoh\clothes\childrenc...    DXT1                   4096   4096          13                         Data\        {Skyrim - Textures8.bsa}
textures\_byoh\clutter\food\cook...    DXGI_FORMAT_BC7_UNORM  2048   2048          12 DDS_ALPHA_MODE_UNKNOWN  Data\        {Skyrim - Textures8.bsa}




Missing Textures (MissingTextures.csv)

This list contains the textures name your meshes are trying to use, but are missing.

Container: Container where the mesh was found
Mesh: filename of the mesh
Texture: the texture defined inside the mesh

Example:
Spoiler:  
Show

Container               Mesh                                                Texture
---------               ----                                                -------
Midwood Isle.bsa        meshes\74_w\longsword\longsword_ebony.nif           textures\cubemaps\cubemap_smooth.dds
Data\                   meshes\actors\alduin\alduin.nif                     textures\actors\alduin\AlduinEyes_n.dds
Skyrim - Meshes0.bsa    meshes\actors\alduin\farskin_alduin.nif             textures\actors\alduin\AlduinEyes_n.dds
Data\                   meshes\actors\animallica\pheasant\pheasant.nif      Textures\AV Packages\Chickenandcow\C...
Data\                   meshes\actors\animallica\wolf\hs-dog02.nif          textures\actors\hs_dog\hs-dog01.dds
Data\                   meshes\actors\animallica\wolf\hs-dog02.nif          textures\actors\hs_dog\hs-dog01_n.dds
Data\                   meshes\actors\animallica\wolf\hs-dog02.nif          textures\actors\hs_dog\hs-dog01_sk.dds
Data\                   meshes\actors\animallica\wolf\hs-dog03.nif          textures\actors\hs_dog\hs-dog01_n.dds
Data\                   meshes\actors\animallica\wolf\hs-dog03.nif          textures\actors\hs_dog\hs-dog01_sk.dds
Data\                   meshes\actors\animallica\wolf\hs-dog03.nif          textures\actors\hs_dog\hs-dog01k.dds
Skyrim - Meshes0.bsa    meshes\actors\atronachflame\testfireatronach.nif    textures\actors\fireatronach\FireAtr...
Skyrim - Meshes0.bsa    meshes\actors\atronachflame\testfireatronach.nif    textures\actors\fireatronach\FireAtr...
Skyrim - Meshes0.bsa    meshes\actors\atronachflame\testfireatronach.nif    textures\actors\fireatronach\FireAtr...
Skyrim - Meshes0.bsa    meshes\actors\atronachflame\testfireatronach.nif    textures\actors\fireatronach\FireAtr...
Skyrim - Meshes0.bsa    meshes\actors\bear\bearstatic.nif                   textures\actors\bear\BearFurPass.dds
Skyrim - Meshes0.bsa    meshes\actors\canine\dogstatic.nif                  textures\actors\dog\DogNewUV.dds
Skyrim - Meshes0.bsa    meshes\actors\canine\dogstatic.nif                  textures\actors\dog\DogNewUV_N.dds




Textures Usage (TexturesUsage.csv)

This list contains textures usage information and metadata.

Container: Container where the mesh was found
Mesh: filename of the mesh
MeshTexture: the texture defined inside the mesh
Found: true if the texture was found, false if not
TextureFoundMod: if a mod directory is selected for processing, this field will contain the path of the texture inside the mod directory
TextureFoundInstalled: the container where the texture was found installed
TextureDataFrom: indicates the texture used to show the data for the fields below
Format: texture format, not compressed textures will have the name "DDS Uncompressed"
Width: texture width
Height: texture height
Mipmap count: The number of mipmaps the texture have.
AlphaFlag: The alpha flag from 'HEADER\ddspf\dwFlags' or from 'HEADER_DXT10\miscFlags2', depends on texture format.

Example:
Spoiler:  
Show

Container             :
Mesh                  : meshes\018auri\mouthhumanf.nif
MeshTexture           : textures\actors\character\mouth\MouthHuman_N.dds
Found                 : True
TextureFoundMod       :
TextureFoundInstalled : Data\
TextureDataFrom       : Data\
Format                : DXGI_FORMAT_BC7_UNORM
Width                 : 1024
Height                : 1024
MipmapCount           : 11
AlphaFlag             : DDS_ALPHA_MODE_UNKNOWN
 
Container             : Midwood Isle.bsa
Mesh                  : meshes\74_w\bastards\bastard_silver.nif
MeshTexture           : 74_w\bastards\sheath_bastard.dds
Found                 : True
TextureFoundMod       :
TextureFoundInstalled : BSAssets - Textures.bsa
TextureDataFrom       : BSAssets - Textures.bsa
Format                : DXT1
Width                 : 1024
Height                : 1024
MipmapCount           : 11
AlphaFlag             :
 
Container             :
Mesh                  : d:\mods\vortexstaging\srp architecture 4k-63148-4-0-1671203858\meshes\architecture\winterhold\winterholdsymbol02.nif
MeshTexture           : textures\architecture\winterhold\WinterholdGate01_g.dds
Found                 : True
TextureFoundMod       :
TextureFoundInstalled : Game-'Skyrim - Textures2.bsa'
TextureDataFrom       : Game-'Skyrim - Textures2.bsa'
Format                : DXGI_FORMAT_BC7_UNORM
Width                 : 256
Height                : 256
MipmapCount           : 9
AlphaFlag             : DDS_ALPHA_MODE_UNKNOWN
 
Mesh                  : d:\mods\vortexstaging\srp architecture 4k-63148-4-0-1671203858\meshes\architecture\farmhouse\farmhouseanimdoor01.nif
MeshTexture           : textures\architecture\farmhouse\Farmhouse01.dds
Found                 : True
TextureFoundMod       : d:\mods\vortexstaging\srp architecture 4k-63148-4-0-1671203858\textures\architecture\farmhouse\farmhouse01.dds
TextureFoundInstalled : Data\
TextureDataFrom       : d:\mods\vortexstaging\srp architecture 4k-63148-4-0-1671203858
Format                : DXGI_FORMAT_BC7_UNORM
Width                 : 2048
Height                : 2048
MipmapCount           : 12
AlphaFlag             : DDS_ALPHA_MODE_UNKNOWN



Meshes Data (MeshesData.csv)

This list is a convenient way to have a summary of your meshes, it will tell you total number of textures referenced, and how much are missing.

Container: Container where the mesh was found
TextureCount: total number of textures used by the mesh
TextureFound: textures used by the mesh that was found
TextureMiss: textures used by the mesh the was NOT found

Example:
Spoiler:  
Show

Container           Mesh                                                           TextureCount TextureFound TextureMiss
---------           ----                                                           ------------ ------------ -----------
Data\               meshes\!kenan\enbparticle\rf-enbparticle.nif                              1            1           0
Data\               meshes\!kenan\realistic fireplaces\rf-campfire-land-off.nif              13           13           0
Data\               meshes\!kenan\realistic fireplaces\rf-campfire-land-on.nif               18           18           0
Data\               meshes\!kenan\realistic fireplaces\rf-campfire-off.nif                    8            8           0
Data\               meshes\!kenan\realistic fireplaces\rf-campfire-on.nif                    18           18           0
Data\               meshes\!kenan\realistic fireplaces\rf-ember-log.nif                      15           15           0
Data\               meshes\!kenan\realistic fireplaces\rf-fireplace-off.nif                   4            4           0
Data\               meshes\!kenan\realistic fireplaces\rf-fireplace-on.nif                   14           14           0
Midwood Isle.bsa    meshes\74_w\bastards\bastard_silver.nif                                  10           10           0
Midwood Isle.bsa    meshes\74_w\katanas\katana_dae.nif                                        9            9           0
Midwood Isle.bsa    meshes\74_w\longsword\longsword_dae.nif                                  12           12           0
Midwood Isle.bsa    meshes\74_w\longsword\longsword_ebony.nif                                10            9           1
Midwood Isle.bsa    meshes\74_w\scimitars\scimitar_glass.nif                                  8            8           0
Midwood Isle.bsa    meshes\74_w\staves\staff_glass.nif                                        4            4           0


Filtering with Powershell

.\PS-Scripts\get-meshesdata.ps1 -csvDirectory .\Output\test | ?{ $_.mesh -notmatch 'caliente'} | fl

.\PS-Scripts\get-texturesusage.ps1 -csvDirectory .\Output\test | ?{ $_.Container -notmatch 'data\\' }

.\PS-Scripts\get-texturesusage.ps1 -csvDirectory .\Output\test | ?{ $_.Container -match 'data\\' -and $_.width -ge 4096 }

.\PS-Scripts\get-texturesusage.ps1 -csvDirectory .\Output\test | ?{ $_.MipMapCount -eq 0 -and ($_.width -ge 4096 -or $_.height -ge 4096) }

.\PS-Scripts\get-missingtextures.ps1 -csvDirectory .\Output\test | ?{ $_.mesh -match '\\architecture\\'} | ft


To list textures with wrong dimensions:

.\PS-Scripts\get-texturesdata.ps1 -csvDirectory .\Output\test | ?{ -not $_._WidthPowerOf2 -or -not $_._HeightPowerOf2 }

.\PS-Scripts\get-texturesusage.ps1 -csvDirectory .\Output\test | ?{ -not $_._WidthPowerOf2 -or -not $_._HeightPowerOf2 }


Credits

SSEEdit team for their amazing work.