Jump to content
Eucalyptus

Ocean_Eval shader for whitecaps

Recommended Posts

I realize this may be a pretty dumb question, but I've searched around the forums and even the HOT documentation on how to really use the Ocean_Eval shader that comes with the package, to get a nice wave cresting/white cap effect.

The tutorial I initially followed (on Digital Tutors) to get familiar with the HOT uses a fresnel and lighting shader to get some color (I assume it's quite old), and then just adds a noise shader for random foam. It doesn't however go through how to get nice whitecaps. It seems people are getting nice whitecap effects by using the Ocean_eval shader, hence my question.

Any beginner help on using the shader to get some whitecaps/other realistic coloring is helpful. Not familiar with shaders at all really, so clear terms are appreciated!

As a follow-up question, how would I emit from just the tops of the waves for particles? I imagine it would use a similar idea as producing the whitecaps, except applied to an emitter?

Cheers

Edited by Eucalyptus

Share this post


Link to post
Share on other sites

EigenValues are what you want.

You can try it out in SOPs if you're creating your ocean there, just stick the EigenValue output into the color global output.

Using a fit or smooth vop you can change how much of a whitecap you want.

Export the attribute as what you want in the vop using the (addAttribute) vop.

In the shader (importAttribute) to pull that attribute back in and (add) to the bit of the shader you want.

If you're doing it straight in the shader you just do the same thing but you don't have to import the attribute of course.

Christian

Share this post


Link to post
Share on other sites

Thanks Christian!

I think I'd rather do it right in the Shaders, seems like better practice. When I add in the eigenvalues with a fit or a smooth after, into my Add (my other shaders fresnel and lighting), I can't seem to isolate just the tips of the waves. Even with rolloff, it seems to just tint the entire ocean lighter.

Is it just precise tweaking needed? Do the eigenvalues need to have an input from my global values inside the shader?

Cheers

Edited by Eucalyptus

Share this post


Link to post
Share on other sites

Sorry to bump this...

I've been working a bit more on my Ocean scene, and while everything else looks pretty good I think... I still don't understand this eigenvalue setup.

Currently I have a simple shader setup that mostly follows that of the Digital Tutors HOT videos, as seen in screenshot. I'm wondering if there's a way to add whitecaps easily to what I already have, or if the eigenvalues overwrites everything and is one whole entity?

I have the option in my VOPSurface to put in eigenvalues, as well as an Hocean_Eval (the HOT shader), but I'm not sure how or where to "hook them up". I know almost nothing of shaders as mentioned, and have done quite some research but can't quite figure this out and feel like an idiot haha.

I've read I can add whitecaps/spray using point clouds too? Is this possible on a junior-intermediate complexity level?

If any step by step instructions on the actual file could help me to achieve a whitecap look that would be amazing. My ocean looks very plastic-ish. (Any way to make the shader I have now more "grainy" would be good too). :(

Thanks again, really appreciate it. Let me know if you have any problems (besides a texture error for my sky image) when opening. Also, if anyone doesn't want to go through the trouble of opening and looking at scene, I've included a screenshot of my VOPSurface shader, in case it's just a simple hookup that you can explain to get some whitecaps going.

I promise I'm not dumb and you aren't wasting your time - just trying to learn shaders!

wtvhtt.jpg

Ocean_14_Camera.hip

Share this post


Link to post
Share on other sites

hot vop outputs a min/max eigenvalue scalar value just plug the max into color (or with a fit) to see what christian is talking about

Share this post


Link to post
Share on other sites

I might be crazy, but I think with this compile for my H12 version something is... wrong?

I have Hocean_Eval and an Eigenvalues SHOP node... but on the SOP level my Hocean node (geometry wave creator) doesn't have an eigenvalues checkbox, and I can't make a Hocean VOP node in my geometry. Just a regular VOP SOP.

If I plug my HOcean_ocean_eval1 node with Max eigenvalues into my Shaders surface color, I just get a weird red grid showing all my mesh edges as red and the rest of the mesh purple/blue.

The eigenvalues SHOP node I have just has a Real roots, Real values, and Imaginary values output with an input, and if I plug that into my surface color it's just all white.

Edited by Eucalyptus

Share this post


Link to post
Share on other sites

Sorry for not getting back to you, I don't actually have HOT compiled at home here so doing it purely from memory.

Look at the HOT node, 3rd and 4th outputs are float values (min and max), play with them, stick them straight into color.

Share this post


Link to post
Share on other sites

Oh no problem at all Christian. I do appreciate any responses but know that people who come here have lives, and jobs :) This is just for my own personal learning so no huge time constraint anyways.

When I do what I assumed you meant, the 3rd and 4th float values on the HOcean_Eval node in the SHOP level, this is what I get:

http://i46.tinypic.com/2yngci0.jpg

Do I have to multiply them or anything? I can only plug one into the Surface Color output at a time obviously.

I made sure all the sliders were the same as in my Hocean SOP that is producing the waves. I guess I just expected there to be settings similar to a Ramp Param or something, to let me determine where the wave crests, etc. It seems to just made a triangulated grid sort of gradient at the moment.

Share this post


Link to post
Share on other sites

Well you're not doing anything there, there's an error on the node, I'd hazard a guess that it's because you've got nothing plugged into it ;)

Also, you seem to have enough tessellation in the poly version, so why don't you do it in the vopsop that creates that just to see it working.

Plug the minEgen into a colormix and then into the color out, you should see what it's meant to be doing.

I'll compile HOT later to make you a test scene if you're still having trouble.

Christian

Share this post


Link to post
Share on other sites

EDIT: Dear god - it's working. I have a color highlighting the tips of my waves in my viewport. SUCCESS.

I assume I can now replace my Color Mix with a shader I want for the tips of the waves, and then another for the bottom of the waves with the MaxEigen value output?

Question now is - because this seems to only be working in my viewport, and not in my render, I assume I just have to replicate this VOPSOP setup in my actual SHOP node? Or is there a way to have the render look at this VOPSOP?

Edited by Eucalyptus

Share this post


Link to post
Share on other sites

Been a while since I've been to this thread what with the holidays and all, but I opened up this project the other day and saw that I had a "whitecap" effect of shading in my viewport at least, using a VOPSOP after my H_ocean node in the SOP level.

Just wondering if you still had time to put together a quick edit of how to link shaders, or colors, or anything in my actual render to choose the whitecap effect and ocean shades? Played a bit but, shaders are one thing I still really can't wrap my head around in Houdini.

Cheers

Edited by Eucalyptus

Share this post


Link to post
Share on other sites

EigenValues are what you want.

You can try it out in SOPs if you're creating your ocean there, just stick the EigenValue output into the color global output.

Using a fit or smooth vop you can change how much of a whitecap you want.

Export the attribute as what you want in the vop using the (addAttribute) vop.

In the shader (importAttribute) to pull that attribute back in and (add) to the bit of the shader you want.

If you're doing it straight in the shader you just do the same thing but you don't have to import the attribute of course.

Christian

Hi , how would you suggest laggin the cusp in chop and using it as a mask for some noise shader for foam generation ,, here is the original post http://forums.odforc...sop/#entry79847

Share this post


Link to post
Share on other sites

If you want to lag the attribute, I'd do it in the SOPSolver. I just did a quick test for someone else today so guess I'll just show you that.

Basically you just take the max from the last frame and current frame as well as subtracting a little. Then you just multiply a noise pattern by the attribute.

pointsFade.hip

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

×