Jump to content

NifSkope 2.0 Dev


Jon
 Share

Recommended Posts

I really don't want to be a bother, but I was wondering if I could get some help figuring out why my setup using the latest version would be rendering everything for BGSM materials just fine, but BGEM materials appear to be invisible.

 

Interestingly, disabling shaders at least makes visible the base texture used in BGEM materials, but nothing else about them like color or alpha, etc, how they would actually appear (and of course they disappear completely when re-enabling shaders, again).

 

I've added all of the game's archives and loose file paths to nifskope's render settings and again, anything that uses a BGSM shows up normally - so could this be graphics driver related? I'm currently running an r9 270.

Link to comment
Share on other sites

  • 1 month later...
9 hours ago, icecreamassassin said:

Hey guys, I saw one person asked this previously but I didn't see a response unless I missed it, but do you have plans to implement collision scaling? I know it's visible and it's manually editable by vertex (very tedious). Thanks.

Could be handly indeed. Right now the only "fast" way I know (for Skyrim) is to export collision to nif in ChunkMerge, scale it in NifSkope and Apply Transform, then import back. Takes under a minute once you set up all the paths.

Link to comment
Share on other sites

  • 2 weeks later...

@InsanePlumber  Probably not, no.

Since the outset, adding features into such an old codebase has become increasingly costly to where there's really nothing left that I can justify adding.  Every big thing I've wanted to do would require a rewrite of massive parts of the codebase, or just trying to mash it into place as best I can.  Mashing things into place has been my MO for the most part, but it worked because those things were simpler.

Given that the Havok binary that is embedded into NIF files for the FO4 collision cannot be encapsulated with the XML definitions used in nif.xml I would have to "mash in" an entirely new binary loader to take over where the XML parser and NifModel save/load cannot go even though the two are heavily coupled to the UI and all the data manipulation functions.  Basically the way the data is shown in the UI via the NifModel/NifData class is heavily reliant on the nif.xml definitions and it's too tightly linked with all the other components.

This is in my opinion very flawed, even ignoring it being extremely slow and memory consuming.  Basically the UI *is* the data model and vice versa, and this is filled entirely upon load even though you never can actually see all of the NIF data at once.  The primary benefit was *potentially* being able to read newer NIFs without having to recompile NifSkope but very rarely has only nif.xml needed updating.  The only real need for quick updating via nif.xml was development/decoding and now I've made the much better 010 templates for such purposes.

So, I think I'm pretty much done with major additions to NifSkope without a complete rewrite.  Everything is too tightly coupled to rewrite one component at a time, especially the UI<->Data coupling.  NifSkope is basically a glorified spreadsheet.  This is extremely slow, because all the data manipulation ("Spells", etc) and retrieval is acting upon this glorified (and generic) spreadsheet instead of something object-oriented and de-coupled from the UI.

If I do "start over" it will almost certainly be a totally new program.  NifSkope has the benefit of being generic like I said.  It can support dozens of NIF versions.  I would focus solely on 20.2.0.7 NIFs going forward, with the potential to extend down to 20.0.0.5 (Oblivion) at minimum.  I won't use nif.xml and I won't use niflib as it's tied to nif.xml via code generation.  That was actually my primary reason for the 010 template repository, and I've already decoded more than is even in nif.xml for 20.2.0.7 (which is just plain wrong about some important things).  In fact I'm "so done" with nif.xml and the old codebase that I can't even bring myself to update nif.xml from my 010 templates.  Trying to wrap my head around version conditions for dozens of other games makes it hard to update nif.xml safely.

 

TL;DR -  I decided a while ago to stop trying to add things to NifSkope.  My code and the results both suffered and I no longer agree with the fundamental structure of the program.  I will maintain it but any significant development time will probably be going to a new program. 

Link to comment
Share on other sites

Hey Mr. Jon, Having serious troubles with Alpha 6. (i was forced to upgrade to win10 x64 after my win7 x64 became unstable. its all i had with me out of town) Now Nifskope is crashing left and right. I can replicate it as well. Open nif 1, open nif2, copy BSConnectPoints from 1 to 2. Save nif (sanitize pops up) ok. Close nif 2, Open nif 3. copy from 1 to 3, save. (sanitize doesn't popup it Crashes) this happens every time. I have nifskope in C:\Nifskope\Nifskope.exe. I have tried compatibility mode win7, win8, and disable DPI scaling, and run as Admin. still no luck brother. :(  I hope there is a quick fix man. We are in the middle of adding another 1000 nifs to Snappy HouseKit. (Fallout 4)

Link to comment
Share on other sites

If you mean actually crashing left and right and you're not being hyperbolic,  it's a platform issue on your end.  Totally delete your NifSkope folder and make sure to install only what is in the latest official release into that location. 

As for the steps to reproduce you gave, they're far too vague and possibly reliant on the actual NIF contents. 

Link to comment
Share on other sites

Once I had problems with the stability of NifSkope. (dev5 or dev6 I do not remember exactly)
The solution for me was to completely remove the registry entries for NifSkope.

- Make sure you turn off NifSkope.
- Create a TXT (NifSkope.txt) file and put in it what I wrote in the "Code" window.

Windows Registry Editor Version 5.00

[-HKEY_CURRENT_USER\Software\NifTools]



- Change extension to REG (NifSkope.reg)
- Run as Admin

When you restart NifSkope all options will be default.

Link to comment
Share on other sites

Fallout 4 nifs extracted from the game

Hey Jon still Crashing on Windows 10 x64. Clean install. and Clean install of Nifskope 2.0 dev6.

It Only happens when the "One or more block has had their name sanitized" part is trying to run the 2nd time.

Meaning, I open a Nif. open a 2nd Nif. copy the BSConnectPoint:Parents from the 1st to the 2nd. Save, on save the sanitize window pops up... everything is good up to here

then i close the 2nd nif. open a 3rd nif. copy the CP from the 1st to the 3rd. click Save. this time instead of the Sanitize window poping up i Crash.

 

Faulting application name: NifSkope.exe, version: 0.0.0.0, time stamp: 0x58207f38
Faulting module name: Qt5Widgets.dll, version: 5.7.0.0, time stamp: 0x575a6c61
Exception code: 0xc0000005
Fault offset: 0x000487f3
Faulting process id: 0x3108
Faulting application start time: 0x01d2a57527b5ff9f
Faulting application path: C:\NifSkope\NifSkope.exe
Faulting module path: C:\NifSkope\Qt5Widgets.dll
Report Id: 221fc41e-164d-4cd0-844f-e0ad22528c0c
Faulting package full name: 
Faulting package-relative application ID: 

Link to comment
Share on other sites

@InsanePlumber  That was maybe true before I removed some annoying things from the list of auto-sanitizers, like Reorder Blocks which can break a lot of things.  Sanitizing doesn't break anything anymore. 

There's no evidence the sanitization is causing the crash either, but it would be good if he disables it to rule it out.   He should probably ask himself why every single NIF he's throwing at it needs sanitization though... 

And for the last time @KKthebeast, I need the actual NIFs you're trying this out on if I'm to even bother attempting reproducing it.  "One or more block has had their name sanitized" means that your NIFs are technically broken, and maybe the crash is only happening on your broken NIFs.

Link to comment
Share on other sites

Hey Jon, Thanks for the reply man, unchecking the box works for now good sir! Sorry I'm getting on your nerves man, I didn't realize you had asked for the the file. I'll be sure to link some examples in the future!

I appreciate you buddy! Keep up the great work sir!

Edit:

JON! I am so sorry sir. I did not see your post requesting the nif file! I have been driving back home all day from work. Again my apologizes (illegal to use the phone here in my state while driving :( )

I linked the files below

Link to comment
Share on other sites

So now I have to go through the painstaking process of creating some broken NIFs that need sanitizing that also have or don't have connectpoints in the correct way based on your instructions and just hope I did so correctly in order to hope at reproducing the crash.  And now you duck out because it "works for now" and what I need from you means zilch now that I've stopped your crashing.  Instead of you just doing the kind and selfless thing and taking 5 minutes to upload the files in question.

And before you go way over-the-top personal with your reply as you seem to like to do (you weren't "getting on my nerves" before)...  this is how 99% of bug reports go and so it's just a general observation.  Seems people don't actually care about the program or the programmer, they just want to rid themselves of the bug.

So, I won't be troubleshooting bugs or crashes in this topic anymore.  In the future please use the official GitHub Issues tracker. 

Link to comment
Share on other sites

Sadly that seems to be a general trend in all things gaming these days. A few minutes spent could save hundreds of people the frustration, but they just don't want to spend those few minutes, so bugs persist. It's even worse when we simply can't reproduce it because we don't know what might have happened along the way to cause it.

Link to comment
Share on other sites

16 minutes ago, Arthmoor said:

You might have thought to mention that, just saying :P

Yeah sorry about the confusion guys. I'll try to be more considerate in the future. Meant no disrespect or to make anyone feel like their time is wasted or unappreciated. :D

Link to comment
Share on other sites

I have a few inquiries about precombined meshes in FO4.  I recently just successfully fixed a positional issue via directly altering a precomb mesh in NIFSkope, circumventing the problem of disabling precombines in that cell when doing so (here).

I am now searching for some way to more reliably correlate a precomb BSTriShape to the object it represents. To find the precomb nif in the first place, you have to get the RefID and then use FO4Edit to get its formID;

[REFR:00066BCA] (places BillboardWilsonAtomatoys01 [STAT:00178BC7] in GRUP Cell Temporary Children of AtomatoysFactoryExt04 [CELL:0000E2C6] (in Commonwealth "Commonwealth" [WRLD:0000003C] at 4,-22) in Precombined\0000E2C6_3BB2127F_OC.nif)

I am wondering... could any of the unknown ints in the BSPackedCombinedSharedGeomDataExtra be a FormID?  I tried converting the hexidecimal integers in the bit above to just Decimal to see if I could match up any unknown ints, but nothing.  What are these VF1 VF2 etc etc things?  Could they be some means to identify?

Link to comment
Share on other sites

VF1-8 are just copies of the vertex description (called vertexDesc in the engine) which is a 64-bit integer that holds various vertex properties.   This is split up into 8 bytes because it's easier for NifSkope to deal with and it doesn't have a 64-bit integer type anyway.

I already annotated what I believe are the identifying hashes, but I'm pretty sure they didn't match any known FormIDs.  I could be wrong about the alignment though and they might be there.  I don't think I directly compared the FormID of the ref or the STAT to their actual extradata in the NIF,  but I did search for FormIDs from the unknown bytes in the NIF. 

However I just looked at your 0000E2C6_3BB2127F_OC example and couldn't find the REFR or STAT FormIDs anywhere in that NIF at any alignment or endianness.

It could potentially be a hash of the EditorID,  BillboardWilsonAtomatoys01 which is either

bscrc32 1641902539
bscrc32_lower 1178041431

... but neither of those ints exist in the _OC NIF either. 

Link to comment
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
 Share

×
×
  • Create New...