First, I’m by no means an expert, but from what I can tell, Crowbar doesn’t handle delta animations very well. If you look in the .QC file, you’ll find these $animation definitions:
[code]$Animation “a_swimright” “ichthyosaur_anims\a_swimright.smd” {
fps 30
// This subtract line guesses the animation name and frame index. There is no way to determine which $animation and which frame was used. Change as needed.
subtract “icky_delta.smd” 0
}
$Animation “a_swimleft” “ichthyosaur_anims\a_swimleft.smd” {
fps 30
// This subtract line guesses the animation name and frame index. There is no way to determine which $animation and which frame was used. Change as needed.
subtract “icky_delta.smd” 0
}
$Animation “a_swimup” “ichthyosaur_anims\a_swimup.smd” {
fps 30
// This subtract line guesses the animation name and frame index. There is no way to determine which $animation and which frame was used. Change as needed.
subtract “icky_delta.smd” 0
}
$Animation “a_swimdown” “ichthyosaur_anims\a_swimdown.smd” {
fps 30
// This subtract line guesses the animation name and frame index. There is no way to determine which $animation and which frame was used. Change as needed.
subtract “icky_delta.smd” 0
}[/code]
What happens here is that the “subtract” lines will subtract the animation in the icky_delta.smd, which contains a reference pose, from the “a_swimright”, “a_swimleft”, “a_swimup” and “a_swimdown” animations, thus creating deltas for these animations. However, the “a_swimright.smd”, “a_swimleft.smd”, “a_swimup.smd” and “a_swimdown.smd” files already contain the delta animations, which means the reference pose is being subtracted twice from the original animations!
Further down, the $sequence definitions that reference these animations also contain subtract commands:
[code]$Sequence “side_to_side” {
“a_swimright”
“a_swimleft”
autoplay
blend “sidetoside” -90 90
blendwidth 2
delta
fadein 0.2
fadeout 0.2
hidden
fps 30
// This subtract line guesses the animation name and frame index. There is no way to determine which $animation and which frame was used. Change as needed.
subtract “icky_delta.smd” 0
}
$Sequence “up_and_down” {
“a_swimup”
“a_swimdown”
autoplay
blend “upanddown” -90 90
blendwidth 2
delta
fadein 0.2
fadeout 0.2
hidden
fps 30
// This subtract line guesses the animation name and frame index. There is no way to determine which $animation and which frame was used. Change as needed.
subtract “icky_delta.smd” 0
}[/code]I’m not sure if the “subtract” commands here have any effect. The $sequence page on the VDC wiki doesn’t mention the “subtract” command as being a valid command in a $sequence definition block. In any case, it doesn’t make any sense to include them here since they have already been included in the respective $animation definition blocks.
Crowbar has however correctly inserted the “delta” command in these blocks which states that the referenced animations contain animations that have been subtracted (delta animations), and that these sequences are meant to be played on top of whatever sequence(s) that are currently being played.
TLDR;[/size]
[/size]
The solution[/size] is to delete (or comment out) all the “subtract” lines from the .QC file.
I’ve confirmed that this solves the problem, at least for viewing in HLMV. I haven’t tested if it works correctly in-game.
Another solution would be to numerically add the animation data in “icky_delta.smd” file to the animation data in “a_swimright.smd”, “a_swimleft.smd”, “a_swimup.smd” and “a_swimdown.smd” files, and keep the “subtract” commands in their respective $animation definition blocks. But I think you would have to write a script or a program to do that.
A third solution would of course be to recreate the “a_swimright”, “a_swimleft”, “a_swimup” and “a_swimdown” animations from scratch, using “icky_delta.smd” as the starting point for the animations.
ichthyosaur.qc.txt (9.22 KB)