QUOTE(Hrnchamd @ Sep 15 2008, 08:59 AM) [snapback]12839373[/snapback]
1. There's barely any space in the data segment to stuff new things in.
Were you able to figure out how it decides what bone names are okay and which to ignore? I was wondering if it was possible to make it accept any bone name rather than adding to the list of acceptable ones, but maybe there's a special structure that controls NPC animations which only has so many slots? Is that what you're saying? It's just interesting that creature characters like Almalexia can have as many bones as they want but NPCs can only use certain bone names.
QUOTE(Hrnchamd @ Sep 15 2008, 08:59 AM) [snapback]12839373[/snapback]
2. Possibly fixable.
3. Could you give me a few sample console commands to try out.
It would be really really awesome if either of these can be fixed!
Here's an excerpt from the "Morrowind Scripting for Dummies" guide which talks about the animation scripting functions and the problems with trying to use them on the PC:
[codebox]Not all models have animation groups, but the different banners (under activators) are good examples to see what is
meant (see example below). Examples for GroupName are: idle, idle2, idle3, walk, etc. These functions do not work on the player character.
PlayGroup, GroupName, [Flags]
PlayGroup, walk, 1 Plays the animation group defined by GroupName. Optional flags can be used to start the group in different ways (see below).
LoopGroup, GroupName, Number_enum, [Flags]
lays the animation group defined by GroupName. The animation will be looped the number of times specified, and then return to the Idle animation.
Optional flags can be used to start the group in different ways (see below).
SkipAnim
Causes the current animation to not be played for this frame.
Flags:
0 = Normal The current animation will finish its full cycle, and the new animation will start from its beginning.
1 = Immediate Start The current animation will stop regardless of the frame it is on, and the new animation will start from its beginning.
2 = Immediate Loop The current animation will stop regardless of the frame it is on, and the new animation will start at the beginning of its loop cycle.
Note: PlayGroup does not work on the PC. With Bloodmoon installed (not necessarily Bloodmoon.esm selected) some of
NPC animations are crosswired. When called from console, they may look correct, but if you insert NPC->PlayGroup,
group, 1 into the script, you may be unpleasantly surprised to see a different animation than you expected (Forum info / Kir).
You may have to experiment to find the correct animation (Check out the info in the section on AIWander for a list of NPC
dle movements; Kir is working on a tool called "NPC Animation Explorer", keep an eye out for it!).[/codebox]
QUOTE(Hrnchamd @ Sep 15 2008, 08:59 AM) [snapback]12839373[/snapback]
Hmm.. right now I can't see where the final alpha blending ops (src/dest) being set up, and what's up with the scale by 50 thing?
I just copied the commands that I saw in PIX exactly so it uses texture stages rather than alpha blending. The scale was there just so I could see it so long as I didn't jump too high... I think the basic problem is that a different projection is probably used for the sky than is used for everything else but I didn't spend too much time looking into it.
QUOTE(Hrnchamd @ Sep 16 2008, 03:51 PM) [snapback]12846399[/snapback]
Been discussed before, it is a classic problem in computer graphics. There is no order which you can draw the whole objects to make it look right, one of them needs to be cut in half. Requires a full engine rewrite to solve it properly.
Well, not necessarily a full rewrite... basically the problem is that all the alpha objects have to be drawn twice. I'm not sure exactly how you're doing what you're doing, but if you could somehow find the command that causes the alpha scene to draw and rig it so you could call it again at a later time then you'd be set. The order of events would have to be something like this:
1. Set user clip plane which causes everything ABOVE the water to be invisible.
2. Draw all the alpha objects, pixels above the water will be clipped away.
3. Disable the user clip plane.
4. Draw the water
5. Set a user clip plane which causes everything BELOW the water to be invisible.
6. Draw all the alpha objects again, pixels below the water will be clipped away.
7. Disable the user clip plane.
I'm not sure if that's possible or not, but that should solve the issue if it is. Ideally the engine would draw only the objects that were possibly visible in steps 2 and 6, but it should look the same to just draw all of them even if it's sub-optimal. For MGE to do that I'd have to implement a system to capture all the states of all the objects rendered so that I could re-render them later, but if there's a way to just invoke the drawing of that alpha scene twice, that'd be awesome.
EDIT: Oh, and do you have any idea if it would be possible to add Morrowind's wind speed to the memory map in MGE so I could make the grass react to it? Thanks =)