Menu

#156 Incorrect animation data being loaded for some non-level textures

None
closed-fixed
nobody
None
5
2015-04-28
2015-04-28
Sirius
No

Have been trying to fix up the animation handling in the POG editor but there are certain textures that crash when selected. This appears to be due to particular frames (that are not the base frame) having frame counts set. Still trying to figure out why, but it appears to have something to do with the way they are being loaded - suspect ECLIPs, but not sure.

From getting trace info for the problematic textures:
nIndex: 358 szName: 0x112054fd "exp15" nFrame: 6 '\x6' nFrameCount: 8 '\b'
nIndex: 366 szName: 0x1120573d "exp15" nFrame: 14 '\xe' nFrameCount: 6 '\x6'
nIndex: 372 szName: 0x112058ed "spark05" nFrame: 3 '\x3' nFrameCount: 7 '\a'
nIndex: 380 szName: 0x11205b2d "mtrl01" nFrame: 6 '\x6' nFrameCount: 6 '\x6'
nIndex: 386 szName: 0x11205cdd "mtrl01" nFrame: 12 '\f' nFrameCount: 3 '\x3'
nIndex: 389 szName: 0x11205db5 "mtrl01" nFrame: 15 '\xf' nFrameCount: 3 '\x3'
nIndex: 399 szName: 0x11206085 "muzl05" nFrame: 1 '\x1' nFrameCount: 9 '\t'
nIndex: 408 szName: 0x1120630d "pwr01" nFrame: 4 '\x4' nFrameCount: 2 '\x2'
nIndex: 410 szName: 0x1120639d "pwr01" nFrame: 6 '\x6' nFrameCount: 7 '\a'
nIndex: 418 szName: 0x112065dd "pwr01" nFrame: 14 '\xe' nFrameCount: 5 '\x5'
nIndex: 423 szName: 0x11206745 "pwr02" nFrame: 4 '\x4' nFrameCount: 8 '\b'
nIndex: 431 szName: 0x11206985 "laser" nFrame: 4 '\x4' nFrameCount: 6 '\x6'
nIndex: 440 szName: 0x11206c0d "laser" nFrame: 13 '\r' nFrameCount: 11 '\v'
nIndex: 451 szName: 0x11206f25 "exp10" nFrame: 4 '\x4' nFrameCount: 12 '\f'
nIndex: 463 szName: 0x11207285 "key01" nFrame: 6 '\x6' nFrameCount: 14 '\xe'
nIndex: 477 szName: 0x11207675 "key02" nFrame: 5 '\x5' nFrameCount: 6 '\x6'
nIndex: 483 szName: 0x11207825 "key02" nFrame: 11 '\v' nFrameCount: 5 '\x5'
nIndex: 488 szName: 0x1120798d "key03" nFrame: 1 '\x1' nFrameCount: 12 '\f'
nIndex: 500 szName: 0x11207ced "key03" nFrame: 13 '\r' nFrameCount: 8 '\b'
nIndex: 508 szName: 0x11207f2d "spark03" nFrame: 1 '\x1' nFrameCount: 15 '\xf'
nIndex: 523 szName: 0x11208365 "hostage" nFrame: 6 '\x6' nFrameCount: 13 '\r'
nIndex: 536 szName: 0x1120870d "cmissil1" nFrame: 11 '\v' nFrameCount: 14 '\xe'
nIndex: 550 szName: 0x11208afd "cmissil2" nFrame: 10 '\n' nFrameCount: 6 '\x6'
nIndex: 556 szName: 0x11208cad "life01" nFrame: 1 '\x1' nFrameCount: 8 '\b'
nIndex: 564 szName: 0x11208eed "life01" nFrame: 9 '\t' nFrameCount: 8 '\b'
nIndex: 572 szName: 0x1120912d "vulcan" nFrame: 2 '\x2' nFrameCount: 7 '\a'
nIndex: 579 szName: 0x11209325 "vulcan" nFrame: 9 '\t' nFrameCount: 6 '\x6'
nIndex: 593 szName: 0x11209715 "spread" nFrame: 8 '\b' nFrameCount: 7 '\a'
nIndex: 608 szName: 0x11209b4d "plasma" nFrame: 8 '\b' nFrameCount: 7 '\a'
nIndex: 628 szName: 0x1120a0ed "fusion" nFrame: 13 '\r' nFrameCount: 7 '\a'
nIndex: 635 szName: 0x1120a2e5 "pbombs" nFrame: 5 '\x5' nFrameCount: 7 '\a'
nIndex: 642 szName: 0x1120a4dd "hmissil1" nFrame: 2 '\x2' nFrameCount: 7 '\a'
nIndex: 649 szName: 0x1120a6d5 "hmissil1" nFrame: 9 '\t' nFrameCount: 15 '\xf'
nIndex: 664 szName: 0x1120ab0d "hmissil2" nFrame: 9 '\t' nFrameCount: 8 '\b'
nIndex: 672 szName: 0x1120ad4d "smissile" nFrame: 2 '\x2' nFrameCount: 15 '\xf'
nIndex: 687 szName: 0x1120b185 "mmissile" nFrame: 2 '\x2' nFrameCount: 15 '\xf'
nIndex: 702 szName: 0x1120b5bd "vammo" nFrame: 2 '\x2' nFrameCount: 15 '\xf'
nIndex: 717 szName: 0x1120b9f5 "cloak" nFrame: 2 '\x2' nFrameCount: 8 '\b'
nIndex: 725 szName: 0x1120bc35 "cloak" nFrame: 10 '\n' nFrameCount: 6 '\x6'
nIndex: 738 szName: 0x1120bfdd "invuln" nFrame: 7 '\a' nFrameCount: 7 '\a'
nIndex: 745 szName: 0x1120c1d5 "invuln" nFrame: 14 '\xe' nFrameCount: 9 '\t'
nIndex: 754 szName: 0x1120c45d "quad" nFrame: 7 '\a' nFrameCount: 9 '\t'
nIndex: 763 szName: 0x1120c6e5 "pbomb" nFrame: 1 '\x1' nFrameCount: 9 '\t'
nIndex: 780 szName: 0x1120cbad "blob01" nFrame: 2 '\x2' nFrameCount: 10 '\n'
nIndex: 790 szName: 0x1120ce7d "exp17" nFrame: 2 '\x2' nFrameCount: 16 '\x10'
nIndex: 806 szName: 0x1120d2fd "exp03" nFrame: 1 '\x1' nFrameCount: 11 '\v'
nIndex: 817 szName: 0x1120d615 "exp19" nFrame: 7 '\a' nFrameCount: 10 '\n'
nIndex: 827 szName: 0x1120d8e5 "mtrl02" nFrame: 6 '\x6' nFrameCount: 11 '\v'
nIndex: 838 szName: 0x1120dbfd "mtrl03" nFrame: 5 '\x5' nFrameCount: 11 '\v'
nIndex: 849 szName: 0x1120df15 "exp21" nFrame: 7 '\a' nFrameCount: 9 '\t'
nIndex: 858 szName: 0x1120e19d "blob03" nFrame: 3 '\x3' nFrameCount: 5 '\x5'
nIndex: 863 szName: 0x1120e305 "exp22" nFrame: 3 '\x3' nFrameCount: 8 '\b'
nIndex: 871 szName: 0x1120e545 "sprdblb2" nFrame: 1 '\x1' nFrameCount: 15 '\xf'
nIndex: 886 szName: 0x1120e97d "gauss" nFrame: 10 '\n' nFrameCount: 15 '\xf'
nIndex: 901 szName: 0x1120edb5 "helix" nFrame: 9 '\t' nFrameCount: 9 '\t'

I have a feeling there might be unwanted side-effects from TextureManager.cpp lines 83/87 but don't understand what they are doing well enough to be sure:
aci.m_nTexture = fp.ReadInt16 (); // nChangingWallTexture
aci.m_nTexture = fp.ReadInt16 (); // nChangingObjectTexture

Will continue to investigate but this may take a while :)

Discussion

  • karx11erx

    karx11erx - 2015-04-28

    I wasn't aware of the POG editor intended for editing non geometry, non object textures too. The animation data for these textures probably doesn't get loaded (I excluded some textures because they collided with geo texture animations).

    nChangingWallTexture / nChangingObjectTexture are the base texture (1st frame) indices of geometry / object texture animations.

     
  • karx11erx

    karx11erx - 2015-04-28

    I have been looking into this. The problem seems to be that certain texture animations do not have regular animation info.

    To help with the entire issue, I have added following functions to the texture manager:

    CTextureManager::AnimationFrame (int nTexture)
    - return frame number of texture, -1 if not an animation frame

    CTextureManager::AnimationRoot (int nTexture)
    - true if texture is 1st frame of an animation, false otherwise

    CTextureManager::AnimationSubFrame (int nTexture)
    - false if texture is no or 1st frame of an animation, true otherwise

    These functions all check the animation info from the pig file. Apparently some textures have a frame count, but no animation info. For these, checking the texture name might work, simply omitting subsequent textures with the same name from the texture view and displaying these textures as frames when their root texture is selected. I will check this and make the required code changes if it works.

     

    Last edit: karx11erx 2015-04-28
  • karx11erx

    karx11erx - 2015-04-28

    Update:

    I have added functionality to add animation info for animations that do not (seem to) have one.

    I have also added more helper functions to CTextureManager to make animation info handling / checking easier.

    There is still some work to do, but animation handling in the pog dialog is starting to work now.

    I will also check D2X-XL regarding the animations that do not seem to have animation (clip) info.

     
  • karx11erx

    karx11erx - 2015-04-28
    • status: open --> closed-fixed
    • Group: -->
     
  • karx11erx

    karx11erx - 2015-04-28

    It turned out that not only was animation info missing (D2X-XL doesn't seem to handle explosion clips via effect clips either), there were other bugs that messed the pog tool up too (duplicate animation info because the animation info loader was called two times and didn't get reset in between).

    The pog tool now seems to behave quite nicely in terms of animation handling.

     

Log in to post a comment.