Thanks Matt -
interesting - I've come across a custom hair normals shader that was giving a better, more "tube" or "cone" feel - that gave some more "presence" to the hairs. (More so at close up) - and in my understanding the flat vs cylindrical normals was the explanation. But I stand corrected. Still I've found the crosswise gradient as a bump useful on hair (and grass) to give them a less flat feel.

You're very right of course that flat ribbon is much more geometry efficient than cylinder - with all the memory advantages - but when 3Delight renders those beautiful hair 'tubes' without any geometric artifacts, much more convincing looking and much faster and at a fraction of the memory overhead - it's hard to complement MR on its very efficient choice of the flat ribbon. (apples and oranges, I know)

Yes, I did my own digging in rendersettings for hair on Barnyard. Having a screenful of unique characters, each with several patches of hair, with wildly different styles and requirements, 8 years ago, on MR, with requirement for a plethora of lights in the scene, all of them with (soft)shadows. The default settings fall down quick, as in: results not good enough plus too slow, but there is a lot to be got out MR in that respect yet. (which was the main reason for my reply to OP) I recall rasterizer and shadowmaps as two main ones for making it look better (also filtering and sampling ofcourse) - and then all those little parameters to get the rendertimes down. BSP, raydepth, and careful use of partitions and visibility settings! And from that production (and others after) I've never had the feeling of hair being a real bottleneck for lighting. Particles and effects much more so in those pre-pre-ICE days.

Cheers

-----Original Message----- From: Matt Lind
Sent: Sunday, December 07, 2014 2:03 AM
To: [email protected]
Subject: realistic hair shading SI-MR

@Peter

MR hair geometry is flat ribbon, but the normal is computed from a virtual
cylinder like a normal map with full control over shaft radius and taper
along the length.  For most practical purposes it should create the desired
look.  Using the utility shaders (math/lookup nodes) available in the
rendertree, you can read hair UV coords and surface normal yourself if you
want to shade them differently than the provided hair shaders.  Mental ray
stores hair information in the state which can be accessed by any shader
which cares to dig into that information.

The reason for flat ribbon is to allow hair to be represented as physical
geometry which can be styled and groomed, respond to dynamics, and use
material/texture shaders for shading while keeping memory consumption
low/reasonable (representing hair as geometry is hugely expensive).  Mental
ray does offer true cylinder hair, but to get cylinder hair would require
the hair shader to be implemented as a volume shader (which would have it's
own set of issues).  I believe that was how the original softimage hair
shader from 10 years ago was implemented.  It rendered hair convincingly for
the basics such as highlights, but most people didn't like it because as a
volume shader it did not permit styling and grooming (or at least not much
control over it), and rendered quite slow with frequent crashing as mental
ray volumes can be a bit finicky.

I experimented with hair rendering in mental ray for Barnyard all those
years ago.  From a purely technical point of view, writing shaders for hair
isn't too hard - it's just standard material/texture shader with additional
metadata for the hair.  The key to getting results is being smart with your
render settings.  You must be stringent on ray depth, recursion, shadow
type, memory limits, and so on.  Setting them too generously will make your
render times go through the roof as you're telling mental ray to wander and
find things to do which probably aren't necessary.  the default render
settings in Softimage are probably too generous for hair.


Matt

Reply via email to