Facial Bones name scheme rbone vs bone.r

Issue #451 resolved
Domiek created an issue

I’ve noticed that the additional facial bones have a naming scheme that is different from all the other bones. For example, the right Brow Mid is labeled as rBrowMid. Whereas if it followed the naming scheme of the rest of the body bones, it would be called BrowMid.R.

The significance of this is that you can’t select mirror or mirror pose via commands such as bpy.ops.pose.select_mirror() which is already possible for the body bones.

I’m not sure if these bones are named this way coming from Daz, or if these are the bones created in the Corrections tab under Add Extra Face Bones.

How safe would it be for me to rename these bones? Would I break any Diffeo or Rigify functions in doing so?

Comments (16)

  1. Alessandro Padovani

    The daz rig gets the daz names and that’s fair enough.

    When you convert to MHX you get the .L .R blender notation. But I see this is not done for the face bones. May be this is a bug, or anyway it would be useful to get the .L .R notation for the face bones too in the MHX rig.

  2. Domiek reporter

    Thanks for confirming that Alessandro. Also just want to make note that I use Rigify which adheres to the .L .R notation as well. Combined with the Xpose Picker plugin, it’s really convenient to mirror select/mirror pose.

  3. engetudouiti

    The merit to convert bone name so, you can use mirror pose with pose mode even though it is default rig (non convert) Only for the purpose, I made simple add on which include function it convert bones name to r. l,.

    it only convert when there are pair bones, which names are right/left XXX or r/l XXXX, (daz can use both for pari bone name) then convert it as r.XXXX and l.XXXX

    Even though you do so (manually or script), it not break current driver, or constrain (because blender auto change all driver and constrain bone name which used) and animation key, at same time it auto convert all vertex group currently attached the rig with armature modfier. so basically it work.

    but you can not import pose file any-more. So I only use the conversion function , when I pose with mirror, then set key, after that return it as same as before. If user forget it,, import pose never work.

    I approve there should be option which auto convert bone name as blender manner for mirror pose. But it need some test, (it may easy cause new bug I suppose which related import pose etc, for user who not need it), but basically I approve your suggestion.

    (then it need to made, which only convert, daz rig actually have pair name bones with r and l or right left prefix in daz = it means these 2 bones treated as pair bone in daz studio) eg,, add on need to exclude case,, which happend to use “r” and “l” for bone name 1st string. such bones did not offered as mirror bone pair. (it may happen rig type props)

    Most simply way is add new function, which convert bone selected only. but if it make so,, import pose not work. so which bone should convert name for blender mirror pose, need to be decided by add on.

  4. engetudouiti

    And if add on auto convert bone name, you may lost import morph function which need to use bone name. I do not think it is easy sovled, (Thomas need to change all function which generate driver which use bone name,,,)

    So to avoid many Thomas work,, it may better offered as one option (convert bone name) , which may only work after you import all morphs, then use the function to convert bone name for blender mirror, with recet button, which return bone name as same as before.

    (About pose file covnert, I suppose it is not so difficult, to include both case (daz default bone naming, and rename bone naming)

    If Thomas decide,, use blender naming way is best to import daz rig, may try gradually (re-write code to work for new bone name rule.)

  5. engetudouiti

    Test only in Daz bone Utility menu, use change bone name/return bone name

    it try to detect and rename only daz pair bones as blender pair bone naming way. so it should work all daz rig bones (which use r/l or right/left as pair bone name) If you use rename,, you can not import morph and pose file with add on untill you return it. (you may often froget it I suppose,,though)

  6. Thomas Larsson repo owner

    I agree that using suffix notation for the face bones could be somewhat useful, but I never bothered to implement it. As engetudouiti pointed out, it would take some effort to make drivers work out right. Also, suffix notation is mainly useful because you can copy poses to the other side, and at least in my workflow I don’t do that for the face bones. Instead I create some expression with sliders and then tweak the deform bones, and very rarely should the tweak by symmetric.

    So yes, maybe this could be implemented later, and in that case the same code should be used with rigify as well. Using different conventions for the face and the body bones is ugly. But it doesn’t feel like a top priority.

  7. engetudouiti

    Yes I agree Thomas . As my side, I need to make it can return as default about bones which already converted bone name for MHX or Rig-fy bones. so it convert only daz bone pair as r.bone or l.bone (then MHX or rig fy converted rig use bone.r or bone.l then I can exclude those bones, when reset easy.

    (though I am now plan to contain default bone name as list, then atach to rig, so can return bone name more sefety)

    I think the rename request was needed untill you offer many function which relate with bone name. I rezuesated it before, but there is no many user at that time ^^;

    Now I do not think you can safety convert bone naming way without break many functions which you already offer for import pose, morph and rig conversion. ( blender now offer new mirror pose options with 2.83 , which can add delta mirror pose with use pair bone… so I sometimes use it. (then need to rename temporally)

  8. Alessandro Padovani

    Seems fair enough to me, I agree face expressions should rarely be simmetrical for good expressions. The .L .R notation would be nice to have and would help posing anyway, so when there’s some time to implement this it’s useful in my opinion.

  9. Domiek reporter

    Cool , thanks for all the info guys. I’m not sure how these open issues work, do I set the status to resolved at this point?

  10. engetudouiti

    If you hope to keep this request, keep open. So Thomas can easy remember, there was open request. Then can solve it when he can take time this issue.

    As my side I modified my script, to rename as XXXX.R or XXXX.L (to show same naming way as Rig-fy or MHX) only for pair rXXX , lXXX bones. at same time, Those renamed bones set flag as True, then keep the old bone name as bone property. (daz_name)

    When you “Return bone name” only True Flag pose bones return to default bone name. So now it work more safety.

    But I can not perfectly confirm,, those bone rename never cause issue for all driver which relate with bone, so You may test only untill you perfectlly confirm it work without problem.

    I afraid, even though you return bone name,, if there is case, blender not return all driver or key (though if it not work it seems blender side problem I think)

    One thing you should not with “ rename and return” , after you rename bone,, remove clothing which set armature for current rig.

    Blender only rename vertex group (relate with bone name), so if you do not keep armature modifier, and rename bone, the vertex group break. That means, when you rename and return name for your current purpose, keep all clothing with armature modifier active. I often exchange clothing, then it is matter. (sometimes I forget I have renamed bones, then change wear, return it, it easy cause issue)

  11. Thomas Larsson repo owner

    Implemented in last commit. Indeed it was less hard than I thought, because the drivers seem to rename themselves automagically. Something that is not automatically renamed are the bone targets for posebone constraints, so that had to be fixed. But I think it should work now.

  12. Domiek reporter

    Wow Thomas, you are truly incredible. I was more curious to see if I would break anything by renaming it myself, yet you somehow managed to implement the whole thing in less than a day. I’ve had coworkers take longer to respond to simple emails.

  13. Alessandro Padovani

    Yep, you know, he just finished dforce simulation for the daz outfits, so he got those spared five minutes to rewrite the face rig .. I am impressed myself and I’m really not used to. Sometime I wonder if he’s a alien under cover 😛

    Commit 2124f07 seems to work fine here.

  14. Log in to comment