Jump to content

splitting volume?


Ian10210123

Recommended Posts

This problem has been bothering me for a long time.

I want to recreate Simon's tide. I've been check out all the comments and discussion which talks about this.

I've organized the following tips:

1. It drives by COPS pattern. Maybe he used the gradient as velocity field.

2. It uses 2d pyro solver

3. turn volume to heightfield and render as displacement map.

 

What I tried and can't figure out:

1. volume can split, but it don't stop. They will curl and make circle. It should still go forward and split.

2. It's not Rayleigh Taylor Instability which is triggered by density. 

 

Link to comment
Share on other sites

@Ian10210123 I posted that 3 years ago He use SphericalClebschMap you have files on Youtube Berlin MAth + advance MATH for Houdini to make those math Fileds   , also used velocity field (FLOW DATA) , volume_musical_isomorphism1 , magneticLaplacian, AKA Clebsch_solver, therefor he gets nice transition , you can also make this with regular velocity field on 2d volume with 4 different curves   , Just listen to Him on the end of that Video presentation when someone ask him HOW???  ..
 

v@s = point(0,"s",vertexpoint(0,@vtxnum));
v@uv;
#include "math.h"
float theta = acos(@s.y);
float phi = atan2(@s.z,@s.x);
@uv.x = phi/(2*PI);
@uv.y = theta/PI;

Just One PIC,( imagine this with sequence Frames) just simple ex.
Just search Clebsch_solver BERLIN MATH Houdini  files exist Have FUN.

vfb.gif

sdee.jpg

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

16 minutes ago, Librarian said:

@Ian10210123 I posted that 3 years ago He use SphericalClebschMap you have files on Youtube Berlin MAth + advance MATH for Houdini to make those math Fileds   , also used velocity field (FLOW DATA) , volume_musical_isomorphism1 , magneticLaplacian, AKA Clebsch_solver, therefor he gets nice transition , you can also make this with regular velocity field on 2d volume with 4 different curves   , Just listen to Him on the end of that Video presentation when someone ask him HOW???  ..
 

v@s = point(0,"s",vertexpoint(0,@vtxnum));
v@uv;
#include "math.h"
float theta = acos(@s.y);
float phi = atan2(@s.z,@s.x);
@uv.x = phi/(2*PI);
@uv.y = theta/PI;

Just One PIC,( imagine this with sequence Frames) just simple ex.
Just search Clebsch_solver BERLIN MATH Houdini  files exist Have FUN.

vfb.gif

sdee.jpg

Thank a lot @Librarian ! There's a lot of math inside :blink: 

I'll try to figure it out

Link to comment
Share on other sites

I was thinking of all of us here on the Forum , not only @Aizatulin @konstantin magnus @fencer @Atom or @hannes603  .......or me
Plus you don't have pyro working on that Scene I don't se simulation on 2d . Where its your file where you try !! Before you Ask here on Forum?? Just wondering...But that's Utopia for me @Ian10210123

Edited by Librarian
Link to comment
Share on other sites

Sorry for not providing my previous file before. It's kind of messy and stuck in very beginning.:( I tried to build a new one.

I tried to use noise as vel field to push volume in 2d, but I can't really figure out the sub-motion like "tide.

I guess probably everyone can do the similar setup.

tide.4.hip

Edited by Ian10210123
Link to comment
Share on other sites

@Ian10210123 We’re close to a solution! Plus, the first file (2D rotation) gives the same result as the simulation. I think we can now achieve this pretty easily using COP 2 in Houdini 20.5. Definitely worth a try!

Just sharing some tests! I'm using something like UV coordinates in tangent space and mapping it like a texture—basically a spherical map with tiling. In DOPs, I managed to get some nice fluid-like movement going. There's always room to improve, and I just need more time to refine it, but it's getting close to the concept I'm aiming for!

He also mentioned time-dependent movement in COPs, and I think this would be pretty doable in the new COPs. Just need to dial in a better smoke/fluid simulation to get the look right. Plus i forget to make gray scale and relief those or displacement  but its manageable. 

 

Cd5.gif

0588.jpg

Cf6TS.jpg

Cd5ddd.gif

CFD.gif

Edited by Librarian
  • Like 3
Link to comment
Share on other sites

@Ian10210123 Best to give you a File to investigate,  Have Fun.

// Find the closest point on the second input (input 1) based on the current point's position (@P)
int near = nearpoint(1, @P);  
vector centor = point(1, "P", near);  // The position of this closest point

// Retrieve the 'dis_lif' attribute from the nearest point on input 1
// This attribute may represent a factor affecting influence or lifespan distance
float dis_lif = point(1, "dis_lif", near);

// Calculate a radian value based on the nearest point's "radians" attribute
// This value is scaled by 'mdistance' and 'dis_lif' to control its effect over distance
float radians = point(1, "radians", near) * chf("mdistance") * dis_lif;

// Calculate a normalized distance factor (dis01) from the current point to the 'centor'
// 'masdis' defines the max distance where influence fades out, fitting it into 0-1 range
float dis01 = fit(distance(@P, centor), 0, chf("masdis"), 0, 1);

// Map this distance factor through the 'ramp' parameter for smooth transitions
// 'ramp' provides custom control over the falloff shape, helping blend and shape influences
float distance = chramp("ramp", fit(distance(@P, centor), 0, radians, 0, 1));

// Calculate the direction from the current point to the 'centor' and normalize it
vector dp = normalize(centor - @P);

// Create a composite direction ('dir') that combines a rotational component and direct component
// 'max_rot' controls rotation influence, while 'mas_dir' scales the direct movement toward 'centor'
vector dir = (cross(set(-1, 0, 0), dp) * chf("max_rot") + dp * chf("mas_dir")) * distance;

// Define 'divergence' for spreading or collapsing effect by using distance ramp control
// 'div' ramp customizes the intensity across distances, and 'max_dif' scales the overall effect
f@divergence = -chramp("div", dis01) * chf("max_dif");

// Calculate the bias for blending toward the desired direction
// 'bias' is a control slider to determine how much of the influence should apply
float bias = 1 - exp(-chf("bias"));

// Blend the original velocity with the computed 'dir' vector based on the bias factor
@vel = lerp(@vel, dir, bias);

:

Tuning Influence and Range with dis_lif and mdistance:

dis_lif acts as a local intensity or "lifespan" modifier. Experiment with it to create different levels of influence per point. Think of it as an influence radius that you can control on a per-point basis.

mdistance scales the overall effect range. Increasing it will make the effect spread further from each source point, which is helpful for soft transitions or distant influences.

Customizing Falloff with Ramps:

ramp and div ramps give you precise control over how the influence behaves over distance. These allow you to create linear, smooth, or even custom-curved falloffs to refine how forces dissipate or concentrate.

Blending Directional Effects (max_rot and mas_dir):

max_rot gives a twist effect, adding a rotational element. It’s particularly useful for creating swirl or spiral motions.

mas_dir scales the direct influence toward each nearest point. You can use this to control the balance between pure rotation versus attraction to the nearest points.

Controlling Divergence and Convergence:

The divergence attribute is useful for controlling how particles spread or pull together. You can create effects that expand outward or collapse inward.

Use max_dif to increase or decrease the overall strength of the divergence effect, helping shape behaviors like explosions, implosions, or subtle spreading.

Blend with Bias:

The bias parameter allows you to decide how much of the computed direction should affect the velocity, which is helpful for layering multiple effects without overwhelming the base movement.

Suggested Exploration:

Check Houdini Documentation on Gas Solvers:

Gas solvers, such as Gas Vortex Confinement or Gas Blur, provide specialized controls for fluid and particle behavior, like adding swirl or turbulence. By combining these with custom VEX expressions, you can achieve sophisticated motion effects.

Experiment with Fields:

Try applying this code on different fields (density, temperature) in Houdini’s DOP context. By doing so, you can influence fluid simulations in creative ways.

Explore Gas Field Wrangle Nodes:

Using a Gas Field Wrangle within a solver gives you a powerful platform to apply these custom forces within smoke or fluid simulations, adding even more depth to particle or volume-based effects.

Integrate with Houdini’s Attribute Noise or VOPs:

Use Attribute Noise or VOP networks in combination with this VEX code to create more natural, randomized behaviors for particles and fluids, making the overall effect feel more dynamic and alive.

Feel free to adjust parameters and experiment! Houdini’s flexibility and powerful VEX language mean you can customize these effects to a high degree, blending artistic intuition with technical control for unique motion patterns.

 

ParcticleGasExOD.hipnc

  • Like 1
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...