understanding model animation <solved>

Ask about editing graphics, sounds, models, music, etc here!
Shaders (GLSL) and SNDINFO questions also go here!

Moderators: GZDoom Developers, Raze Developers

Forum rules
Before asking on how to use a ZDoom feature, read the ZDoom wiki first. If you still don't understand how to use a feature, then ask here.
User avatar
CBM
Posts: 373
Joined: Wed Oct 09, 2019 3:39 am
Graphics Processor: nVidia with Vulkan support
Location: The Shores of Hell

understanding model animation <solved>

Post by CBM »

I have been trying to figure out how to use animations stored in MD2 models

so far, I have read a ton of info online but not gotten any wiser, the examples on the zdoom wiki does not seem to work

I really wanted to be able to use named animations

when I open an md2 model in "misfit" (an md2 model editor and converter), I can see most md2 models seem to use "frame animation" instead of "skeleton" animation... when I use the examples on the ZDoom wiki, then the engine complains that there are no skeleton animations

in misfit the animations all have names but are not nessecerily all the same length or in the same order

I found a mod that used md2 models with frame animations and got it to work somewhat with other models by editing the other models frame animations length and order to match the model from the mod, but I'd rather learn how it actually works

followup question, I found some nice free .OBJ models that I can convert to .MD2 using "misfit"... BUT... they have no animations... can I copy for example the frame animaitons from the md2 model used to represent a zombieman so that it also applies to the model I just converted from an .OBJ file?

it seems "misfit" will only import and export "skeleton" animations? and I am guessing a random .OBJ model does not have a "skeleton"?
Last edited by CBM on Wed Oct 23, 2019 8:53 am, edited 2 times in total.
User avatar
Cherno
Posts: 1309
Joined: Tue Dec 06, 2016 11:25 am

Re: understanding model animation

Post by Cherno »

OBJ models have no animation data.
Use Noesis' model viewer for all your model viewing and exporting needs.
Try to use md3 models if you can instead of md2s.
User avatar
Enjay
 
 
Posts: 26517
Joined: Tue Jul 15, 2003 4:58 pm
Location: Scotland
Contact:

Re: understanding model animation

Post by Enjay »

CBM wrote:"misfit"
This is the second time I've made this recommendation recently. :)

Maverick Model 3D is a more up to date (and still occasionally maintained) version of Misfit. It contains a number of bug fixes.

https://clover.moe/mm3d/

So, if you are still using Misfit, I recommend trying Maverick instead.
User avatar
CBM
Posts: 373
Joined: Wed Oct 09, 2019 3:39 am
Graphics Processor: nVidia with Vulkan support
Location: The Shores of Hell

Re: understanding model animation

Post by CBM »

Enjay wrote:
CBM wrote:"misfit"
This is the second time I've made this recommendation recently. :)

Maverick Model 3D is a more up to date (and still occasionally maintained) version of Misfit. It contains a number of bug fixes.

https://clover.moe/mm3d/

So, if you are still using Misfit, I recommend trying Maverick instead.
thanks :)

maverick is very usefull, lots of sites have tons of free obj models
User avatar
CBM
Posts: 373
Joined: Wed Oct 09, 2019 3:39 am
Graphics Processor: nVidia with Vulkan support
Location: The Shores of Hell

Re: understanding model animation

Post by CBM »

Cherno wrote:OBJ models have no animation data.
Use Noesis' model viewer for all your model viewing and exporting needs.
Try to use md3 models if you can instead of md2s.
noesis model viewer seems nice

sadly the selection of md2 and md3 models is very scarce

holy S... noesis can convert fbx models and perhaps other models with animations in to md2 or md3 format, except mdx it seems

any tool that will convert mdl or mdx to md2 or md3?
User avatar
Ozymandias81
Posts: 2062
Joined: Thu Jul 04, 2013 8:01 am
Graphics Processor: nVidia with Vulkan support
Location: Mount Olympus, Mars
Contact:

Re: understanding model animation

Post by Ozymandias81 »

In order to make gzdoom use md2 animations, you must use Frame and be sure that the md2 animation group is called Animframes, at least I always did like this.
Then you must know each frame name and what they does, and to know it if you can't get it with Misfit/Maverick, use then an hexadecimal editor like HxD and scrolls until you find such names on the right column

For mdl/mdx converter, check for Milkshape3d and read this link , I am from phone so can't be more fully specific otherwise I would have explan this in a better way.
User avatar
Cherno
Posts: 1309
Joined: Tue Dec 06, 2016 11:25 am

Re: understanding model animation

Post by Cherno »

When using Noesis to export to MD3, use the command line

-rotate 90 90 180

if your model is pointing toward +z (in 3D Studio Max at least). Depending on the modeling software, you might have to play around with these values.

There is a MDX model viewer for Kingpin models that exports to MD2. It's called MDX or Kingpin Model Viewer, you should be able to find it via Google.
User avatar
CBM
Posts: 373
Joined: Wed Oct 09, 2019 3:39 am
Graphics Processor: nVidia with Vulkan support
Location: The Shores of Hell

Re: understanding model animation

Post by CBM »

thanks for the replies, and I now have a fine selection of tools

I also found a very large selection of quake 2 player models that can satisfy my animation needs for now

---------------

update 21 okt 2019

I read all the comments and I am trying to understand them... so this leads me to this:

I am experimenting with the sydney quake 2 model and trying to writeup a valid modeldef for her model since most quake 2 player models follows her pattern

what I believe so far is that I need to define each and every animation frame of every animation set that I wish to use... so for example...

if I wanted to define her idle and walking animations I might do this... ??

Code: Select all


model sydney
{

path, model, skin etc goes here...

//idle - lets just say she has 3 idle frames to make it easy 
SDNI A 1 // idle animation frame 1 ?
SDNI B 2 // 2
SDNI C 3 // 3

//walk - lets just say she has 3 walk frames to make it easy 
SDNW A 4 // walk anim frame 1?
SDNW B 5  // 2
SDNW C 6 // 3

// 6 frames in total - 3 from idle and 3 from walk ?

}

or is that completely wrong ?
Guest

Re: understanding model animation

Post by Guest »

it seems like it is very wrong.. this is my modeldef

[code]
Model sydney
{
Path "Models\monsters\sydney"
Skin 0 "sydney.png"
Model 0 "tris.md2"
Scale 1.5 1.5 1.5

INTERPOLATEDOUBLEDFRAMES

//spawn - quake2 spawn sets a and b (S)
FrameIndex Q2SA A 0 1
FrameIndex Q2SA b 0 2
FrameIndex Q2SA c 0 3
FrameIndex Q2SA d 0 4
FrameIndex Q2SA e 0 5
FrameIndex Q2SA f 0 6
FrameIndex Q2SA g 0 7
FrameIndex Q2SA h 0 8
FrameIndex Q2SA i 0 9
FrameIndex Q2SA j 0 10
FrameIndex Q2SA k 0 11
FrameIndex Q2SA l 0 12
FrameIndex Q2SA m 0 13
FrameIndex Q2SA n 0 14
FrameIndex Q2SA o 0 15
FrameIndex Q2SA p 0 16
FrameIndex Q2SA q 0 17
FrameIndex Q2SA r 0 18
FrameIndex Q2SA s 0 19
FrameIndex Q2SA t 0 20
FrameIndex Q2SA u 0 21
FrameIndex Q2SA v 0 22
FrameIndex Q2SA w 0 23
FrameIndex Q2SA x 0 24
FrameIndex Q2SA y 0 25
FrameIndex Q2SA z 0 26
FrameIndex Q2SB a 0 27
FrameIndex Q2Sb b 0 28
FrameIndex Q2Sb c 0 29
FrameIndex Q2Sb d 0 30
FrameIndex Q2Sb e 0 31
FrameIndex Q2Sb f 0 32
FrameIndex Q2Sb g 0 33
FrameIndex Q2Sb h 0 34
FrameIndex Q2Sb i 0 35
FrameIndex Q2Sb j 0 36
FrameIndex Q2Sb k 0 37
FrameIndex Q2Sb l 0 38
FrameIndex Q2Sb m 0 39
FrameIndex Q2Sb n 0 40

//run - quake 2 run set a (R)
FrameIndex Q2rA A 0 41
FrameIndex Q2rA b 0 42
FrameIndex Q2rA c 0 43
FrameIndex Q2rA d 0 44
FrameIndex Q2rA e 0 45
FrameIndex Q2rA f 0 46

//attack - quake 2 attack set a (A)
FrameIndex Q2aA A 0 47
FrameIndex Q2aA b 0 48
FrameIndex Q2aA c 0 49
FrameIndex Q2aA d 0 50
FrameIndex Q2aA e 0 51
FrameIndex Q2aA f 0 52
FrameIndex Q2aA g 0 53
FrameIndex Q2aA h 0 54

//pain - quake 2 pain set a (P)
FrameIndex Q2pA A 0 55
FrameIndex Q2pA b 0 56
FrameIndex Q2pA c 0 57
FrameIndex Q2pA d 0 58
FrameIndex Q2pA e 0 59
FrameIndex Q2pA f 0 60
FrameIndex Q2pA g 0 61
FrameIndex QppA h 0 62 //unknown sprite? - only 61 sprites????
FrameIndex QppA i 0 63
FrameIndex Q2pA j 0 64
FrameIndex Q2pA k 0 65
FrameIndex Q2pA l 0 66

//jump - quake 2 jump set a (J)
FrameIndex Q2jA A 0 67
FrameIndex Q2jA b 0 68
FrameIndex Q2jA c 0 69
FrameIndex Q2jA d 0 70
FrameIndex Q2jA e 0 71
FrameIndex Q2jA f 0 72

//flip - quake 2 flip set a (F)
FrameIndex Q2fA A 0 73
FrameIndex Q2fA b 0 74
FrameIndex Q2fA c 0 75
FrameIndex Q2fA d 0 76
FrameIndex Q2fA e 0 77
FrameIndex Q2fA f 0 78
FrameIndex Q2fA g 0 79
FrameIndex QpfA h 0 80
FrameIndex QpfA i 0 81
FrameIndex Q2fA j 0 82
FrameIndex Q2fA k 0 83
FrameIndex Q2fA l 0 84

//salute - quake 2 salute (SL)
FrameIndex Q2sl A 0 85
FrameIndex Q2sl b 0 86
FrameIndex Q2sl c 0 87
FrameIndex Q2sl d 0 88
FrameIndex Q2sl e 0 89
FrameIndex Q2sl f 0 90
FrameIndex Q2sl g 0 91
FrameIndex Qpsl h 0 92
FrameIndex Qpsl i 0 93
FrameIndex Q2sl j 0 94
FrameIndex Q2sl k 0 95

//taunt - quake 2 taunt set a (T)
FrameIndex Q2tA A 0 96
FrameIndex Q2tA b 0 97
FrameIndex Q2tA c 0 98
FrameIndex Q2tA d 0 99
FrameIndex Q2tA e 0 100
FrameIndex Q2tA f 0 101
FrameIndex Q2tA g 0 102
FrameIndex Q2tA h 0 103
FrameIndex Q2tA i 0 104
FrameIndex Q2tA j 0 105
FrameIndex Q2tA k 0 106
FrameIndex Q2tA l 0 107
FrameIndex Q2tA m 0 108
FrameIndex Q2tA n 0 109
FrameIndex Q2tA o 0 110
FrameIndex Q2tA p 0 111
FrameIndex Q2tA q 0 112

//wave - quake 2 wave (wv)
FrameIndex Q2wv A 0 113
FrameIndex Q2wv b 0 114
FrameIndex Q2wv c 0 115
FrameIndex Q2wv d 0 116
FrameIndex Q2wv e 0 117
FrameIndex Q2wv f 0 118
FrameIndex Q2wv g 0 119
FrameIndex Q2wv h 0 120
FrameIndex Q2wv i 0 121
FrameIndex Q2wv j 0 122
FrameIndex Q2wv k 0 123
FrameIndex Q2wv l 0 124
FrameIndex Q2wv m 0 125
FrameIndex Q2wv n 0 126
FrameIndex Q2wv o 0 127
FrameIndex Q2wv p 0 128
FrameIndex Q2wv q 0 129

//point - quake 2 point (pt)
FrameIndex Q2pt A 0 130
FrameIndex Q2pt b 0 131
FrameIndex Q2pt c 0 132
FrameIndex Q2pt d 0 133
FrameIndex Q2pt e 0 134
FrameIndex Q2pt f 0 135
FrameIndex Q2pt g 0 136
FrameIndex Q2pt h 0 137
FrameIndex Q2pt i 0 138
FrameIndex Q2pt j 0 139
FrameIndex Q2pt k 0 140
FrameIndex Q2pt l 0 141

//idle (crstand) - quake 2 idle set a (i)
FrameIndex Q2iA A 0 142
FrameIndex Q2iA b 0 143
FrameIndex Q2iA c 0 144
FrameIndex Q2iA d 0 145
FrameIndex Q2iA e 0 146
FrameIndex Q2iA f 0 147
FrameIndex Q2iA g 0 148
FrameIndex Q2iA h 0 149
FrameIndex Q2iA i 0 150
FrameIndex Q2iA j 0 151
FrameIndex Q2iA k 0 152
FrameIndex Q2iA l 0 153
FrameIndex Q2iA m 0 154
FrameIndex Q2iA n 0 155
FrameIndex Q2iA o 0 156
FrameIndex Q2iA p 0 157
FrameIndex Q2iA q 0 158
FrameIndex Q2iA r 0 159
FrameIndex Q2iA s 0 160

//walk (crwalk) - quake 2 walk set a (w)
FrameIndex Q2wA A 0 161
FrameIndex Q2wA b 0 162
FrameIndex Q2wA c 0 163
FrameIndex Q2wA d 0 164
FrameIndex Q2wA e 0 165
FrameIndex Q2wA f 0 166

//crattack - quake 2 cr attack (CA)
FrameIndex Q2cA A 0 167
FrameIndex Q2cA b 0 168
FrameIndex Q2cA c 0 169
FrameIndex Q2cA d 0 170
FrameIndex Q2cA e 0 171
FrameIndex Q2cA f 0 172
FrameIndex Q2cA g 0 173
FrameIndex Q2cA h 0 174
FrameIndex Q2cA i 0 175

//crpain - quake 2 cr pain (CP)
FrameIndex Q2cp A 0 176
FrameIndex Q2cp b 0 177
FrameIndex Q2cp c 0 178
FrameIndex Q2cp d 0 179

//xdeath (crdeath) - quake 2 xdeath set a (x)
FrameIndex Q2xA A 0 180
FrameIndex Q2xA b 0 181
FrameIndex Q2xA c 0 182
FrameIndex Q2xA d 0 183
FrameIndex Q2xA e 0 184

//death - quake 2 death set a (d)
FrameIndex Q2dA A 0 185
FrameIndex Q2dA b 0 186
FrameIndex Q2dA c 0 187
FrameIndex Q2dA d 0 188
FrameIndex Q2dA e 0 189
FrameIndex Q2dA f 0 190
FrameIndex Q2dA g 0 200
FrameIndex Q2dA h 0 201
FrameIndex Q2dA i 0 202
FrameIndex Q2dA j 0 203
FrameIndex Q2dA k 0 204
FrameIndex Q2dA l 0 205
FrameIndex Q2dA m 0 206
FrameIndex Q2dA n 0 207
FrameIndex Q2dA o 0 208
FrameIndex Q2dA p 0 209
FrameIndex Q2dA q 0 210
FrameIndex Q2dA r 0 211
FrameIndex Q2dA s 0 212
FrameIndex Q2dA t 0 213
}
[/code]

the model.. sydney..has the following frames

//spawn - 40 frames
//run - 6 frames
//attack - 8 frames
//pain - 12 frames
//jump - 6 frames

//flip - 12 frames
//salute - 11 frames
//taunt - 17 frames
//wave -11 frames
//point - 12 frames

//idle (crstand) - 19 frames
//walk (crwalk) - 6 frames
//crattack - 9 frames
//crpain - 4 frames
//xdeath (crdeath) - 5 frames

//death - 20 frames

16 animations in total

what am I doing wrong?
User avatar
CBM
Posts: 373
Joined: Wed Oct 09, 2019 3:39 am
Graphics Processor: nVidia with Vulkan support
Location: The Shores of Hell

Re: understanding model animation

Post by CBM »

it seems like it is very wrong.. this is my modeldef

Code: Select all

Model sydney
{ 
   Path "Models\monsters\sydney"
   Skin 0 "sydney.png"
   Model 0 "tris.md2"
   Scale 1.5 1.5 1.5
	
	INTERPOLATEDOUBLEDFRAMES

//spawn - quake2 spawn sets a and b (S) 
	FrameIndex Q2SA A 0 1
	FrameIndex Q2SA b 0 2
	FrameIndex Q2SA c 0 3
	FrameIndex Q2SA d 0 4
	FrameIndex Q2SA e 0 5
	FrameIndex Q2SA f 0 6
	FrameIndex Q2SA g 0 7
	FrameIndex Q2SA h 0 8
	FrameIndex Q2SA i 0 9
	FrameIndex Q2SA j 0 10
	FrameIndex Q2SA k 0 11
	FrameIndex Q2SA l 0 12
	FrameIndex Q2SA m 0 13
	FrameIndex Q2SA n 0 14
	FrameIndex Q2SA o 0 15
	FrameIndex Q2SA p 0 16
	FrameIndex Q2SA q 0 17
	FrameIndex Q2SA r 0 18
	FrameIndex Q2SA s 0 19
	FrameIndex Q2SA t 0 20
	FrameIndex Q2SA u 0 21
	FrameIndex Q2SA v 0 22
	FrameIndex Q2SA w 0 23
	FrameIndex Q2SA x 0 24
	FrameIndex Q2SA y 0 25
	FrameIndex Q2SA z 0 26
	FrameIndex Q2SB a 0 27
	FrameIndex Q2Sb b 0 28
	FrameIndex Q2Sb c 0 29
	FrameIndex Q2Sb d 0 30
	FrameIndex Q2Sb e 0 31
	FrameIndex Q2Sb f 0 32
	FrameIndex Q2Sb g 0 33
	FrameIndex Q2Sb h 0 34
	FrameIndex Q2Sb i 0 35
	FrameIndex Q2Sb j 0 36
	FrameIndex Q2Sb k 0 37
	FrameIndex Q2Sb l 0 38
	FrameIndex Q2Sb m 0 39
	FrameIndex Q2Sb n 0 40

//run - quake 2 run set a (R)
	FrameIndex Q2rA A 0 41
	FrameIndex Q2rA b 0 42
	FrameIndex Q2rA c 0 43
	FrameIndex Q2rA d 0 44
	FrameIndex Q2rA e 0 45
	FrameIndex Q2rA f 0 46

//attack - quake 2 attack set a (A)
	FrameIndex Q2aA A 0 47
	FrameIndex Q2aA b 0 48
	FrameIndex Q2aA c 0 49
	FrameIndex Q2aA d 0 50
	FrameIndex Q2aA e 0 51
	FrameIndex Q2aA f 0 52
	FrameIndex Q2aA g 0 53
	FrameIndex Q2aA h 0 54

//pain - quake 2 pain set a (P)
	FrameIndex Q2pA A 0 55
	FrameIndex Q2pA b 0 56
	FrameIndex Q2pA c 0 57
	FrameIndex Q2pA d 0 58
	FrameIndex Q2pA e 0 59
	FrameIndex Q2pA f 0 60
	FrameIndex Q2pA g 0 61
	FrameIndex QppA h 0 62  //unknown sprite? - only 61 sprites????
	FrameIndex QppA i 0 63
	FrameIndex Q2pA j 0 64
	FrameIndex Q2pA k 0 65
	FrameIndex Q2pA l 0 66

//jump - quake 2 jump set a (J)
	FrameIndex Q2jA A 0 67
	FrameIndex Q2jA b 0 68
	FrameIndex Q2jA c 0 69
	FrameIndex Q2jA d 0 70
	FrameIndex Q2jA e 0 71
	FrameIndex Q2jA f 0 72

//flip - quake 2 flip set a (F)
	FrameIndex Q2fA A 0 73
	FrameIndex Q2fA b 0 74
	FrameIndex Q2fA c 0 75
	FrameIndex Q2fA d 0 76
	FrameIndex Q2fA e 0 77
	FrameIndex Q2fA f 0 78
	FrameIndex Q2fA g 0 79
	FrameIndex QpfA h 0 80
	FrameIndex QpfA i 0 81
	FrameIndex Q2fA j 0 82
	FrameIndex Q2fA k 0 83
	FrameIndex Q2fA l 0 84

//salute - quake 2 salute (SL)
	FrameIndex Q2sl A 0 85
	FrameIndex Q2sl b 0 86
	FrameIndex Q2sl c 0 87
	FrameIndex Q2sl d 0 88
	FrameIndex Q2sl e 0 89
	FrameIndex Q2sl f 0 90
	FrameIndex Q2sl g 0 91
	FrameIndex Qpsl h 0 92
	FrameIndex Qpsl i 0 93
	FrameIndex Q2sl j 0 94
	FrameIndex Q2sl k 0 95

//taunt - quake 2 taunt set a (T)
	FrameIndex Q2tA A 0 96
	FrameIndex Q2tA b 0 97
	FrameIndex Q2tA c 0 98
	FrameIndex Q2tA d 0 99
	FrameIndex Q2tA e 0 100
	FrameIndex Q2tA f 0 101
	FrameIndex Q2tA g 0 102
	FrameIndex Q2tA h 0 103
	FrameIndex Q2tA i 0 104
	FrameIndex Q2tA j 0 105
	FrameIndex Q2tA k 0 106
	FrameIndex Q2tA l 0 107
	FrameIndex Q2tA m 0 108
	FrameIndex Q2tA n 0 109
	FrameIndex Q2tA o 0 110
	FrameIndex Q2tA p 0 111
	FrameIndex Q2tA q 0 112

//wave - quake 2 wave (wv)
	FrameIndex Q2wv A 0 113
	FrameIndex Q2wv b 0 114
	FrameIndex Q2wv c 0 115
	FrameIndex Q2wv d 0 116
	FrameIndex Q2wv e 0 117
	FrameIndex Q2wv f 0 118
	FrameIndex Q2wv g 0 119
	FrameIndex Q2wv h 0 120
	FrameIndex Q2wv i 0 121
	FrameIndex Q2wv j 0 122
	FrameIndex Q2wv k 0 123
	FrameIndex Q2wv l 0 124
	FrameIndex Q2wv m 0 125
	FrameIndex Q2wv n 0 126
	FrameIndex Q2wv o 0 127
	FrameIndex Q2wv p 0 128
	FrameIndex Q2wv q 0 129

//point  - quake 2 point (pt)
	FrameIndex Q2pt A 0 130
	FrameIndex Q2pt b 0 131
	FrameIndex Q2pt c 0 132
	FrameIndex Q2pt d 0 133
	FrameIndex Q2pt e 0 134
	FrameIndex Q2pt f 0 135
	FrameIndex Q2pt g 0 136
	FrameIndex Q2pt h 0 137
	FrameIndex Q2pt i 0 138
	FrameIndex Q2pt j 0 139
	FrameIndex Q2pt k 0 140
	FrameIndex Q2pt l 0 141

//idle (crstand) - quake 2 idle set a (i)
	FrameIndex Q2iA A 0 142
	FrameIndex Q2iA b 0 143
	FrameIndex Q2iA c 0 144
	FrameIndex Q2iA d 0 145
	FrameIndex Q2iA e 0 146
	FrameIndex Q2iA f 0 147
	FrameIndex Q2iA g 0 148
	FrameIndex Q2iA h 0 149
	FrameIndex Q2iA i 0 150
	FrameIndex Q2iA j 0 151
	FrameIndex Q2iA k 0 152
	FrameIndex Q2iA l 0 153
	FrameIndex Q2iA m 0 154
	FrameIndex Q2iA n 0 155
	FrameIndex Q2iA o 0 156
	FrameIndex Q2iA p 0 157
	FrameIndex Q2iA q 0 158
	FrameIndex Q2iA r 0 159
	FrameIndex Q2iA s 0 160

//walk (crwalk) - quake 2 walk set a (w)
	FrameIndex Q2wA A 0 161
	FrameIndex Q2wA b 0 162
	FrameIndex Q2wA c 0 163
	FrameIndex Q2wA d 0 164
	FrameIndex Q2wA e 0 165
	FrameIndex Q2wA f 0 166

//crattack - quake 2 cr attack (CA)
	FrameIndex Q2cA A 0 167
	FrameIndex Q2cA b 0 168
	FrameIndex Q2cA c 0 169
	FrameIndex Q2cA d 0 170
	FrameIndex Q2cA e 0 171
	FrameIndex Q2cA f 0 172
	FrameIndex Q2cA g 0 173
	FrameIndex Q2cA h 0 174
	FrameIndex Q2cA i 0 175

//crpain - quake 2 cr pain (CP)
	FrameIndex Q2cp A 0 176
	FrameIndex Q2cp b 0 177
	FrameIndex Q2cp c 0 178
	FrameIndex Q2cp d 0 179

//xdeath (crdeath) - quake 2 xdeath set a (x)
	FrameIndex Q2xA A 0 180
	FrameIndex Q2xA b 0 181
	FrameIndex Q2xA c 0 182
	FrameIndex Q2xA d 0 183
	FrameIndex Q2xA e 0 184

//death - quake 2 death set a (d)
	FrameIndex Q2dA A 0 185
	FrameIndex Q2dA b 0 186
	FrameIndex Q2dA c 0 187
	FrameIndex Q2dA d 0 188
	FrameIndex Q2dA e 0 189
	FrameIndex Q2dA f 0 190
	FrameIndex Q2dA g 0 200
	FrameIndex Q2dA h 0 201
	FrameIndex Q2dA i 0 202
	FrameIndex Q2dA j 0 203
	FrameIndex Q2dA k 0 204
	FrameIndex Q2dA l 0 205
	FrameIndex Q2dA m 0 206
	FrameIndex Q2dA n 0 207
	FrameIndex Q2dA o 0 208
	FrameIndex Q2dA p 0 209
	FrameIndex Q2dA q 0 210
	FrameIndex Q2dA r 0 211
	FrameIndex Q2dA s 0 212
	FrameIndex Q2dA t 0 213
}
the model.. sydney..has the following frames

//spawn - 40 frames
//run - 6 frames
//attack - 8 frames
//pain - 12 frames
//jump - 6 frames

//flip - 12 frames
//salute - 11 frames
//taunt - 17 frames
//wave -11 frames
//point - 12 frames

//idle (crstand) - 19 frames
//walk (crwalk) - 6 frames
//crattack - 9 frames
//crpain - 4 frames
//xdeath (crdeath) - 5 frames

//death - 20 frames

16 animations in total

what am I doing wrong?

it apparently thinks the model only has 61 frames in total? or 62 if it starts with index 0
User avatar
CBM
Posts: 373
Joined: Wed Oct 09, 2019 3:39 am
Graphics Processor: nVidia with Vulkan support
Location: The Shores of Hell

Re: understanding model animation - need help

Post by CBM »

I was looking at this page

http://r4ldoom.blogspot.com/2018/02/the ... -doom.html

the start of a how to guide but it seems it was abandoned more than 1,5 years ago

the guide states this

Code: Select all

You can make an animation in Blender, and every frame you use can be defined in MODELDEF with FrameIndex. If you have a shooting animation for example that's only 5 frames, you could do something like:

FrameIndex SHOT A 0 0
FrameIndex SHOT B 0 1
FrameIndex SHOT C 0 2
FrameIndex SHOT D 0 3
FrameIndex SHOT E 0 4
the first 0 in SHOT A 0 0 ... what is that?

lets say the model has a shooting animation with 5 frames and then a walking animation also with 5 frames, could I then do this? :

Code: Select all

FrameIndex SHOT A 0 0
FrameIndex SHOT B 0 1
FrameIndex SHOT C 0 2
FrameIndex SHOT D 0 3
FrameIndex SHOT E 0 4
FrameIndex WALK A 1 0
FrameIndex WALK B 1 1
FrameIndex WALK C 1 2
FrameIndex WALK D 1 3
FrameIndex WALK E 1 4
?
User avatar
CBM
Posts: 373
Joined: Wed Oct 09, 2019 3:39 am
Graphics Processor: nVidia with Vulkan support
Location: The Shores of Hell

Re: understanding model animation - need help

Post by CBM »

I had another look at the genetech mod and I think I have finally figured it out

I looked at the gunner.md2 model

it has 70 stand frames and apparently it means that they must be adressed as "stand00" to "stand69" instead of "stand"

not intuitive but atleast now I know :D

next step... that I actually READ what people post to me :D
User avatar
R4L
Global Moderator
Posts: 400
Joined: Fri Mar 03, 2017 9:53 am
Preferred Pronouns: He/Him
Operating System Version (Optional): Windows 11 Pro
Graphics Processor: nVidia (Modern GZDoom)
Contact:

Re: understanding model animation - need help

Post by R4L »

CBM wrote:I was looking at this page

http://r4ldoom.blogspot.com/2018/02/the ... -doom.html

the start of a how to guide but it seems it was abandoned more than 1,5 years ago
5 years ago? The link even says 2018 lol.

I plan on finishing it, just haven't had time between real world work. Glad you got it figured out though.
User avatar
CBM
Posts: 373
Joined: Wed Oct 09, 2019 3:39 am
Graphics Processor: nVidia with Vulkan support
Location: The Shores of Hell

Re: understanding model animation - need help

Post by CBM »

R4L wrote:
CBM wrote:I was looking at this page

http://r4ldoom.blogspot.com/2018/02/the ... -doom.html

the start of a how to guide but it seems it was abandoned more than 1,5 years ago
5 years ago? The link even says 2018 lol.

I plan on finishing it, just haven't had time between real world work. Glad you got it figured out though.
look again... :)

I did not write 5.. I wrote 1,5 (aka 1½) .. which is accurate... since the guide is dated february 2018 and we now have october 2019.. soon to be november

in case others gets stuck as well...
What I have learned about using md2 models in gzdoom so far...

metadata should contain path to md2 file, ex MD2_PATH models/helpers/sydney ( does seem to work without it though )

it seems gzdoom will only find the first 10 md2 animation groups, but each group does seem to be able to have many many frames

format for frames are...

FRAME <4 letter/number spritename> <frameindex> <modelindex> "<animation group name><3 digit animation group index>"

ex

Frame Q2wv A 0 "wave000"

when animating multiple models, each must have an entry ie

Frame Q2wv A 0 "wave000"
Frame Q2wv A 1 "wave000"

Q2wv A will play for model 0 and 1, ie monsterbody and monsterhead

BUT .. I still do not know what INTERPOLATEDOUBLEDFRAMES is

I hope you find time to finish the guide, part 1 was usefull
User avatar
Cherno
Posts: 1309
Joined: Tue Dec 06, 2016 11:25 am

Re: understanding model animation <solved>

Post by Cherno »

INTERPOLATEDDOUBLEFRAMES means that double frames are handled as one with a tic length equal to the tic lengths of both frames combined, in regards to frame interpolation. It's meant for vanilla Doom monsters who have See states like AABBCCDD.

Code: Select all

AABBCCDD 4
becomes

Code: Select all

ABCD 8
as far as interpolation is concerned (movement and everything else is not affected). Without it, it would appear as if the monster quickly transitions to the next aniomation frame and then freeze a short time before transitioning to the next. With the flag, the transitioning is continuous.
Post Reply

Return to “Assets (and other stuff)”