Welcome to od|forum

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.

Marc

Hair revisited

225 posts in this topic

It was indeed well done. It also was styled in the best manner to handle each case perfectly. The little speedster's hair was slicked back all the time. and if you saw it move closely it was the outer areas which moved. The layered style to the hair cut and the look help them a lot. The same could be said for the daughter and the mother. The straighter the hair the easier it is for the deformations to occur. They had some excellent subtle effects of brushing aside hair which were very well done. Like almost everything in the movie, the stylized looked helped them more than a regular auidence will ever know.

-k

Share this post


Link to post
Share on other sites
I play around the "fake fur" rendering from B Goldman (1997)

http://www.cs.washington.edu/homes/dgoldman/fakefur/

I'de like to know what you think about it ?

The opacity method is what i hack in my own shader. I very quickly see how it improved the fur but i don't understand how to have an optimal setup for the probability setting "number of hair in a sample region" & "local density of hair". Any clue ?

the result i've for now:

cat.sit.jpg

thanks

14254[/snapback]

That is amazing, very nice!

Could you tell me more? How you implemented it? Possibly a nice tutorial, I really like all your other tutorials :D

Share this post


Link to post
Share on other sites

Hello,

Sorry for delays in response.

This cat is not so bad now i look at it again :-)

About the way i wrote the shader around the FakeFur.

I follow the shader description about Ambient, diffuse and specular lights functions. I do the same for the opacity function.

A tutorial, that's certainly the best way to organise knowledges. I will do that again, hmm. But currently i need myself some ...

francois

Share this post


Link to post
Share on other sites
Yeah, saw this at Siggraph when it came out but don't know if anyone has done it yet (outside of perhaps Joe Alter). Did anyone notice the hair shading in the Incredibles? It was beautiful.

14788[/snapback]

Some time ago I implemented Marschener

Share this post


Link to post
Share on other sites
Someone here (Serge) implemented Marscheners paper in Renderman RSL a couple of weeks ago. No-one has taken the time to comvert it to VEX yet. Unfortunately it was developed on the company dollar so we can't share it here without red tape. The results look pretty good so far! IIRC, he didn't mention mistakes, but did have to do quite a bit of reverse engineering of the formulae to get it into shader-land. Perhaps I'll point him to this thread so you can share experiences since he was looking around for someone who has done it before he started.

Any results you can post up? I'll see if we can post a sheet of hair rendered from his implementation. :)

15419[/snapback]

Yes... :-) Here are some results of my near field approach. They do not look that impressive, because they were all rendered with simple raytracing.... The (left) dark hair model looks similar, when using Marscheners model instead, the blond hair totally different !

Arno

post-776-1102614892.jpg

Share this post


Link to post
Share on other sites

Hello Arno,

Serge here. Just went through the joy of implementing the Marschener hair model as Jason has mentioned. I was curious what the nature of the mistakes were that you found. While I can't say I found anything in the paper the jumps out at me as a flaw I found I had to do a great deal of work to reconstruct the model from what was published.

I was also wondering what you might have that is publically available from your VMV2004 presentation. While our first use of this shading model is basically for a dark haired actor being viewed and lit at a distance , I have no doubt that we will soon find the need for closeups.

Cheers!

Serge

Some time ago I implemented Marschener

Share this post


Link to post
Share on other sites
Hello Arno,

Serge here. Just went through the joy of implementing the Marschener hair model as Jason has mentioned. I was curious what the nature of the mistakes were that you found. While I can't say I found anything in the paper the jumps out at me as a flaw I found I had to do a great deal of work to reconstruct the model from what was published.

I was also wondering what you might have that is publically available from your VMV2004 presentation. While our first use of this shading model is basically for a dark haired actor being viewed and lit at a distance , I have no doubt that we will soon find the need for closeups.

Cheers!

Serge

15422[/snapback]

Hi Serge,

I had the joy about a year ago... :-D

Mistakes ?! Right now I remember two of them...

1.) the absorption length (the length the ray covers inside the hair) is wrong

2.) the (total) fresnel factor is wrong

Are you are interested in going into detail ?! Do you need any additional information ?

Arno

Oh I forgot:

3.) the final proof went totally wrong (but the result is correct) :-)

Share this post


Link to post
Share on other sites

Very interesting!

Are you are interested in going into detail ?! Do you need any additional information ?

15423[/snapback]

I confess that I haven't tried to implement this paper, but I for one would love it if you could go into more detail about the mistakes you've found (if there are any others) -- it would certainly help things along for the time when I do get around to trying to implement it ;)

TIA.

Cheers!

Share this post


Link to post
Share on other sites

I like those images, Arno. Can I ask - was you implementation in VEX or RSL or something else?

Share this post


Link to post
Share on other sites
...

I was also wondering what you might have that is publically available from your VMV2004 presentation. While our first use of this shading model is basically for a dark haired actor being viewed and lit at a distance , I have no doubt that we will soon find the need for closeups.

...

15422[/snapback]

I

Share this post


Link to post
Share on other sites

Arno,

Thanks for the resoponce.

The absorbtion length error seems like something that would not have too bad of an effect on the operation of the model, though it certainly may throw off the relationship between the R, TT and TRT components

As for the fresnel I didn't look that closely at his formula but understood the gist of the argument to be that at each reflection/refraction interface the light energy is partitioned between the relflection and refraction. And, in the course of making those calculations you have to use the effective index of refraction. Also, for each such interface you have to make sure at the next interface you include the properly diminished amount of light given the previous reflections and refractions.

On a side note, I looked into the commonly published fresnel equations for the partitioning of energy between reflections and refractions and immediately ran into a physics issue I wasn't sure how to translate into the calculations commonly done in computer graphics. Specifically, the fresnel equations actually give seperate caluclations for the E and B (electric and magnetic) components of the light wave. I ultimately took the easy way out and simply used the fresnel calculation available in RSL and found the reflection coefficient and used one minus that as the refraction coefficient. Not entirely satisfying from a physical standpoint but it seemed an adequate approximation. I was wondering if you had any comment on how to properly apply the fresnel equation from physics into the realm of computer graphics,

Cheers!

Serge

Hi Serge,

I had the joy about a year ago... :-D

Mistakes ?! Right now I remember two of them...

1.) the absorption length (the length the ray covers inside the hair) is wrong

2.) the (total) fresnel factor is wrong

Are you are interested in going into detail ?! Do you need any additional information ?

Arno

Oh I forgot:

3.) the final proof went totally wrong (but the result is correct) :-)

15423[/snapback]

Share this post


Link to post
Share on other sites

Hi Serge,

im in a hurry so I have not enough tiime to answer your question in detail... I think you use the Fresnel-Schlick approximation, right ?! The difference is not that big compared to the "real" Fresnel equation... But if you are interested, I could sent you the C-source of my optimized "real" Fresnel function...

How do you calculate theta_t (the "inclination inside the hair") ???

Cheers!

Arno

Share this post


Link to post
Share on other sites
Any results you can post up? I'll see if we can post a sheet of hair rendered from his implementation. :)

15419[/snapback]

Hello Jason,

I

Share this post


Link to post
Share on other sites
Yes... :-) Here are some results of my near field approach. They do not look that impressive, because they were all rendered with simple raytracing.... The (left) dark hair model looks similar, when using  Marscheners model instead, the blond hair totally different !

Arno

15421[/snapback]

That's rather amazing!

Share this post


Link to post
Share on other sites
I was wondering if you had any comment on how  to properly apply the fresnel equation from physics into the realm of computer graphics,

Cheers!

Serge

15438[/snapback]

Hello Serge,

the answer is fairly simple:

For plane electro magnetic waves holds: I~E*E. If one plugs this into the standard Fresnel equations and then calculate the quotient Iout/Iin one gets the reflectivity/refractivity coefficients...

(I=Intensity, E = strength of the electric field)

Finally you get a nice and simple formula...

I agree Jason, it would be very interesting to compare some rendering results of the same geometry... Since I use my own renderer, I

Share this post


Link to post
Share on other sites

Maybe you could add support for the .PLY file format and then it could easily exchange data with Houdini. I haven't looked hard enough at the format to see if it has the information you need. I assume that we can just use the first vertex of a curve polygon to denote it as the root vertex.

If you look on google, there seems to be tonnes of information and free code to read/write .PLY files.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now