Jump to content

Fur not following the surface normals...


v_m

Recommended Posts

Hi.

I'm trying to add fur to an animated character and my problem is that when adding an Edit node between Copy and Fur, to style the fur, when I deform the geometry all the edited hairs point in one direction, and don't follow the geometry normals anymore. So I'm loading the FurTextureMap example from Houdini Help and there is an Edit node there, exactly like mine... :) and when I deform the grid, their edited hairs follow the surface just fine, but if I add some more edits on that same Edit node, my edits have the above mentioned problem... anyone any ideas? Thanks in advance!

VM

Link to comment
Share on other sites

Hi Marc, thanks for replying!

Recompute Point Normals was indeed on, but this doesn't fix the problem.

I'm uploading a hip file with a simple example of a sphere rotated by bones, you can also deform the sphere, but even a simple rotation messes up the fur. The edit is applied to a few points at the tip of a few hairs, just scrub though the timeline and see what happens with the edited hairs, vs the non-edited ones.

Also, as I said before, uploading the Houdini FurTextureMap Example, and adding a deformer to the grid, this weird thing happens that the already existing edits in the Edit node follow the deformed surface just fine, but if I add some more edits on that same node, my edits don't follow the surface correctly.

I tried adding facet or point or Attrib Reorient (which btw I'm not sure exactly how to use in this fur context...), but for the sake of this simple example, I cleaned up the network to it's minimum. Thanks again for helping me!

VM

fur_edit_test.hip

Link to comment
Share on other sites

Hey VM

Yeah I can see why that wouldn't work :). The edit SOP will apply the transforms based on the position of the point at any given time, so if you move the point, then the relative transforms stored in the SOP will get thrown off. There's two ways to approach doing something like this (well, there may be more... I can only think of two right now ;)).

Firstly, if the surface that you're copying onto is only being transformed then you'll need to copy the hairs onto the non-transforming base geo, do your edits and then extract the transforms from the moving geo and apply them to the copied hair. But it will need to be done after all the edits.

Secondly, if the surface is deforming... as it probably will be, via bones or something. Then you'll need to capture the guide hairs with the bones and deform them accordingly.

Again, there might be a better way but those are the two that spring to mind immediately.

Cheers

M

Link to comment
Share on other sites

wow, thanks Marc,

capture hair guides with bones? have to try that out...

meanwhile I used a comb, which doesn't offer the same flexibility, but it's easier to... comb short fur at least. the comb is inserted before the skin deformations, but i still have fur guides/normal not following 100% the skin (they do follow, but more like 60%...). I did pay attention to avoiding normals being recalculated, as much as I could... I don't understand what's happening yet, but I will have to dig some more into it. thanks again for helping me!

Link to comment
Share on other sites

well, capturing fur along with geometry works fine, but I haven't managed to find a way to paint weights, I'm trying to see if I can paint the deforming geometry separately and then get that information somehow transfered to the hairs... any ideas?

also, is there an elegant way to subdivide the geometry for rendering, and have the fur stick to the subdivided version, or should I just add subdivision to the geometry - and look at my scene evaluating very slowly?

thanks again!! :D

Edited by v_m
Link to comment
Share on other sites

wohoooo, managed to transfer capture data with attribute transfer :D I didn't think it would be this easy.

but now I have another problem, I need to transfer blendshape deformations on my fur setup as well...

Edited by v_m
Link to comment
Share on other sites

thanks a lot edward, your example does work on that sphere, the thing is, I'm not sure yet why (but I'm digging), in a different scene where I'm trying to use it, it doesn't. I saved all my animation as a suite of bgeos, hopefully to get rid of whatever obscure problem I might have in the rig, and I'm using your fur network, where I simply replaced your rest and deformed geometry state with my bgeos. yet... the edit I made on the fur keeps its position and doesn't follow the geometry. so, here are my questions, because I don't understand your network too well...

why the Default and Value of the attribcreate are 0 0 0 1? what does that 1 mean?

why are you creating another attribute before the edit and what's it doing? (or in other words, what is that new 'orient' attribute?)

thanks again!!

VM

Link to comment
Share on other sites

  • 4 weeks later...

Hmm ... somehow missed this post. The orient attribute is a quaternion so (0, 0, 0, 1) just means no rotation. The Edit SOP will use the "orient" attribute if you have Use Orient Attribute turned on in its parameters. However, the copy sop will always use the orient attribute if it sees it, which we don't want it to. So we rename it to "orient_init" until just right before the Edit SOP. I'm not sure why you couldn't get it to work though.

Link to comment
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.
Note: Your post will require moderator approval before it will be visible.

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.

×
×
  • Create New...