Difficult Fluid Cloud

difficult fluid cloud

What I want to get is highly detailed fluid cloud, It should have a overall shape, and detailed cloud pattern, like some small puffy areas, and some silk or streak shaped cloud at windy areas.

The way I done this is, first I paint a overall shape, then use turbulence field to get some puffy areas, then texture the fluid with trace depth at 6, and for the silk shape I paint some velocity at certain area turn on texture grid and let the velocity to smear the grid.

And the problem I have now:
1] How can I only let some certain areas have texture. What I want is only small amount of areas have high detailed texture, other areas just keep it as overall shape.
2] Those silk shapes really not blend in the cloud, it feels like a thick tapered cloud tube painted on top of the cloud. Why is this?
3] Get all these details is not all, I still need the cloud evolve. To let the overall shape change I use turbulence field, but it seems the field tend to average the density between voxels just like what diffuse will do even when I set the damp value really high like .5 to .7 , this damp value seems only slow down the evolve speed. while the field averaging the density, the cloud really seems like to fadeout because the opacity curve I set wont let you see the low density fluid. I animated the texture coordinate to change the small pattern, so I wont use it to change the overall shape or I'll lost the detail cloud pattern. So how can I solve this problem.
4] When the texture grid get smeared it wont back to its original state(not smeared), it just stay that way until another force smear it to another shape. So how can I let those silk shaped cloud become wavy and gradually fadeout, and let the grid back to its original state, so that area wont shaped like silk anymore.
5] When I use motionfield or collision to push the cloud for example a meteor fall from sky and penetrate the cloud, the cloud seems not been pushed away but simply fadeout just like I stated in my 3rd question, and voxel by voxel pattern changing is really easy to notice. the resolution of the fluid is 70x40x50, my computer simply wont allow me to make it denser, so how can I solve this.

Any tips are welcome and highly appreciated
Thanks in advance

Based on my experience i would suggest you to model polygonal clouds, then animate/deform them the way you want.
Use this geometry to emit in multiple fluid containers.
Use the points of the polygonal clouds as motionField ( or whatever you want combination of fields ), so you can precisely drive the motion of the fluids.
This technique solves a lot of problems. There is a lot more to say, but i am sure you get the idea.

Good luck.

Thank for the great tips pshipkov

QUOTE
Based on my experience i would suggest you to model polygonal clouds, then animate/deform them the way you want.
Use this geometry to emit in multiple fluid containers.

This is a great idea, it does solve the fadeout problem because the polygon constantly emit fluid.
And emit into multiple fluid containers will let me define different level of details in defferent containers. But still this is a really heavy solution especially for rendering.

QUOTE
Use the points of the polygonal clouds as motionField ( or whatever you want combination of fields ), so you can precisely drive the motion of the fluids.

This is what Iam not quite get. Do you mean use every vertex of mesh as a field?? Iam not sure how to do it. Or do you mean something else?

I tend to use multiple mesh as emitter and stack them up so I can easily deform them. But how heavy the geometry will be enough, for example, it should be like a 2 level smoothed poly cube or 3 level smoothed?

How would you solve the rolling cloud, for example, come fluid on the cloud outter surface roll into the cloud. It seems only rotate the ploygon emitter wont get that effect.

And I still dont know how to solve those silk shaped clouds, if dont use texture grid, then I must build a really high resolution container, and that is surely not acceptable(for the computer I use). Is there any other way?

Any further tips and explanations are welcome, and please keep them coming
Thanks in advance

Well, there is nothing like fast rendering voxels.
In fact the MR fluidShader does pretty good job.

The default fluidEmitters are very limited, they cannot read surface properties ( like point colors/attribs, or derive that from a texture ), so you will be forced to use multiple emitters anyway, or at least until you write your own ones.
This is the number one weak point ( for me at least ) in the fluid system.

QUOTE
This is what I am not quite get. Do you mean use every vertex of mesh as a field?? Iam not sure how to do it. sad.gif Or do you mean something else?

http://petershipkov.com/tutorials/forcefie...forcefields.htm
I think this is the 5th time in the last 1-2 months i am talking with somebody about that

You don't need too dense geometry, but yes, it all depends by the density of the fluidContainers you are emitting in.

I am not sure what is the problem you are facing with the "silk shaped clouds".

First of all I must say you really have good web site there. I actually learned alot!

QUOTE
In fact the MR fluidShader does pretty good job.

Do you mean use MR to render maya fluidShader or MR have a buidin fuildShader(I cant find it)? Or this shader only accessable through MR standalone?

QUOTE
I am not sure what is the problem you are facing with the "silk shaped clouds".

What I try to achieve is, simulate some cloud that in windy area been blown to some kind of like a silk flow in the air, the shape has to be really thin and still has patterns in it. All of my tries are base on smear texture grid idea. I tried low damp low force(the result is really hard to notice, almost no effect). I tried low damp high force(It like a explosion). I tried high damp high force(this give me some result, but the shape is still not like silk but like a thick tapered cloud tube, and this combination really give me voxel by voxel shape changing, I mean the smear effect poping in voxels, for example, the field entered first voxel then the smear effect suddenly poped out, when field entered next voxel the smear suddenly poped out in this voxel). And I only use motionField to smear the grid.

Another problem is:
When the texture grid get smeared it wont back to its original state(not smeared), it just stay that way until another force smear it to another shape. So how can I let the grid back to its original state GRADUALLY, so that area not smeared anymore.

Thanks in advance!

Thanks for the kind words.

I see what you mean now.
I will tell you what i did before for a somehow similar looking effect, not exactly what you try to acheive, but a lot of smearing involved.
I ended up using vortex fields and radial / newton fields.
It required a lot ot tweaking, but in general the idea was:
vortex fields located in different areas of the fluid container ( with big attenuation and big magnitude ) slowly smear the fluid inside their radius, at the same time radial or newton fields with approximately the same position as the vortex ones, used as centers of gravitaty, suck the fluids back, so they cannot escape from the vortex fields.
It kind of worked. I rendered 2k frames and didn't notice any poping.

Sorry may be I didnt state that clearly.

my motion field is parented under an object and the object are moving through container, it only takes about 1 frame to move from one voxel to the voxel beside it. So the silk should only use 2 frame to take shape(enter the voxel and leave the voxel, since the velocity is stored at the voxel face), its not gradually take shape. And big magnitude and big attenuation plus high damp is exactly the problem here, with high damp the velocity wont propagate far enough to surrounding voxels, so if you activate the velocity draw you will see really high velocity in the voxel which the motionField is currently in(because the big magnitude), and the voxels surronding it has really low velocity value, near 0(because the big attenuation and high damp). Then this is kind of velocity poping, and since texture grid is meared by velocity so the silk shape is poping voxel by voxel. For example, motionField enter voxel[1][2][3], the texture grid in this voxel is smeared, but surronding voxels not been smeared. when motionField enter voxel[2][2][3] which is beside the voxel[1][2][3] the texture grid in voxel[2][2][3] is smeared and also the voxel[1][2][3] is effected too, because enter voxel[2][2][3] is also means leave the voxel[1][2][3]. So whenever the motionField enters a voxel the conjunct two voxels will pop(smeared grid will pop, and what I mean pop is, suddenly change shape and shape changed drumaticaly).

But on the other hand I only want the grid been smeared when the object is passing through, so I have to keep the damp and attenuation high enough to keep the grid not been exploded away all together. So how can this poping effect been solved without higher the container resolution.

//////////

I also found another problem.
Since I let geometry constantly emit density into the container, the cloud become thicker and thicker. And the dissipation value is seams really tricky to set. The effect of this attr is totally depand on other parameters of the fluid like the total denstiy in the container or the resolution of the container. I almost have to find a specific dissipation value for every individual fluid container. I also write an expression which can totally solve this problem, the idea is:
if (currentTotalDensity > totalDensityCap)
individualVoxelDensity = individualVoxelCurrentDensity * (totalDensityCap / currentTotalDensity);
But this expression will extremely slow down the simulation speed when the container resolution is high.
So how to solve this problem efficiently? Is there a certain relationship between dissipation and other parameters of the fluid?

Thanks in advance !

What about writing an expression that stores in array the densities of the voxels at the current stage, on the next step compares the new with the old data, according to the result applies some corrections to the voxels ( if previous density ~0, but new density ~5 - that's quite a bit of a change in one step, set the densitiy to some smaller value ), makes a new "snapshot", ...

I personally would just increase the resolution of the fluid.