Jump to content

Human Hair with Houdini Fur


up4

Recommended Posts

Hi all,

 

With all the buzz around digital humans, I wanted to research that within Houdini. I have some questions about Houdini's fur engine when used for human hair.

 

Please refer to attached pictures. The skin shader is from Dany Bittel. I might start another thread on human skin once I understand this shader a little better. I have a problem with intersecting geometry (see "gold mascara" around the eyes) and displacement now (I removed displacement for now because it caused unexpected results). I will focus only on hair for now. Starting with the face.

 

First, thanks to Mawi and Illuminator on this thread,I could integrate rough UDIM textures to feed the fur system for hair density (first picture).

 

Here is my first question. I don't entirely understand the relationship between the fur node's "Render Density" and the furdensity attribute. Æsthetically, should I base the "Render Density" parameter on the area where one finds maximum density (and furdensity attribute map at its whitest) on the human body (I assume this to be hair on the sides and back of the head)? Or an are where hair density is more "average" (like the eyebrows area)? What would make more sense?

 

Once I'm decided over the best strategy for a "Render Density" value, I will paint a comprehensive furdensity attribute map accordingly (based on 8-bit integer values):

 

  1. hair on the sides and back of the head: 255
  2. hair on the top of the head: 170-200
  3. eyebrows: 128-200
  4. beard and mustache: 100-128
  5. sideburns: gradient from ~255 to 100-128
  6. cheeks: gradient from 0 to 100-128

 

Is there any guide or research (easily applicable) on this? Right now, I'm only analyzing pictures of facially hairy men. It might be the best method anyway.

 

Once I was generally satisfied with hair density, I did a rough normal combing for fur direction (second picture). Using a visualization method from Andrew Brown that is quite fast. Here I have a second set of questions:

 

  • I don't understand the skin offsetting when combing. Can anyone explain it a little bit to me? What would be an ideal displacement distance for human hair if such a question even makes sense (in the vopsop, I used a value of 0.005 from the default value of 0.01 because I couldn't reach the mustache area under the nose properly otherwise). Is it somewhat related to the combsop's "comb lift" parameter (I left it to the default 0.5)? Needless to say, I do not understand at all the "comb lift" parameter either.
  • the paintsop's internal storage being a little opaque to me, I would like to save the resulting normal maps to an UDIM set of patches. is that even possible?
  • at render time, after combing, I get that some generated geometry is "out of bounds", could it be because some hair tips are trying to re-enter the skin surface? It all goes back to normal after I "Reset All Changes" on the combsop. Why is that happening?

 

That's it for now. I have many days of exploration ahead of me!

 

 

Thanks in advance for comments + advice.

 

Regards,

 

Vincent

 

 

 

post-12164-0-51380900-1416182084_thumb.j

Edited by up4
Link to comment
Share on other sites

So I want to save fur attributes obtained through combing/painting to a UDIM texture set.

 

I used a sphere for this test case to which I have added UVs and a rest sop before adding fur. I paint fur direction. I toggle visibility on for the skin object inside the fur object. I create a micropolygon Mantra ROP where I override the resolution. I set the UV render object to the skin object. I add an extra plane for the "furdirection" "VEX Variable". I click render on the ROP.

 

This is what I get:

 

 

post-12164-0-31199600-1416705709_thumb.p

 

 

I guess having scattered points instead of the original geo points wouldn't be a problem if I was also getting smoothly interpolated attribute values for the whole surface at the resolution I chose, but instead, I'm only getting values at point location. Would a smooth interpolation of the attribute values over the whole surface be possible? If so, how? I'm not even sure that I'm getting the actual attribute I want as I didn't try to feed it back to the surface as an attribute map.

 

Thanks in advance for the help.

 

Regards,

 

Vincent

Link to comment
Share on other sites

  • 4 weeks later...

Call me crazy, but I will try to work a minimal fur setup for this based exclusively on the Fur SOP (as opposed to the Fur SOP for viz and the Fur Mantra procedural for rendering) and attribute maps (instead of guide, separation and clumping geometry). I want things to be simple and portable, easy to collaborate with map painting artists (the attribute maps should be easy to lay over the skin textures with the same UV UDIM mapping). Keeping it minimal and portable is important since I don't know what the H14 Fur framework will look like and I don't want to do it again. And having it all interoperable with Arnold and Renderman is a plus too. I abandoned working with Blender because it won't allow exporting normal maps in UV tangent space coordinates like I seem to be able to do with Houdini and Mantra.

 

Anyways, now I'm wondering if there is any gotcha anyone here can think of with a fur system relying only on the Fur SOP (besides performance: I work on a dual-Xeon workstation with a 3-way SLI GPU configuration). Is there anything I should know now about this method?

 

Also, I looked everywhere for the reason why when painting and combing on the skin, the target geometry is a positive offset displacement of the original skin surface that looks swollen. Does anybody knows why? It looks like there is indeed a difference, but I don't know why.

 

Happy Holidays!

Link to comment
Share on other sites

Call me crazy, but I will try to work a minimal fur setup for this based exclusively on the Fur SOP (as opposed to the Fur SOP for viz and the Fur Mantra procedural for rendering)

I think this is absolutely OK. Our fur pipeline (in his second reincarnation) don't use mantra procedural. Our tests shows, that using procedural wont give us any benefits at all. It is if you render with Micropolygon engine, but not with PBR.

  • Like 1
Link to comment
Share on other sites

Hi! Thanks for your reply!

 

However I found one caveat with the Fur SOP: render time subdivision of the skin. As with most organic surfaces, I turn subdivision on at render time for the skin surface. It appears that the Mantra procedural has access to the subdivided skin before it generates the fur geometry. It is obviously not the case with the Fur SOP. I'm not sure what is the best way to handle that. Did you get and solve this with your SOP-only system? I don't want hair to intersect the skin or to float in the air…

 

Regards and happy holidays,

 

Vincent

Link to comment
Share on other sites

Call me crazy, but I will try to work a minimal fur setup for this based exclusively on the Fur SOP (as opposed to the Fur SOP for viz and the Fur Mantra procedural for rendering) and attribute maps (instead of guide, separation and clumping geometry). I want things to be simple and portable, easy to collaborate with map painting artists (the attribute maps should be easy to lay over the skin textures with the same UV UDIM mapping). Keeping it minimal and portable is important since I don't know what the H14 Fur framework will look like and I don't want to do it again. And having it all interoperable with Arnold and Renderman is a plus too. I abandoned working with Blender because it won't allow exporting normal maps in UV tangent space coordinates like I seem to be able to do with Houdini and Mantra.

 

Anyways, now I'm wondering if there is any gotcha anyone here can think of with a fur system relying only on the Fur SOP (besides performance: I work on a dual-Xeon workstation with a 3-way SLI GPU configuration). Is there anything I should know now about this method?

 

Also, I looked everywhere for the reason why when painting and combing on the skin, the target geometry is a positive offset displacement of the original skin surface that looks swollen. Does anybody knows why? It looks like there is indeed a difference, but I don't know why.

 

Happy Holidays!

I guess you already know this but...

The fur procedural is just the mantra part of the fur, the skin and Guide shader works perfectly without it.

The skin and guide shaders are almost like attribute vops with built in interpolation of skin and guide attributes. With the h13 introduction to generate geometry in cvex Im trying to find time to build my own fur SOP, skin and guide shaders with a bit more controll over the interpolation.

 

I dont like the procedural because you need so many nodes/networks in the render scene and in general I prefer to publish geometry instead of networks.

 

The offset you can find in fur/skin/displayoffset. Dont ask me what its good for, its one of those parm I drag to zero everytime I start with the fur shelf.

 

Hi! Thanks for your reply!

 

However I found one caveat with the Fur SOP: render time subdivision of the skin. As with most organic surfaces, I turn subdivision on at render time for the skin surface. It appears that the Mantra procedural has access to the subdivided skin before it generates the fur geometry. It is obviously not the case with the Fur SOP. I'm not sure what is the best way to handle that. Did you get and solve this with your SOP-only system? I don't want hair to intersect the skin or to float in the air…

 

Regards and happy holidays,

 

Vincent

The fur procedural doesnt generate fur on the subdivided surface. Ive seen some solution that involves displacing the strands, but usually I just subdivide the skin to a workable level.

Edited by mawi
Link to comment
Share on other sites

Hello!

I know that the CVEX shaders work with the fur sop but I have yet tot find how to extract the ones from the shelf setup and remove the references to other part of the network and make them completely independent. Or did you write yours from scratch?

But I didn't know whether the procedural generated hair on the original geo or the subdivided skin (it seemed that there was some subdivision, but I guess I was wrong). So thanks for the information. I think I will do a mix of subdivision on the skin geo copy I feed the fur sop and also offsetting it inwards with regards to the normal to avoid floating strands. With all of this, I see no more reason for the procedural, then.

Happy holidays! Thanks for taking the time.

Link to comment
Share on other sites

Hello!

I know that the CVEX shaders work with the fur sop but I have yet tot find how to extract the ones from the shelf setup and remove the references to other part of the network and make them completely independent. Or did you write yours from scratch?

But I didn't know whether the procedural generated hair on the original geo or the subdivided skin (it seemed that there was some subdivision, but I guess I was wrong). So thanks for the information. I think I will do a mix of subdivision on the skin geo copy I feed the fur sop and also offsetting it inwards with regards to the normal to avoid floating strands. With all of this, I see no more reason for the procedural, then.

Happy holidays! Thanks for taking the time.

Usually I use the default shaders with a few blocks I can slot in if I for example want to make the frizz length dependent or the guard hairs to be excluded from clumping.

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