OpenMW and MGSO incompatibility?

Support for running, installing or compiling OpenMW

Before you submit a bug report for the first time, please read: Bug reporting guidelines
tvenissat
Posts: 7
Joined: 30 Dec 2014, 08:16

OpenMW and MGSO incompatibility?

Post by tvenissat »

I am using the Windows 7 64-bit OS. I installed the modpack "Morrowind Overhaul - Sounds And Graphics," over a clean Morrowind installation. It worked correctly (no graphical issues of any sort) when using the vanilla Morrowind engine. I then installed OpenMW 0.37.0 (Ace's latest nightly build) and used the Installation Wizard to import the morrowind.ini and set the path of OpenMW's Data Files folder to the folder with MGSO installed. When using OpenMW engine, pretty much all of MGSO still works (except the MGE options of course) but there are missing textures. When I use the command "coc toddtest" to get access to the testing room, the lockpicks out on display are presented as yellow exclamation points. This is also the case for other items in the game such as some Bloodmoon weapons. This also occurs in OpenMW 0.36.0 except that instead of yellow exclamation points, the textures are invisible. How do I go about resolving this issue? Any help would be appreciated. Thank you.
Attachments
Loaded Plugins.txt
(2.66 KiB) Downloaded 183 times
User avatar
sjek
Posts: 442
Joined: 22 Nov 2014, 10:51

Re: OpenMW and MGSO incompatibility?

Post by sjek »

basically the model is needed. can you go to game and in console select the item to get the id or from openmw.log possibly the texture not found part. knowing what is the picks id would be helpfull to find the specific mesh and check the textures (or model for that matter)

2 gt... takes a while

edit:
Failed to load 'meshes\SirLuthor\SL_Pick03.nif': NIFFile Error: Record number 5 out of 14 is blank.
File: meshes/sirluthor/sl_pick03.nif, using marker_error.nif instead
Failed to load 'meshes\SirLuthor\SL_Probe03.nif': NIFFile Error: Record number 5 out of 14 is blank.
File: meshes/sirluthor/sl_probe03.nif, using marker_error.nif instead

are you sure it works in vanilla and not reverting to morrowind.bsa vanilla version as there's no blocks whatsoever in nifskope and header is oblivion's. and well..... those settings come up even with no file loaded. i think there should be a patch (one of severals) which fix this

with quick look not in betsoft forums
one possibility could be that extracting as 7-zip corrupts those files

Image
tvenissat
Posts: 7
Joined: 30 Dec 2014, 08:16

Re: OpenMW and MGSO incompatibility?

Post by tvenissat »

"can you go to game and in console select the item to get the id or from openmw.log possibly the texture not found part."

Yeah. I'm attaching the screenshots and the openmw.log file. I tried to upload the pictures when I made this topic but their resolution was to high.

"2 gt... takes a while"

What?

"are you sure it works in vanilla and not reverting to morrowind.bsa vanilla version"

What do you mean? It works perfectly using the original Morrowind engine. I am using the same exact Data Files folder for both engines.

"one possibility could be that extracting as 7-zip corrupts those files"

But if it works correctly in the original Morrowind engine then the files cannot be corrupted, right?

Thanks for replying.
Attachments
openmw.log
(19.27 KiB) Downloaded 186 times
OpenMW Engine.png
Morrowind Engine.png
User avatar
sjek
Posts: 442
Joined: 22 Nov 2014, 10:51

Re: OpenMW and MGSO incompatibility?

Post by sjek »

with nif tester there's only few ones, all pick and probes

these works in 0.36.1

Code: Select all

ERROR, an exception has occurred:  BSA Error: File too small to be a valid BSA archive
Archive: ../../../../morrowind/MGSOFlora Glow.bsa
ERROR, an exception has occurred:   NIFFile Error: Record number 5 out of 14 is blank.
File: ../../../../morrowind/MGSOMeshes/M/Pick_Apprentice_01.nif
ERROR, an exception has occurred:   NIFFile Error: Record number 5 out of 14 is blank.
File: ../../../../morrowind/MGSOMeshes/M/Pick_Grandmaster_01.nif
ERROR, an exception has occurred:   NIFFile Error: Record number 5 out of 14 is blank.
File: ../../../../morrowind/MGSOMeshes/M/Pick_Journeyman_01.nif
ERROR, an exception has occurred:   NIFFile Error: Record number 5 out of 14 is blank.
File: ../../../../morrowind/MGSOMeshes/M/Pick_Master_01.nif
ERROR, an exception has occurred:   NIFFile Error: Record number 5 out of 14 is blank.
File: ../../../../morrowind/MGSOMeshes/M/Pick_SecretMaster_01.nif
ERROR, an exception has occurred:   NIFFile Error: Record number 5 out of 14 is blank.
File: ../../../../morrowind/MGSOMeshes/M/Probe_Apprentice_01.nif
ERROR, an exception has occurred:   NIFFile Error: Record number 5 out of 14 is blank.
File: ../../../../morrowind/MGSOMeshes/M/Probe_Grandmaster_01.nif
ERROR, an exception has occurred:   NIFFile Error: Record number 5 out of 14 is blank.
File: ../../../../morrowind/MGSOMeshes/M/Probe_Journeyman_01.nif
ERROR, an exception has occurred:   NIFFile Error: Record number 5 out of 14 is blank.
File: ../../../../morrowind/MGSOMeshes/M/Probe_Master_01.nif
ERROR, an exception has occurred:   NIFFile Error: Record number 5 out of 14 is blank.
File: ../../../../morrowind/MGSOMeshes/M/Probe_SecretMaster_01.nif
ERROR, an exception has occurred:   NIFFile Error: Record number 5 out of 14 is blank.
File: ../../../../morrowind/MGSOMeshes/M/probe_apprentice_02.nif
ERROR, an exception has occurred:   NIFFile Error: Record number 5 out of 14 is blank.
File: ../../../../morrowind/MGSOMeshes/SirLuthor/1234SL_Pick03.nif
ERROR, an exception has occurred:   NIFFile Error: Record number 5 out of 14 is blank.
File: ../../../../morrowind/MGSOMeshes/SirLuthor/SL_Pick01.nif
ERROR, an exception has occurred:   NIFFile Error: Record number 5 out of 14 is blank.
File: ../../../../morrowind/MGSOMeshes/SirLuthor/SL_Pick02.nif
ERROR, an exception has occurred:   NIFFile Error: Record number 5 out of 14 is blank.
File: ../../../../morrowind/MGSOMeshes/SirLuthor/SL_Pick03.nif
ERROR, an exception has occurred:   NIFFile Error: Record number 5 out of 14 is blank.
File: ../../../../morrowind/MGSOMeshes/SirLuthor/SL_Pick04.nif
ERROR, an exception has occurred:   NIFFile Error: Record number 5 out of 15 is blank.
File: ../../../../morrowind/MGSOMeshes/SirLuthor/SL_Probe01.nif
ERROR, an exception has occurred:   NIFFile Error: Record number 5 out of 14 is blank.
File: ../../../../morrowind/MGSOMeshes/SirLuthor/SL_Probe02.nif
ERROR, an exception has occurred:   NIFFile Error: Record number 5 out of 14 is blank.
File: ../../../../morrowind/MGSOMeshes/SirLuthor/SL_Probe03.nif
ERROR, an exception has occurred:   NIFFile Error: Record number 5 out of 14 is blank.
File: ../../../../morrowind/MGSOMeshes/SirLuthor/SL_Probe04.nif
their resolution was to high
i'm using flickr as it has bbcode sharing option with sizes and can edit the code only show the image file from their server
What?
long weekend
But if it works correctly in the original Morrowind engine then the files cannot be corrupted, right?
reinstalled nifskope and was opening from wrong location as needs to inside wine

from that i don't know where the problem could be.
now i quess the extradata is skipped to get the 14 record and does the 5 mean that it's fifth or five in total?
https://github.com/OpenMW/openmw/blob/a ... e.cpp#L171

Code: Select all

 for(size_t i = 0;i < recNum;i++)
{
Record *r = NULL;
std::string rec = nif.getString();
if(rec.empty())
{
std::stringstream error;
error << "Record number " << i << " out of " << recNum << " is blank.";
fail(error.str());
}
have tried change the name and texture portions
Image

before going into deeper in c++ operators and hunting string includes, where that nif.getstring() could be referencing? ............. c++ functions -->
Attachments
1234SL_Pick03.nif.txt
(14.46 KiB) Downloaded 183 times
tvenissat
Posts: 7
Joined: 30 Dec 2014, 08:16

Re: OpenMW and MGSO incompatibility?

Post by tvenissat »

I have no idea what any of that means. I am a novice programmer with absolutely no experience as a modder. I have finals this week and next week, so I will not have much time to investigate this further until they are over. Thank you for your help.
User avatar
sjek
Posts: 442
Joined: 22 Nov 2014, 10:51

Re: OpenMW and MGSO incompatibility?

Post by sjek »

:D
trying just to solve or if someone would have quick insight. have read the morrowind scripts for a while and this just can't really be bigger state reference mess on single issues what they are althought components maps looks crazy.

good luck with the exams and welcome to try to taggle "practical" applications : )
lot's of code wiki tackoverflow searching.

life philosophy: don't know nothing what i'm really doing but trying to xD
tvenissat
Posts: 7
Joined: 30 Dec 2014, 08:16

Re: OpenMW and MGSO incompatibility?

Post by tvenissat »

Thanks! I will definitely search for a solution sometime next week.
pollyzoid
Posts: 1
Joined: 03 Dec 2015, 23:05

Re: OpenMW and MGSO incompatibility?

Post by pollyzoid »

I did some digging around since I bumped into this issue as well (with SL_Pick01.nif though). It's a bit limited, since my dev environment isn't completely set up and I only have Boost installed (took a bit of work to get the Nif:: stuff working without OSG :D)
Also take this with a grain of salt, it's my first time poking OpenMW's codebase and reading about Nif meshes.

The problem stems from the model's NIF record idx 4 (NiKeyframeData). It fails to parse that properly, which corrupts the next record's header (#5, seen in logs), which should be NiTriShape.

NifSkope details: https://i.imgur.com/L7gXIgr.png

Relevant methods:
https://github.com/OpenMW/openmw/blob/m ... a.cpp#L244
https://github.com/OpenMW/openmw/blob/m ... y.hpp#L133

Code: Select all

// data.cpp:244
void NiKeyframeData::read(NIFStream *nif)
{
    mRotations.reset(new QuaternionKeyMap);
    mRotations->read(nif);
    if(mRotations->mInterpolationType == Vector3KeyMap::sXYZInterpolation)
    {
        //Chomp unused float
        nif->getFloat();
        mXRotations.reset(new FloatKeyMap);
        mYRotations.reset(new FloatKeyMap);
        mZRotations.reset(new FloatKeyMap);
        mXRotations->read(nif, true);
        mYRotations->read(nif, true);
        mZRotations->read(nif, true);
    }
    mTranslations.reset(new Vector3KeyMap);
    mTranslations->read(nif);
    mScales.reset(new FloatKeyMap);
    mScales->read(nif);
}

// nifkey.hpp:133
template <typename U>
static void readQuadratic(NIFStream &nif, KeyT<U> &key)
{
    readValue(nif, key);
    /*key.mForwardValue = */(nif.*getValue)();
    /*key.mBackwardValue = */(nif.*getValue)();
}
Comparing the code's expected values to the ones NifSkope gives, readQuadratic seems to read two quads too much. For Translation keys (Vector3Key) it works properly (Value, Forward, Backward), but Quaternion Keys with quadratic interpolation breaks completely.
Removing the two extra getValues would fix QuatKeys, but break Vector3Keys.

I'm not sure why only MGSO models seem to break, unless vanilla models don't use QuatKeys with quadratic interpolation at all (? I haven't really checked). If that's the case, probably worth creating an issue for.

e: If nobody touches this for a few days, I might give it a shot when I have my dev stuff ready.
User avatar
scrawl
Posts: 2152
Joined: 18 Feb 2012, 11:51

Re: OpenMW and MGSO incompatibility?

Post by scrawl »

Should be fixed in commit 462ef617ce2b6ced2924773abdc225881f84a23d.
darkstar
Posts: 1
Joined: 27 Dec 2015, 23:35

Re: OpenMW and MGSO incompatibility?

Post by darkstar »

I have this exact same problem. The lockpick on the table at the beginning of the game is a big yellow blob. I don't understand most of the programmer speak in the previous posts above. Is there an easy fix for this? Like a file I can replace or line I can edit to make it look like a lockpick again? Any help would be appreciated!
Locked