HK-47 84 Posted February 8, 2017 I feel like this has been asked before, possibly by myself. But if not... Is it possible to adjust the "breathing" animation in Kotor 1&2? The rate at which everyone "breathes" has always bothered me. If anyone breathed at the rate the game has it, they'd hyperventilate. Quote Share this post Link to post Share on other sites
Kexikus 995 Posted February 8, 2017 It should be possible I think. Basically, you'd need to find every model that has a breathing animation (which might just be the humanoid super model or something like that), decompile it to get the ASCII version and then edit the animation by increasing the time between the keyframes. Then save the ascii, compile it and you should be done. However, MDLOps might have problems with characters. I don't think it has as I recall that I once edited character animations, but if something gets screwed up that could be why. Quote Share this post Link to post Share on other sites
superSzym 155 Posted February 8, 2017 Wait... you mean every head model in both games? Quote Share this post Link to post Share on other sites
Fair Strides 509 Posted February 8, 2017 @SuperSzym: No, the breathing animation is in one of the "super models" from which all of the NPC models (that are humans or humanoids) inherit there animations. Same thing with most of the heads, but the heads don't really breathe. So one would need to find whichever super model (either "s_male01", "s_male02", "s_female01", "s_female02", or "s_female03", in that order from first to last in inheritance), decompile it, edit what would probably just be called the "default" animation on the model, recompile it, and then re-compile any of the super models that come after it, with their files being in the same folder as this re-compiled one. Each of these super models has some of the animations, and they chain together through the field in the .mdl file that sets what super model the model references. "s_male01"->no super model "s_male02"->"s_male01" "s_female01"->"s_male02" "s_female02"->"s_female01" "s_female03"->"s_female02" The animations from the super models aren't actually imported when the model is compiled. The game will simply look in the model itself for an animation and then if it can't find it, it starts backtracking through the list of inheritance to try to find it. Quote Share this post Link to post Share on other sites
Kexikus 995 Posted February 8, 2017 So you wouldn't need to compile the "lower" supermodels, right? Because as you said, the game will simply backtrack until it finds the animation. Quote Share this post Link to post Share on other sites
Fair Strides 509 Posted February 8, 2017 Yeah, if the animation named "default" (assuming that's the breathing animation) was in "s_female02", you'd only need to re-compile it and "s_female03". Quote Share this post Link to post Share on other sites
DarthParametric 3,784 Posted February 8, 2017 You could just slip in an intermediate supermodel that only has the breathing/idle animation, then point it at a renamed copy of the original. It will override that animation. That way if there are any issues you only have to deal with a single animation. Quote Share this post Link to post Share on other sites
Fair Strides 509 Posted February 8, 2017 And assuming you did this between "s_female02" and "s_female03", you'd still need to-recompile your model and the "s_female03" model. Or if you did it after "s_female03", you'd still need to re-compile EVERY character model at that point. Also, I believe there are some models (I can't recall if they're body or head models) that use "s_female02" and don't go the last step for "s_female03"'s animations... Quote Share this post Link to post Share on other sites
Kexikus 995 Posted February 8, 2017 But why do you have to recompile every model below the edited supermodel? From your earlier explanation I got the impression that you don't have to since the animations are not actually stored in the compiled model when recompiling it but are looked up by the game going through the models by recursion. Quote Share this post Link to post Share on other sites
Fair Strides 509 Posted February 8, 2017 If you did it after "s_female03", when all of the character models reference "s_female02" or "s_female03", your custom one wouldn't be tied in any way to the models. Hence the need to set "s_female03" as the super model of your custom one and then re-compile every model (or hex-edit) so that your custom one was the new super model. Alternatively, the best way would probably be to splice your custom one (assuming you'd really need to keep it separate from the other animations) in between "s_female01" and "s_female02", that way you'd just need to set the super model in "s_female02" and re-compile (assuming you'd set the super model of your custom one to "s_female01"). Though the big assumption here is that the breathing animation isn't in "s_female02" or "s_female03"... Quote Share this post Link to post Share on other sites
Kexikus 995 Posted February 8, 2017 I get that part^^ What confused me is what you said in your first post of this thread: The animations from the super models aren't actually imported when the model is compiled. The game will simply look in the model itself for an animation and then if it can't find it, it starts backtracking through the list of inheritance to try to find it. and So one would need to find whichever super model (either "s_male01", "s_male02", "s_female01", "s_female02", or "s_female03", in that order from first to last in inheritance), decompile it, edit what would probably just be called the "default" animation on the model, recompile it, and then re-compile any of the super models that come after it, with their files being in the same folder as this re-compiled one. Let's say that whatever animation we're talking about is not in "s_female03" but in I don't know... "s_female01". I'd edit the animation and recompile "s_female01" of course. Then I'd place it in the Override and according to the first statement it should work since every character model would see if it has the animation itself, which is doesn't. Then the game would check "s_female03", "s_female02" and finally my modified "s_female01" where it would find my modified animation and play this one. But according to your second statement I'd need to recompile "s_female02" and "s_female03" as well which of course makes sense if I inserted my own "new" model that now has to be referenced. But in the case I described and which you were referring to in your first post I think, I only edit an existing supermodel that would still be referenced the same way as before. So why exactly do I have to recompile those two models in this case? To me it'd make sense to either compile none of them, or every single model that's lower in the hierarchy including every humanoid body model. Quote Share this post Link to post Share on other sites
Fair Strides 509 Posted February 8, 2017 Oh... I see what you mean. Yeah, that's my bad, I was thinking of something else. Yeah, you'd just edit the one model and that should be all. You'd just need to recompile multiple ones if you were splicing a custom one in the list at any point before the end of the list. Quote Share this post Link to post Share on other sites
Kexikus 995 Posted February 8, 2017 Thanks for the clarification Quote Share this post Link to post Share on other sites
LDR 234 Posted February 8, 2017 Somewhat random, but one thing I noticed was on the Telos Polar Plateau how the player's breath would appear synchronized after every exhale. Nice little touch they added. Quote Share this post Link to post Share on other sites