Any Tips on how to do a Mirror Capture Weights?

   4899   8   1
User Avatar
Member
32 posts
Joined: Feb. 2007
Offline
I am trying to figure out why the mirror capture wieghts is not working correctly in my work. Any tips on how to use this tool?

Thank you again, and again

Cory
User Avatar
Member
7720 posts
Joined: July 2005
Offline
First choose ALL the points to mirror. Now choose all the bones that you want to mirror, including the spine bones. Now pick all the bones that you want to mirror to, including the spine bones again. Also, when you pick the bones you must pick them in the same order in both cases so that they match up. After you're done the mirroring, you can fix picking mistakes using the spreadsheet in the tool.

Finally, there's different modes on the CaptureMirror SOP depending on whether you want to throw the away weights on the target side, or that you want to mirror them as well. I never remember what the options mean, I just randomly change them until it gives me the desired result.
User Avatar
Staff
3455 posts
Joined: July 2005
Offline
( assuming symmetrical geometry, centered in Y )

1 - create a point group that contains all the points on one side of your geometry - including the center points call it L_side_Pt (or whatever)
2 - create a point group that contains all the points on the other side of your geometry - including the center points call it R_side_Pt (or whatever)
3 - in the viewport
TAB > mirror capture
select a few points on one side (R_side_Pt) you don't have pick all of them, even one will be fine for this step
4 - pick the SOURCE bones in an order that you can remember - write it down if you need to
5 - DO NOT trust the auto selection that houdini gives you for the destination bones - LMB in empty space to clear the selection then pick the destination bones in the same order that you picked the source bones - substituting the corresponding bones of course
6 - inside your geometry node select the capturemirror SOP
7 - delete the points that were selected
8 - put one of your point groups in the Destination Group field with the down arrow thingy (R_side_Pt)
9 - revert the direction stuff to default

that should do it.

post a file if it doesn't help.
Michael Goldfarb | www.odforce.net
Training Lead
SideFX
www.sidefx.com
User Avatar
Member
1755 posts
Joined: March 2014
Offline
I've been googling issues about “skinning” in Houdini and the last search brought me here, a 10 yrs old thread.
I'm having difficulties mirroring capture weights (the difficulties are not just about mirroring, but I'm going to address just that here).

The main difficulty I'm identifying here is the selection of points. I have created groups of points for the two halves, but I'm having difficulties integrating this feature (group creation) into this workflow.

For example, in XSI I'd create a point group (“cluster” in XSI jargon) with one half and use it each time I wanted to mirror the weights.
It is a few clicks process - 1-select the group (cluster), 2-select its components (its points in this case), 3-click “mirror weights”. Done.

I have created groups for both halves. Selecting the source goes smoothly, but when asked to select the “destination” I'm sent to Scene level. Going back to SOP to select the other half (group) is akin to trying something you never trusted that will work and being disappointed when you discover that you were right.

10 - hope for the better because there's plenty of room
User Avatar
Member
710 posts
Joined: July 2005
Offline
Hmm, I haven't done any rigging in a long time but I don't think that's the workflow now. There aren't separate fields for Source or Destination points in the Capture Mirror SOP (at least not anymore). You start at Object level (or get kicked there if you're in SOPs) and select your points. Everything afterwards looks like a handshake between bones+associated weights, and their mirrored counterparts.

I just made a little box/noodle/man and tried the process myself:

1) Invoke ‘Mirror Capture Weights’ at Obj or SOP level (again, the latter will send you to Obj).
2) Select the destination points. There is no way to select a pre-existing group from SOP land and none of the nice stuff like pre-selection highlighting or Select Visible Geometry Only works here. Boooo.
3) Select source bones, being mindful of what Houdini selects for you automatically. Better just to select the bones in order yourself. Enter or Shift+RMB to complete.
4) Select destination bones, again same caveats as step 3.
5) Adjust the mirror origin because it probably won't be where you want it.
6) Ta-daaa! Wait… that didn't work. So it seems that the Capture Mirror SOP won't be able to see any bones that were created after the original geometry capture. I guess that makes sense, but didn't think of it at first and wondered why the From/To fields in the Capture Mirror SOP weren't seeing my mirrored bones. After re-capturing my guy the process worked properly. Also be mindful of what's going on in your SOPnet with regards to node selection/visibility flags. For example, if the display flag is on your Bone Deform SOP, but you have another SOP above selected like Capture Layer Paint, you won't be able to see your point selection at the object level!

So the process wasn't really buggy like I originally thought, but it's not as polished as it could be either.
User Avatar
Member
1755 posts
Joined: March 2014
Offline
I think there's something inherently rotten with a viewport workflow where you have to select a metric shit-ton of elements/objects and this is on top of another, more general, workflow issue I currently have*.

I'm working on a creature to which I've created a fully custom rig (great exercise for digging a bit deeper into rigging) and using the current viewport workflow has not yielded the expected results. I also tried the more traditional Houdini approach, i.e. using the viewport as a mere viewer, and although feeding a pre-made group to capturemirror doesn't produce any errors, it still produces wacky results. I'm suspecting it might be my fault, so I'll keep investigating before shouting “bugs!”.

*It's great that there's a shelf tool that gets you through the steps with a picking session, as is the case for all other tools, which are great for simple cases but in some situations, like this one, a small bump in the procedural workflow is in order IMO.
So I'll open a new thread about that, since it concerns all Houdini users.
User Avatar
Staff
3455 posts
Joined: July 2005
Offline
I go through this in an upcoming tutorial but in brief:

I use the Mirror Weights tool just to get things started and then do the rest by hand on the node itself.
first I make a point group for my ‘destination’ side
then I use the shelf tool and I'm prompted for the destination points - I just pick a few points on that side
then I select the source and destination bones
once the tool is finished I go to the SOP and replace the few points I picked with the destination point group.
set the origin to (0,0,0)
direction to 1 or -1 (depending on which direction I'm going)
Michael Goldfarb | www.odforce.net
Training Lead
SideFX
www.sidefx.com
User Avatar
Member
1755 posts
Joined: March 2014
Offline
Hi Michael,
I've understood from your old post and followed this workflow from the start. The issue is not with the selection of the points - I have managed to use the group I was creating. Don't know what I did wrong, but the group is recognized and used now.

The problem is with the bone selection. I have proposed some improvements here [www.sidefx.com] addressing this workflow problem.

For now, I have successfully overcome this difficulty - my mind went back to my brain from my clenching teeth and used a text editor to readjust the order of the bones in those two lists, which didn't take me that long thanks to an old habit of using a naming convention.

I hope everyone agrees, this is not an optimal workflow.
User Avatar
Member
40 posts
Joined: March 2018
Offline
I agree that the current mirror weights process requires too many steps. Working with the results of the autorigger for example, its quite laborious trying to single out the bones and hoping its all correct.

In most cases I think this could be made automatic, maybe by inferring from a mirror plane whichever points and bones lie either side of it.

As a counter-example, Maya's mirror weights tool is much simpler.

Is it worth sending an RFE for something like this?

Sorry to ressurect a dead thread, seemed not worth a new topic just to complain!
  • Quick Links