So I was trying to sew a peasant girl from upper half of Ayumi and lower half of Assasin.
http://chebmaster.ru/downloads/pak7-frankencheb.pk3They match well, BUT!
It drank several liters of my blood! Why? Because animation.cfg is
screwy I copied the lines for lower torso 1:1 from assasin, but the animations turned out to be all broken!
I would never got it right if not remembering about ages-old tool gathering dust in my disk archives. MD3 viewer.
http://chebmaster.ru/downloads/md3-delphi-viewer.zip Made by Sulaco (the guy himself is long dead) to demonstrate OpenGL using Delphi. Sources included, and, most importantly, it parses animation.cfg the same way as OpenArena does. Perfect for rapid trial-and-error corrections.
Soooo... What did I learn?
skip := anim[LEGS_WALKCR].firstFrame - anim[TORSO_GESTURE].firstFrame;
for I :=LEGS_WALKCR to MAX_ANIMATIONS do
Anim
.firstFrame := Anim.firstFrame - skip;
Well, FFFFfffuuuu----
In short, the code ASSUMES that lower part's and upper part's animations begin at the same frame number and forcibly synchronizes crouch-walking to gesture.
Because the lower animation has to both be correct relative the first frame of upper part's gesture animation and use correct frame numbers. In this case (death animations of different length)... Yeah.
I clamped the death animations to values where upper and lower fit, but the gesture animation is screwed. (as you can see with my peasant girl, she has parts of death animation mixed in)
TL;DR: If you make a frankenskin, copy the gesture animation from the lower body's owner's animation.cfg and pray it falls onto usable frames. Because otherwise all lower body animations are screwed.