Possible model interpolation issue

Sat Apr 13, 2019 7:44 am

Not sure if a bug, or just a quirk of interpolation.

An actor with the following DECORATE code shows a problem when it switches between modesl, but only in one of the instances:
Code:
ACTOR EDTest
{
  radius 40
  height 100
  mass 1000
  +SOLID
  states
  {
  Spawn:
    //first model
    SARG ABCD 10
    //second model
    CPOS A 10
    CPOS ABCC 10
    CPOS DEEEF 10
    CPOS G 10
    CPOS HIIIJ 10
    CPOS CCBA 10
    Goto Spawn
    }
}


The SARG frames are attached to one model, and the CPOS frames are attached to another. In game, when the actor goes from SARG to CPOS, the transition happens as expected.

However, at the end of the sequence, wher the actor returns to the top of the spawn sequence and goes from CPOS to SARG, the model vanishes for a moment.

The problem can be worked around by adding
Code:
CPOS A 0

to the end of the CPOS sequence just before the "goto spawn" line.

Adding nointerpolation to the MODELDEF also fixes the issue but, obviously, makes the animation very jerky.

Like I said, it may just be a quirk of interpolation but it just strikes me as odd that it goes from model 1 to model 2 seamlessly, but can't do the reverse when the spawn sequence resets.

Try the following file. Just load it up and watch. The ED209 on the left blinks out briefly when it returns to its spawn stance, the one on the right does not (because it contains the fix mentioned above).

Ignore the little "wiggle" the model gives just as it starts to stand up, that's just a problem with the model and how I've set up this example. The momentary invisibility is what this is about.

http://www.aspectsweb.co.uk/enjay/doom/ ... EDTest.pk3

Re: Possible model interpolation issue

Fri Apr 19, 2019 12:53 am

Sadly that entire model interpolation code was rather naively written. In this case it has nothing to interpolate to and just fails to do something useful. There is absolutely no consideration for a model switch in an animation. For now adding such empty helper states may be the only solution. this is not something I want to change so shortly before a new release.