1Leonard 134 Posted August 6, 2016 It's time to go back in an issue I came across a long time ago and I need your thoughts. Basically, in TSL, the pmhc06 model (short blonde hair, blue eyes) has missing animations: his eyes never move and he never blinks. After looking at the model it seems that some bones (if they're called something else please tell me, i'm not really familiar with the terminology) in his facial area are misnamed: left eyelid = eylidL (should be eyeLlid) right eyelid = eyelidL01 (should be eyeRlid) left eye = eyeL (should be eyeLA) right eye = eyeR (should be eyeRA) In my mind, renaming these would be the first step to fixing the missing animations. However, this is where it gets tricky. I've tried renaming them in several ways and orders, and every time the model screws up ingame. Things that haven't worked: Hexediting the Ascii and recompiling: same as above but with VP's Headfixer: Replacing in Mdlops: Anyone have another idea on how to get this done? Quote Share this post Link to post Share on other sites
DarthParametric 3,785 Posted August 6, 2016 Hexediting the Ascii and recompiling You don't hexedit an ASCII file, it's just text. You can't hex edit the binary model because the strings you are editing are different lengths. I think I have played with this head before. Aside from the bone names, it has other issues. The right eyelid has flipped normals and the face skin weights are a complete mess. The best solution is to transfer the mesh to the rig of one of the other heads, but you'd need to redo all the face weights to fix them up. Edit: here's a quick and dirty first pass at re-rigging to PMHC01's rig. Needs the mouth corner weights fixed up, but the eyebrows, eyes, and eyelids should all now work as intended. The alpha on the hair at the front is a bit odd too (and is obviously no longer a danglymesh/AuroraFlex). I don't have time to mess with it further, so here are the files if anyone else wants to fix it properly - http://dpmods.wheb.org/files/kotor/tsl/%5BTSL%5D_PMHC06_Rerig_WIP.7z 1 Quote Share this post Link to post Share on other sites
LiliArch 115 Posted August 6, 2016 You can't hex edit the binary model because the strings you are editing are different lengths. You can - you just need to stay sharp and do some calculating. It's just the strings where length changes, so you'll need to recalculate the pointer locations and file length, and be aware that you may screw something up (so always, ALWAYS keep a backup copy handy), but it is do-able. Quote Share this post Link to post Share on other sites
Fair Strides 509 Posted August 6, 2016 In addition to what Lili says, it's actually almost easy except for one thing: the four parts are currently 23 characters, but what they need to be totals 24 characters... If it were otherwise, it'd just be a simple hex-edit, but Darth Parametric's is probably the best we can hope for since Danglymeshes seem to act up. Quote Share this post Link to post Share on other sites
DarthParametric 3,785 Posted August 7, 2016 you'll need to recalculate the pointer locations and file length Leaving aside the complete impracticality of that for the average punter, it's not just the bone names that are incorrect. The additional issue in this case is that the bonemap is completely screwed up (weights assigned to wrong bones) and some of the weights are bad (including two bones worth of weights combined in one instance). The typical array of face bones is: head_g necklwr_g neck_g f_jaw_g f_um_g (upper mouth/lip) f_Llm_g (left lower mouth/lip) f_Rlm_g (right lower mouth/lip) f_lmc_g (left mouth corner) f_rmc_g (right mouth corner) f_lns_g (left nostril) f_rns_g (right nostril) f_mdbrw_g (middle brow) f_lbrw_g (left eyebrow) f_rbrw_g (right eyebrow) f_llweye_g (left under eye) f_rlweye_g (right lower eye)Instead, PMHC06 has: head_g necklwr_g neck_g f_llweye_g (f_jaw_g's weights) MaskHook (f_um_g's weights) f_rns_g (f_Llm_g's weights) f_lns_g (f_Rlm_g's weights) GoggleHook (f_lmc_g's weights) teethDWN (f_lns_g's weights) f_lmc_g (f_rns_g's weights) hair_front (f_mdbrw_g's weights) f_tonguetip_g (f_lbrw_g's weights) f_um_g (f_rbrw_g's weights) talkdummy (f_llweye_g's weights) f_rlweye_g (seems to include both f_rlweye_g's and f_rmc_g's weights)In short, it's pretty much a case of toss out everything except the meshes and start from scratch. Quote Share this post Link to post Share on other sites
Sith Holocron 2,478 Posted August 7, 2016 Though I have never been compelled to use this head, I think a fix for this would definitely be an instant download if it were to be done. Quote Share this post Link to post Share on other sites
LiliArch 115 Posted August 7, 2016 Leaving aside the complete impracticality of that for the average punter, it's not just the bone names that are incorrect. The additional issue in this case is that the bonemap is completely screwed up (weights assigned to wrong bones) and some of the weights are bad (including two bones worth of weights combined in one instance). Yeah, I never said it wouldn't be an overkill, only that it is do-able. Fixing the weighting and wrong normals would actually be pretty easy to hex, if someone could figure out the correct values though, since the actual bonemapping is done with index values and not names, but nevertheless, it would definitely be an overkill. (Though if you brought that bone array from ascii instead of binary, it could be just as well MDLOps screwing the mapping. It loves to do that when the nodes are not in correct order - original models' mapping works fine, but alas, if you write it as ascii and then again as binary, everything is in wrong place.) Quote Share this post Link to post Share on other sites