Other user's assetsAll the assets in this file belong to the author, or are from free-to-use modder's resources
Upload permissionYou are not allowed to upload this file to other sites under any circumstances
Modification permissionYou must get permission from me before you are allowed to modify my files to improve it
Conversion permissionYou are not allowed to convert this file to work on other games under any circumstances
Asset use permissionYou must get permission from me before you are allowed to use any of the assets in this file
Asset use permission in mods/files that are being soldYou are not allowed to use assets from this file in any mods/files that are being sold, for money, on Steam Workshop or other platforms
Asset use permission in mods/files that earn donation pointsYou are not allowed to earn Donation Points for your mods if they use my assets
Author notes
This author has not provided any additional notes regarding file permissions
File credits
Aerisarn for NifMopp Jamilla for icon
Donation Points system
Please log in to find out whether this mod is receiving Donation Points
Changelogs
Version 1.6
New operations:
- Universal fixer - fix some common nif issues
- Set missing names - rename unnamed nodes and optionally the root node after the file name (more readable crash logs and less CK assertions)
- Update author - update Author, Process and Export Script fields in NiHeader
- Group shapes - option to group by all textures (not diffuse only), group by material file if set in FO4 meshes
- Universal tweaker - added report only mode
Removed operations
- Fix object palette - merged into Universal fixer
- Add missing skin flag - merged into Universal fixer
- Collapse link array - merged into Check for errors and Universal fixer
Version 1.5
Moved to x64 version to avoid out of memory situations with large meshes.
Updated nif definitions (support for bhkCylinderShape).
New operations:
- Add NiLODNode - move strips and shapes to the added NiLODNode block
- Copy anim priorities - copy priorities of controlled blocks between kf files matched by name
Updated operations:
- Rename strings - multiple renamings at once
- Check for errors - added checks for invalid Target in collision, consistency flags in shapes, mismatched end stop time in anim text keys
- Find draw calls - improved calculation
- Group shapes - added an option to create multiple nodes based on the vertices limit in a shape
- Merge shapes - merge shapes in nodes matched by name instead of a node index (running Group shapes and then Merge shapes containing ".dds" basically works as precombination)
Version 1.4
Replaced memory manager, up to 150% faster processing depending on operation
Added "Threads" parameter to limit the number of simultaneously processed files in case of out of memory errors
Click on Processed Files to customize processed files extensions for each operation
New operations:
- Real Time Reflections - NVSE
Updated operations:
- Convert to and from JSON - fixed minus infinity rotation angles export (used in .kf), added decimal digits precision setting
- Check for errors - added a check for sequential degenerate triangles in strips
Version 1.3
Added command line support for automation.
Some trash.
New operations:
- Add missing skin flag - add Skinning shader flag if missing for skinned shapes
- Remove nodes - remove nodes matched by name or type (the whole branch including children)
Updated operations:
- Universal tweaker - added condition to apply changes and various methods of tweaking
- Update Havok settings - now supports hkPackedNiTriStripsData and bhkCompressedMeshShapeData
- Update bounds - added Morrowind support
Version 1.2
New operations:
- Add facial anim - Add facial animations
- Convert to shader 3.0 - Convert BSShaderPPLightingProperty to Lighting30ShaderProperty
- Dismember NiSkinInstance - Convert NiSkinInstance blocks to BSDismemberSkinInstance
- Fix object palette - Ensure that names in NiDefaultAVObjectPalette match the names of linked nodes
- Search for Havok material - Find meshes using the specified Havok collision type
- Vertex color painting - Now also supports SSE and FO4 meshes
- Update shader flags - Now works on all descendants of BSShaderProperty
Version 1.1
"Path contains" option to filter processed files in the Input directory
Updated operations:
- Check for errors - a few improvements
- Universal tweaker - updating BGSM and BGEM material files
Version 1.0
Updated operations:
- Universal tweaker - now also accepts path to the specific block
Version 0.9
New option "Skip on errors" to ignore errors and continue processing.
Added limited support for some older meshes format in Oblivion.
Fixed "Particle Data Size" field calculation in BSTriShape of SSE meshes.
New operations:
- Update bounds - Recalculate bounds (center and radius) in BSTriShape, NiTriShapeData and NiTriStripsData.
Updated operations:
- Check for errors - Selectable list of checks. Added a lot of new checks, now it fully incorporates NifScan's functionality.
Version 0.8
Fixed operations:
- Adjust transformation - do not stop updating after the first match when several names are specified
New operations:
- Change partition slot - Change partition slot in BSDismemberSkinInstance
Version 0.7
Swapped positions of Process and Exit buttons
Updated operations:
- Update shaders - fixed "Flags 1" tweaking in Skyrim and Fallout 4 meshes
New operarions:
- Adjust transformation - Adjust transformation of the root node or nodes matched by Name
Version 0.6
Updated operations:
- Vertex color painting - added hue color table helper
- Update Havok inertia - added body part multipliers
New operarions:
- Rename Strings - search and replace in the Strings list in NiHeader
- Add blocks from skeleton - create anim controlled blocks in death animation for skeleton bones without collision
Version 0.5
Added grouping to the operations list for easier navigation.
Fixed "Copy all input files" option creating zero length files for unchanges ones.
Added summary message with modified, processed files number and elapsed time.
Fixed operations:
- Update tangents and binormals - tangents were not updated if Face Normals is checked
- Remove controlled blocks - more safety checks
- Vertex color painting - added replacement mode
New operarions:
- Add headtracking anim - Add headtracking animation. Bip01 Head "HeadTrack" NiFloatExtraDataController controlled block is added if missing with 4 linear interpolated keys.
- Update ragdoll constraint - Calculate Twist plane axis (Motor in NifSkope) A and B values in bhkRagdollConstraint. Havok A -> B must be used in NifSkope before running this.
Version 0.4
Fixed operations:
- Remove controlled blocks - added exact match option
- Update MOPP code - new DLL for MOPP generation
- Merge shapes - added support for NiTriShape and NiTriStrips merging
- Vertex painting - fixed rounding issue
New operations:
- Convert to and from JSON
- Update priority of controlled blocks
- Update shader flags
- Convert FO3 collision
- Universal tweaker
Version 0.3
Fixed operations:
- Update tangents and binormals: fixed Face normals option
- Convert strips to shape: fixed conversion when strips number is larger than 1
New operations:
- Remove controlled blocks
- Vertex color painting
- Group shapes
- Merge shapes
- Fix 3DS exported KF
- Remove unused nodes
- Convert root node
Version 0.2
New operations:
- Rename controlled blocks
- Update Havok settings
- Find unwelded vertices
- Find several strips
- Copy geometry blocks
- Collapse link arrays
Version 0.1
Initial public release
A batch NIF processing tool intended for intelligent S'Lanters
NIF
Update tangents and binormals - recalculate tangents, binormals and optionally normal vectors in shapes using modified Unity's code
Search and replace assets - perform search and replace on assets paths (textures and other referenced files) in meshes
Universal tweaker - change any value in any block types or in the specific block specified by path
Universal fixer - fix some common nif issues
Attach parent NiNode - the same as Attach Parent in NifSkope applied to NiNode or it's descendants with defined name
Convert to and from JSON - convert *.nif and *.kf files to text JSON format (for viewing, comparing, editing) and back
Convert strips to shapes - the same as Triangulation spell in NifSkope
Adjust transformation - adjust transformation of the root node or nodes matched by Name
Rename strings - search and replace in the Strings list in NiHeader
Copy geometry blocks - copy geometry data in BSTriShape, NiTriShape and NiTriStrips blocks between meshes preserving existing links. Blocks are matched by name. Used to copy updated geometry data back from reexported meshes preserving original nif data structure and settings
Collapse link arrays - remove empty links from link arrays. Also locate and warn about invalid links (pointing to missing blocks) and repeated links (several entries linking to the same block) though they are not removed and require manual fixing
Vertex color painting - set/adjust/remove vertex colors and/or alpha
Group shapes - group children shapes of the root node using the same diffuse texture under newely created parent NiNode named after texture file
Merge shapes - merge BSTriShape, NiTriShape and NiTriStrips blocks under NiNodes matched by name. Running Group shapes and then Merge shapes containing ".dds" basically works as precombination
Remove nodes - remove nodes matched by name or type (the whole branch including children)
Remove unused nodes - remove blocks not used by anything, optionally remove extra root nodes except single one
Convert root node - convert the root node type
Change partition slot - change partition slot in BSDismemberSkinInstance
Dismember NiSkinInstance - convert NiSkinInstance blocks to BSDismemberSkinInstance
Add NiLODNode - move strips and shapes to the added NiLODNode block
Set missing names - rename unnamed nodes and optionally the root node after the file name (more readable crash logs and less CK assertions)
Update author - update Author, Process and Export Script fields in NiHeader
Report
Check for errors - find and report some common errors
Find unwelded vertices - find vertices within a specified distance to each other in the same shape
Find several strips - find NiTriStripsData blocks with Strips Num larger than the defined value. Each additional strip requires a separate draw call which negatively affects performance. Ideally Strips Num should be 1, larger values indicate unoptimized or badly exported meshes
Search for Havok material - find meshes using the specified Havok collision type
Update ragdoll constraint - сalculate Twist plane axis (Motor in NifSkope) A and B values in bhkRagdollConstraint
Convert FO3 collision - change bhkConvexListShape used in FO3 but unsupported in FNV to bhkListShape
Shader
Update shader flags - update shader flags in BSLightingShaderProperty and BSShaderPPLightingProperty
Update parallax settings - change parallax values in shaders
Convert to shader 3.0 - convert BSShaderPPLightingProperty to Lighting30ShaderProperty
Real Time Reflections - NVSE - add RL reflections flag (Unknown10) and remove light fade flag in shaders with environment mapping
Command Line -OP:"Universal tweaker" Automatically start processing with the specified operation and close the app when done -S:"c:\Sniff\My.ini" Use the custom ini settings file instead of the default Sniff.ini. If provided name is not an absolute path then it is treated as relative to the Sniff folder. Can be used to create settings for operations running from command line. Just select the operation, set values and press Exit. -I:"c:\Input" Set Input directory -O:"c:\Output" Set Output directory -P:"armor" Set Path contains value to process files which path or file name contain the string -subdir:yes Include subdirectories (any other value means "no") -skip:yes Skip on errors (any other value means "no") -all:yes Copy all input files (any other value means "no") -LOG:"C:\Sniff\log.txt" Save messages into the specified file
Update tangents in the folder Sniff.exe -OP:"Update tangents and binormals" -I:"D:\Mod\Meshes" -O:"D:\Mod\Meshes" -subdir:yes
Change Alpha flags on armors (create ini with desired settings beforehand) Sniff.exe -OP:"Universal tweaker" -S:"ChangeAlphaFlags.ini" -I:"D:\Mod\Meshes" -O:"D:\Mod\Meshes" -P:"armor" -subdir:yes
Check for errors and save report (create ini with desired checks beforehand) Sniff.exe -OP:"Check for errors" -S:"Checks.ini" -I:"D:\Mod\Meshes" -LOG:"D:\Mod\ErrorMeshes.txt" -subdir:yes