1Leonard

Renaming bones in models

Recommended Posts

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:
2ijebk.jpg
 
same as above but with VP's Headfixer:
52c0wl.jpg
 
Replacing in Mdlops:
ve136b.jpg
 
Anyone have another idea on how to get this done?
 
 

Share this post


Link to post
Share on other sites

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

  • Like 1

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.