Ian10210123 Posted November 5 Share Posted November 5 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. Quote Link to comment Share on other sites More sharing options...
Librarian Posted November 5 Share Posted November 5 (edited) @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. Edited November 5 by Librarian 1 Quote Link to comment Share on other sites More sharing options...
Ian10210123 Posted November 5 Author Share Posted November 5 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. Thank a lot @Librarian ! There's a lot of math inside I'll try to figure it out Quote Link to comment Share on other sites More sharing options...
Ian10210123 Posted November 5 Author Share Posted November 5 @Librarian Sorry for bothering again. I can't find the video or any useful link. But I found this. Your comment before mentions Clebsch, but the website failed to show anything. Quote Link to comment Share on other sites More sharing options...
Librarian Posted November 5 Share Posted November 5 @Ian10210123 https://dl.acm.org/doi/10.1145/3072959.3073591 1 Quote Link to comment Share on other sites More sharing options...
Ian10210123 Posted November 6 Author Share Posted November 6 @Librarian I tried some combination. I tried to use curves and noise ramp as vel field. Also I increased the resolution of hbar and voxel size. Maybe I missed out something. I'm not sure it's the way how Simon made the result. Quote Link to comment Share on other sites More sharing options...
Librarian Posted November 6 Share Posted November 6 OK @Ian10210123 can we Try together here on Forum to make that effect ??? Can you post File that you experimenting with ??? Quote Link to comment Share on other sites More sharing options...
Ian10210123 Posted November 6 Author Share Posted November 6 @Librarian Thank you so much Please find the attachment below example_2Drotation_try.hip Quote Link to comment Share on other sites More sharing options...
Librarian Posted November 6 Share Posted November 6 (edited) 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 November 6 by Librarian Quote Link to comment Share on other sites More sharing options...
Ian10210123 Posted November 6 Author Share Posted November 6 Weird I put the simulation in Clebsch_Map_Visualization You also have to install both otls in the webite https://dl.acm.org/doi/10.1145/3072959.3073591 Quote Link to comment Share on other sites More sharing options...
Librarian Posted November 6 Share Posted November 6 Yes otls and SCIPY Numpy Python. Then you must save that 2d animation like sequence and merge that sequence into shader . Here you have nice EX files for vel fields @Ian10210123 Quote Link to comment Share on other sites More sharing options...
Ian10210123 Posted November 6 Author Share Posted November 6 (edited) 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 November 6 by Ian10210123 Quote Link to comment Share on other sites More sharing options...
fencer Posted November 7 Share Posted November 7 Maybe this should help. 1 Quote Link to comment Share on other sites More sharing options...
Ian10210123 Posted November 7 Author Share Posted November 7 @fencer Thank you I get some ideas, but still wondering. Just want to clarify my question. tide.mp4 1 Quote Link to comment Share on other sites More sharing options...
Librarian Posted November 8 Share Posted November 8 (edited) @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. Edited November 8 by Librarian 3 Quote Link to comment Share on other sites More sharing options...
Ian10210123 Posted November 9 Author Share Posted November 9 Wow! That’s it! It’s a big tip. Thank you so much 1 Quote Link to comment Share on other sites More sharing options...
Librarian Posted November 10 Share Posted November 10 @Ian10210123 COP 2 1 Quote Link to comment Share on other sites More sharing options...
Ian10210123 Posted November 12 Author Share Posted November 12 @Librarian These gas things are not familiar with me. I'm looking hard to it. I guess the main motion which is created by POP and bring particles as vel and divergence to Pyro solver and do some math. Then do post-process in COPS. Quote Link to comment Share on other sites More sharing options...
Librarian Posted November 13 Share Posted November 13 @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 1 Quote Link to comment Share on other sites More sharing options...
Ian10210123 Posted November 13 Author Share Posted November 13 @Librarian Thank you so much. It's so coooooooool! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.