Need help with Horses, Trolls and Land Dreaughs for SDR

Post » Sat Nov 22, 2014 4:13 am

Hello all geniuses that work with meshes.

In the pursuit of overhauling SDR, I have stumbled across a bug that has been a part of the Oblivion game since day 1 apparently.

It has to do with light levels. There is a function called "GetActorLightAmount" which determines how much light is hitting an actor. It ranges from 0.00 to 100.00. For sneaking around, that amount becomes really important, especially if the actor is in complete darkness, because if so, they cannot be seen.

So the bug I found is a doozy. For reasons I don't entirely understand, Horses, Trolls, and Land Dreaughs always register 0.00 light. I checked all of the other main creatures in the base Oblivion game, and these are the only three.

I ran a bunch of experiments, mixing meshes with skeleton.nifs and various textures (which was super weird looking btw). As far as I can tell, the root cause is the skeleton.nif and how it interacts with the outer layers/textures.

The results were as follows:

- Swapping directories made no difference.

- It didn't seem to matter what the texture was, the effect applied to all horses, all trolls and all Land Dreaughs.

- There has to be at least one visible mesh/texture in order for the light to register. So although a sheep normally registers light, if you remove all the meshes attached to the skeleton, it can no longer be selected or pick up any light. But if you just add one single horn that is floating mysteriously, the game registers the sheep and the amount of light is detected.

- If I put horse textures on a sheep skeleton and visa versa, it was really whacky looking, and pretty much impossible to click on or learn anything new.

So my guess is that the issue is the base skeleton.nif and how it interacts with the meshes/textures.

This is as far as I have gotten. I've tried using blender and nifscope to piece together what is going on and comparing sheep skeletons to horse skeletons, but I have no idea what I am looking at or what to look for.

Are there any experts that are willing to take a look at this and see if they can figure out what is going on?

User avatar
Louise
 
Posts: 3407
Joined: Wed Nov 01, 2006 1:06 pm

Post » Sat Nov 22, 2014 5:50 am

Can any of those three actually sneak?

User avatar
Tanika O'Connell
 
Posts: 3412
Joined: Fri Jan 26, 2007 1:34 am

Post » Sat Nov 22, 2014 5:03 am


It has nothing to do with being able to sneak. It has to do with them being able to be detected.

Let's say that you and some followers (companions, guards, etc.) stumble across a whole pack of trolls. It's entirely possible that all of the companions will just stand around and get tromped by the trolls because as far as the game engine is concerned, the trolls are in complete darkness, and therefore cannot be seen. That only leaves sound and skill, which might not necessarily be enough for your team to see them.

Basically, it becomes a mess, because about 1/3 of the factor for detecting something goes out the window.

I've actually run into the troll situation before. At the time I chalked it up as some weird AI behavior, but now I'm fairly certain it is this bug.

I have a work around, but it's very weak, and I'd rather have it fixed properly.
User avatar
Jesus Lopez
 
Posts: 3508
Joined: Thu Aug 16, 2007 10:16 pm

Post » Sat Nov 22, 2014 3:11 am

I think that this will be something that you'll have to hack together in SDR, unfortunately. Even if the skeletons could be fixed, there are a lot of mods which change those creatures, so even if you fix the skeletons, there's a good chance your changes will be undone.

Instead, can you manually set the amount of light falling on these creatures?

User avatar
candice keenan
 
Posts: 3510
Joined: Tue Dec 05, 2006 10:43 pm

Post » Sat Nov 22, 2014 7:43 am

I know folks change the textures and the outer meshes, but I don't know of any that actually change the skeleton.nif itself for those specific creatures. Even Alien Slof didn't change the skeleton.

As I mentioned before, I do have a workaround, but it is very unsatisfactory. And the only more accurate method I came up with is even more so.
User avatar
Jaki Birch
 
Posts: 3379
Joined: Fri Jan 26, 2007 3:16 am

Post » Sat Nov 22, 2014 8:09 am

It could be the body or head mesh but the skeleton seems most likely. Maybe the camera or whatever accounts for their FOV. I looked at them but nothing jumped out as different.

If you can figure out what GetActorLightAmount actually looks at, I might be able to fix them. You could include the fixed files in SDR with a warning to watch out for mods overwriting them.
User avatar
Kevin S
 
Posts: 3457
Joined: Sat Aug 11, 2007 12:50 pm

Post » Sat Nov 22, 2014 3:23 am

Figuring out what GetActorLightingAmount is looking at is the problem.

From my messing around, I'll give you some examples:

I've looked at the .dds side of things, and swapped out horse textures for sheep textures, but there was no change in the result. It didn't matter what texture I used for the horse, it always registered as 0. And it didn't matter what texture I used for the sheep, it always registered some sort of light level. So I think that the .dds texture files can be safely eliminated.

The next thing I did was experimenting with the actual .nif model parts.

First I played with the sheep.

The sheep has 5 .nifs in its model list that are hooked onto the skeleton. As long as at least one of those nifs is active, the light is picked up and passed on to the game engine. In the actual game itself, I can click on the model (lets say the horns) and it registers that I have selected the sheep and my debugging returns the light level of the sheep.

Then I played with the horse.

It didn't matter which combination of .nifs I activated or deactivated, the horse always registered 0.00

I also installed slofs horses to see if that would make a difference, because she had her own .nifs that she had custom made. All horses always registered 0.00.

I even tried swapping folder names, wondering if that had something to do with it. It didn't.

So the only thing that was left that was in common with all scenarios was the skeleton.nif.

The next logical experiment was to try and attach sheep .nif model parts onto a horse and visa versa. Needless to say, that was a COMPLETE disaster. That sort of thing just doesn't really work. I wasn't really expecting it to, but I figured I might as well try. Because the visual result was so whacky, it was hard to judge the results, but I think they were ultimately the same as before. Horses were always at 0.00 light levels. Sheep were not.

So there has to be SOMETHING about the skeleton .nif and how it interacts with the model.nifs and or .dds files that passes the light information back to the game engine. I feel like there is probably some magic switch that needs to be flipped.

I tried doing side by side comparisons of the sheep skeleton.nif along with the horse skeleton.nif. And I even found references for alpha values in the help table on the left. But in all honesty, I couldn't piece out what any of it meant. It's way beyond my skill set. I was also getting burned out by the whole thing (I spent many many hours trying to figure it out) and figured it was best just to put in the workaround for now and try to come back to it later.

I don't know if that's helpful or sheds any light on the problem.

User avatar
Elisha KIng
 
Posts: 3285
Joined: Sat Aug 18, 2007 12:18 am

Post » Sat Nov 22, 2014 4:28 am

Does sound like the skeleton.nif one of the settings, bone families/order, or the boundary boxes is probably borked. I think it has to do with those particular skeletons having an node that doesn't follow the order of the rest of the things. I have no idea on the real terminology (just a self-taught rigger) just pop the nif open in nifscope and you'll see a node all by itself not ranked with the others in those skeletons whereas most skeletons don't have that.

See something like:

BBX

BSX

->Bip01

extranode with bad priority/ordering

User avatar
JERMAINE VIDAURRI
 
Posts: 3382
Joined: Tue Dec 04, 2007 9:06 am


Return to IV - Oblivion