bentraje Posted November 27, 2021 Share Posted November 27, 2021 (edited) Hi, By default (at least most tutorials), they use a biharmonic capture node that is equivalent to a standard/automatic/initial skinning in C4D/Maya. It works. But my workflow is to block each joint influence 1 by 1 and not let an algorithm decide it for me.Then later just smooth things out per region. I was thinking of two step 1) Create attributes/groups for each section of joint influence 2) Use attribute wrangle for an if else logic. (if you contain this attribute/group, full 1 weight otherwise, zero) Step #1 is easy enough. Just use attribute wrangle or a group node. Step #2 is tricky. The main reason is its a bit hard to access the attributes. With the help of this tokeru website under the procedural skinning section, I was able to get close. My remaining problem is "packing" weights for the bone deform consumption. See attached file below: Is there a way around this? weight_based_on_attributes_group_v1.2.hipncFetching info... Edited December 10, 2021 by bentraje Quote Link to comment Share on other sites More sharing options...
madebygeoff Posted November 28, 2021 Share Posted November 28, 2021 (edited) I'll take a look at this this afternoon and see why you're getting the out of range error, but just out of curiosity, is there any reason you're not using the proximity capture Matt and I suggested earlier? It seems like it does what you're trying to do with a single node. It doesn't allow for per point manual selection of the bone, but honestly that seems overkill for blocking, since you're still going to have to do a round of capture layer paint to blend the weights. proximity.hipncFetching info... Edited November 28, 2021 by madebygeoff Quote Link to comment Share on other sites More sharing options...
madebygeoff Posted November 28, 2021 Share Posted November 28, 2021 I think you're getting an error because you are missing the necessary metadata that the capture pack node needs. At the very least you need the list of joint names (the capture path) that reference the _index point attribute. Take a look at Matt's file under that procedural weighting section you linked to. Look at the "set_detail_attribs1" wrangle. That's where he's setting all the detail attributes that the pack SOP uses as metadata. You should be able to adapt that node to your setup and it should work. Quote Link to comment Share on other sites More sharing options...
bentraje Posted December 9, 2021 Author Share Posted December 9, 2021 Thanks for the prompt response @made.by.geoff And sorry for the late reply. Something came up. RE: any reason you're not using the proximity capture Matt and I suggested earlier I'm using it actually for most of the task. Just wondering if I can also brute force it using the point/attribute selection. RE: honestly that seems overkill for blocking, Yes, it is Nevertheless I'm interested in the future since there are cases there are polygon selection from other DCC models and it would be nice I can use them for blocking. RE: Look at the "set_detail_attribs1" wrangle. It took me some time to check it again since the example is in .hip (rather in .hipnc / .hiplc). Yea, it seems like this is a missing piece but I'm quite confused how it was set up since there is a hard coded data. You can see what I mean below. Quote Link to comment Share on other sites More sharing options...
madebygeoff Posted December 9, 2021 Share Posted December 9, 2021 This is getting into the dark rabbit hole of how Houdini stores its capture weights and I admit, I don't fully understand it. One thing you can do to start to reverse engineer it is just make a simple capture set up with the bone proximity node and then unpack it and take a look at what happens. Try adding a capture layer paint and mess around with the weights and then see what happens after the unpack. I attached a simple scene below. I think that 20 element array is a weird 4x5 matrix that is holding info about the skeleton points and their associated capture regions. It's basically a 4x4 transform matrix of each point/joint in the skeleton, plus an additional 4 elements that hold information about the size of that joint's capture region. Since in Matt's example, he starts with 18 points/joints all at the origin with the same orientation, the matrix is essentially the same for each joint. If you want to dig further into it, you can check this out: https://www.sidefx.com/docs/hdk/_h_d_k__geometry__capture.html Or maybe @mestela can weigh in? I'll try to dig into it a bit more tomorrow and see if I can help more. simple_capture.hipnc Quote Link to comment Share on other sites More sharing options...
bentraje Posted December 10, 2021 Author Share Posted December 10, 2021 @made.by.geoff RE: I think that 20 element array is a weird 4x5 matrix Ah gotcha. That make sense. Silly me haha. I used to see it in columns and rows haha like this 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 1 1 With that said, I was able to make it work (not quite fully procedural). But I got the basic idea working. Will tag this thread now solved. Thanks for the help! weight_based_on_attributes_group_v1.4.hipnc Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.