traison Posted April 11, 2025 Posted April 11, 2025 As part of my research into the stuttering outfit morphs issue I was going to compile RaceMenu with performance measuring utilities. The idea is to pinpoint why it's wasting (presumably) several orders of magnitude more time on some outfits, compared to others. Unfortuantely it turns out RaceMenu sources haven't been released for hardly any versions beyond some early alpha versions. Thus I have no real option other than to build the current master branch which I presume is version 0-4-19-16*, i.e. latest RaceMenu for 1170. I've confirmed the issue I'm trying to fix is still present on 0-4-19-16, running game version 1170. I can work with this configuration, it's just more effort than it really needed to be. * The source code does not appear to contain any actual plugin version numbers. However the plugin reports to SKSE that it requires 1.6.640 to function, which leads me to believe this is in fact not 0-4-19-16. It is also unfortunate that there's no build instructions, and that's pretty much where this research is now stuck: The master branch is missing PapyrusUtilities.h and PapyrusUtilities.cpp The master branch is missing something to define converters for fmt. None of the dependencies are documented. Project-local h files were throwing linker errors because of cpp files missing from the skee64 project. Practically everything was set up in such a way that nothing could be found out-of-the-box. SKSE obviously has its own issues like always: such as common_v14 (project) not being able to find common (solution). To get it to even compile, I had to change a lot of things: Inclusion of PapyrusUtilities.h can be commented out, apparently. Disabling logging got around the missing fmt converters. Dependencies discovered: spdlog, DirectXTex, common, skse64 and jsoncpp. Added ILogger.cpp and PresetInterface.cpp to the skee64 project. I had to move project files, headers, code and lib files of all dependencies as well as alter the include and library directories for everything to be successfully included and linked. Additionally: skee64 project references had to be removed to avoid a terrible mess. Required libs were built and included for linking manually. The thing compiles; I got my brand new skee64.dll right here. It won't load however. Loading fails with error 0x7E which is ERROR_MOD_NOT_FOUND. I could obviously figure out which module its looking for but that's not really the point here; it's not supposed to load any additional modules. Something in that mess of a compile has gone wrong and I ended up with something that only technically resembles RaceMenu. So, the TL;DR: Have you successfully compiled RaceMenu? Teach me how.
Yinkle Posted April 11, 2025 Posted April 11, 2025 I looked at the racemenu source code a while back and got terrified! 🤣 I wish you the best of luck, and please let us know if you find a solution to this annoying issue.
krzp Posted April 11, 2025 Posted April 11, 2025 This mod should fix the bad morphs and overlays: https://www.nexusmods.com/skyrimspecialedition/mods/138586
traison Posted April 11, 2025 Author Posted April 11, 2025 (edited) 47 minutes ago, krzp said: This mod should fix the bad morphs and overlays: https://www.nexusmods.com/skyrimspecialedition/mods/138586 Already got that, it fixes different problems. As far as I know no one else on the internet has even mentioned this morph issue. Every time morphs update, a few frames get skipped. It's microstuttering. You mainly see it when moving, or rotating the camera. Sometimes it's so small you only notice it when you remove the bugged outfit and see the difference. It's like going from 50 fps to 60 fps: 50 seems fine until you see 60. I have a workaround for these bugged outfits which is to load them in blender and decimate them. Dropping a 20,000 face outfit to 2,000 removes the stutter. Before you claim my computer sucks tho, there's plenty of outfits with more than 20,000 faces that work just fine. This issue is only appearing in "modern" outfits. My thread is from 2 years ago if I'm not mistaken, that's when it started. My suspicion is that some new mesh exporter was released at that time, and it's writing vertex data in a way that RaceMenu (or the game) really can't handle. But until I either get into the source code of RaceMenu or write myself a fully-featured NIF parser, the best I can do is speculate. Both of these approaches are annoyingly time consuming right now. Edit: and in case you're interested, the vertex data difference theory is not baseless, just based on a very small sample size. Example: Base 3BAv2 body on its own: vertex size 32, data size 589952, vertex count 18436. Base 3BAv2 body in a stuttering outfit: vertex size 32, data size 589952, vertex count 18436. Stuttering outfit shape: vertex size 40, data size 568560, vertex count 14214. Removing the shape with vertex size 40 from the stuttering outfit, leaving only the base 3BAv2 body with vertex size 32 removes the stuttering. Ideally I'd want a vertex data format converter. Something to remove whatever that additional 5th byte is. But for that I'd need the source code of a competent nif serializer/deserializer. Throwing these meshes into cathedral and swinging them to LE format and back to SE does not change the vertex size. Edited April 11, 2025 by traison
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now