Jump to content

Houdini Fur - Normals Pass


Recommended Posts

Anyone know how to get a normals pass working on Houdini fur?

If you just make a polygon sphere and apply the shelf tool fur to it, and then make sure that the final rendered hair curves have a normals attribute on them, I would have thought that just by adding an image plane for "N" in a mantra node would give you a working normals pass. It seems that whilst the underlying sphere renders correctly in the normals pass, the hairs just come out black. I was wondering if I might have to export out normals from inside the CVEX shader or something. Anyway, everything I have tried so far doesn't work. Anyone have any ideas?

Cheers!

Link to comment
Share on other sites

not sure if this will get you correct normals but

go to your hair material and connect Hair Normal VOP to N port in surface_output node

you can play with Do Rounding option on Hair Normal VOP

Link to comment
Share on other sites

Hi Thom,

Having a quick look at the vex code in the three hair models inside the Hair shader used by the Fur Tools, all three normalize the input N to nN and N is the global N since there is no user-supplied N input in to the top level VOP.

From this, I would just put down a new Global Inputs VOP, wire the N from that in to a Normalize VOP then either wire this in to the N tab of the Output VOP or export a net new attribute called nN using a Bind Export VOP.

At least you should be exporting the normals that are used by the three hair bsdf lighting models.

I personally haven't tried to use these normals to do augmented lighting in comp. Please give this a try and see if they work.

  • Like 1
Link to comment
Share on other sites

Cool, I just tried it out and I do indeed get some form of normals pass on the hairs and they seem to not just be one block colour per hair but be a varying colour over the length of each hair which is interesting.

I was kind of expecting that by passing normals from the skin mesh to the hairs that each hair would have the same value of "normal" across the length of each hair... I hope it is a good thing that they don't.

I am going to try using this for relighting and see it it actually works...

Link to comment
Share on other sites

Afaik physically based hair bsdfs don't use N at all despite its surface normal is connected to global N. You can change it to what ever you like, it won't do anything to the image. Also current hair procedural produces geometry which doesn't have implicit normals for whatever reason (I assume optimization). Hair is a flat ribbon, shaded only on a single edge (thus could not have an automatic normals from a surface derivatives?). So as anim suggested using Hair Normal Vop is a way to go (it computes normals from a direction of a hair an eye).

Link to comment
Share on other sites

Oh right I see. So your saying that I don't even need to bother passing an "N" attribute from my skin mesh to my rendered hairs, I can just generate some normals using the "hair normal" VOP in the shader at render time?

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