Jump to content

controlling viscosity with color


tomwyn

Recommended Posts

Hi All,

 

I'm attempting to 'melt' a piece of geometry using viscosity, however I really need a high level of control over what points of the mesh start to melt & when. Plus a control over the actual viscosity value.

 

I struck upon the idea of using the point color attribute to control this, as I'd be able to paint on exactly where I want the effect & animate the paint over time. Or even use a separate piece of geo to trigger the colour change.

 

I can do this no problem, and have experience with transferring attribs etc. However, I'm not sure how I would go about creating the solid/static fluid object?

 

(i.e. Do I have to set the initial viscosity so high that the geo keeps it's shape as a fluid until the color changes? Or is there a more obvious correct way to achieve this?

 

Essentially what I'm trying to achieve is the melting angel in this video:

 

 

Travis explains that he used color, however I'm not entirely sure what he means by 'masking' the viscosity?

 

As usual I've done a lot of combing the forums here, but haven't quite found the answer I'm looking for... However this post & file by Mawi comes closest, although I really need to use a fluid sim as I need to export a viscosity attrib/colour pass for texturing!

 

http://forums.odforce.net/topic/12822-viscosity-for-flip/?hl=melting#entry80429

 

Any help would be super appreciated!

 

Thanks all.

Link to comment
Share on other sites

Hi Freaq,

 

Thanks for the response!

 

I understand that the color is being used as a driver, however it's implementing it in/out of a sopsolver in DOPs that I'm unfamiliar with & was hoping for some help on.

 

I've got so far with it here, but would massively appreciate if someone could point out (the probably glaringly obvious) thing that I'm missing here in my latest .hip file?

 

(This is the main thing I struggle with being self-taught, certain simple things elude me :/)

 

Thanks again! 

painted_viscosity_test_003.hip

Link to comment
Share on other sites

For starters, in your SOP Solver the AttribTransfer SOP has both "distance threshold" and "blend width" set to 0. In other words, you aren't transferring anything at all. Secondly, you create your Viscosity attribute with a value of 0 as well. Ie no viscosity. In a VOPSOP you can easily link the color -> viscosity, and with a Fit VOP inbetween; 0-1 of your color can be 0-10000 viscosity or whatever you like.

Link to comment
Share on other sites

Hi Skybar, thanks!

 

I knew it would be an obvious error like that, sorry about not being thorough enough in debugging my scene before sharing!

 

I have the attribute transferring ok now, but I have 2 last questions

 

What operator should I use to connect my color to viscosity in a vopsop (after the fit)?

 

Is it literally Cd > fit > attribcreate?

 

How do I set the object to be static, and only be viscous where the attribute is? (At the moment, it is all falling due to gravity.)

 

Thanks so much for your help and patience on what I'm sure are boring questions! :)

 

 

Link to comment
Share on other sites

Cant look at your file right now, but basically yes; in a VOPSOP take the Cd input -> vector to float VOP -> the first component (which is red) to a Fit VOP -> Bind Export VOP or Add Attribute VOP to viscosity.

As for having it static, it cant just float in the air if you also dont do something with the vel. But the easiest I reckon is just to have a collider underneath which it sits on, or just put it on the floor - coupled with a high initial viscosity.

  • Like 1
Link to comment
Share on other sites

I was going to find some time to check your file and deliver an example, but the one eetu left for you at SESI´s forum is simply a perfect example. (besides, he´s smarter than me, even though I would bet I´m more handsome).

Some people prefer to propagate with point clouds as opposed to just using a regular attribute transfer. Both methods are equally valid.

 

The only thing I would add is that in case your model is quite complex (like my pagoda) you want to treat the different parts of the model separately, this is, generating the points you will send to FLIPs per part of the model to have more control over detail.

Edited by Netvudu
  • Like 1
Link to comment
Share on other sites

Hi Skybar. Netvudu!

 

Thanks for your responses, I really appreciate it! :)

 

Had a few days away from this scene on another project, but stepped back to it this morning and took a slightly different approach (I've attached a .hip here). Still pretty ham handed, but it's getting a result that's close to what I was after.

 

A few more things I wanted to do included treating various parts of my model differently (mainly having different viscosities & distance threshold/blend width) such as you suggest Netvudu. If my interpretation is correct I'd create separate point clouds from each volume I want to treat separately, then create individual geometry to use as deformers. But I'm not sure how I'd blend all the deforming viscosities into a single attribute in the sopsolver.(i.e I might want one section to behave like wax, but another to go very watery. At the moment I'm setting this viscosity attrib at sop level in my deformer geo). Any ideas on this?

 

Secondly, I'd like add a bit of noise to the edges of the attrib transfer... My logic tells me I could do this in a vopsop with turbnoise somehow?

 

Thanks again for the responses, If you fancied having a look at my scene here, that would be absolutely fantastic ;)

 

Going to reply to Eetu on the sidefx forum now ;)

viscosity_example.hip

Link to comment
Share on other sites

Hi, I found some time to check your file.

It makes sense with a couple of "cave at"s.

First, I don´t recommend to scale down your FLIP grid box. You won´t speed up your sim at all, and you might have problems. Take into account the grid is just for the first sim that will advect the particles so plenty of res isn´t needed.

 

For a better understanding of FLIPs, you could read this http://www.danenglesson.com/images/portfolio/FLIP/rapport.pdf and avoid all the physics equations jargon. If you do it, you´ll see the rest is actually pretty informative.

 

Secondly, as for the transferring several viscosities, I don´t see the actual problem. You might find it simpler to assign the lower viscosity attribute to your "transferring boxes" inside the SOP Solver. That way, you can animate those values or make them time-dependant.

 

As for adding a noise, it´s a possibility, but frankly, you might get a similar "organic" effect with a point cloud setup and it´s probably faster as far as calculations go.

 

Regarding your interpretation of creating separate point clouds for each of the volumes, that´s correct. Just remember that those "volumes" come from whatever parts of the model you decide, so it´s up to you how much detail (i.e. points) you want for each area.

 

Allow me a final tip...don´t overdo your setup (not that your scene is overdone at all, just saying). I see many people creating really complex procedural setups that almost execute everything by themselves, and in the end they forget the most important part: the artistic touch. Sometimes a couple of keyframes are better than a complex procedural system. Find the best blend of both worlds.

 

Or said in a different way, a variable viscosity fluid animation in CG is NOT physics..it´s a painter´s brush ;)

 

Hope it helps.

  • Like 1
Link to comment
Share on other sites

Hi Netvudu!

 

Thanks for the long response & link. That PDF was very helpfull, as were your words of wisdom! ;)

 

After a while of trial and error I've got something which is working in a way that's really close to what I wanted in the beginning. Still chipping away at it... Have learned a hell of a lot in the past few days!

 

I totally agree that, when possible, a setup shouldn't be overdone... It's easy to get lost in the complexity sometimes. (Although it could be argued that the true art of Houdini seems to be in getting incredibly complex systems built in seemingly simple, elegant ways. :) )

Link to comment
Share on other sites

Right, I'm literally on the cusp of getting the exact effect that I want, except for one aspect that has eluded me for the past 2 days...

 

I'd like to keep my variable viscosity based on a noise transferring attributes, and have this set up nicely.

 

However I'd like to 'activate' my melt from the outside, working it's way in over time.

 

My instinct tells me to measure each points position from the geometry surface, but what to do once I have that is something I can't quite figure out & would really appreciate some help with.

 

Would I need to bypass gravity all together & just activate a force based on distance over time? Also, how would I keep the variation in viscosity in that case?

 

My brain is about to explode! ;)

 

Again, I've attached a scene file in the hopes that someone knowledgeable can help me out!

 

(I'll be able to answer some questions on here once this project is done... accumulating some great knowledge thanks to this super helpful community! :) )

 

thanks!

VISCOSITY_IN_FROM_SURFACE.hip

Edited by tomwyn
Link to comment
Share on other sites

Am attempting to create an SDF/VDB out of my geometry now, which will give me each voxels distance from the surface(?)... Then a matter of extracting that info & applying it to my simulation geo in some clever way I'm hoping!

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