Liquify effect on geo

   2137   3   1
User Avatar
Member
21 posts
Joined: July 2017
Offline
Hi there,

I'm studying Houdini for some time and at this point i'm trying to create something with a little more complexity than the usual. This time, I have a pattern applied to a spherical cage and would like to add a distortion similar to the "liquify" filter from photoshop.

I've been experimenting with attribute vop but so far I couldn't get to the aesthetic that I'm looking for.

That said, is there a way or how to achieve a liquify effect on geo within Houdini? I'm attaching an image of the sphere that I created and the liquify effect that I'm looking for. Any suggestions would be appreciated.


Attachments:
PatternSphere.JPG (119.5 KB)
external-content.jpg (178.5 KB)

User Avatar
Member
1857 posts
Joined: May 2006
Offline
This kinda thing? Basically setup colour noise so you can preview it easily, then push the shape around by the cross product of the colour and N, which will flow around the surface (to an extent, push it too far and it'll overly distort for non spherical shapes)

Attachments:
distort_sphere.hip (244.8 KB)

http://www.tokeru.com/cgwiki [www.tokeru.com]
https://www.patreon.com/mattestela [www.patreon.com]
User Avatar
Member
173 posts
Joined: Aug. 2017
Offline
I posted here for texture's Effect if you mean that ...
https://forums.odforce.net/topic/47551-how-to-make-marble-texture/ [forums.odforce.net]

or you can just use some points with min pos or ray and feed those code with rest att in the first spot in wrangle
int pts = npoints(1);
vector color = 0;

for(int i = 0; i < pts; i++){
    float age = point(1,"age",i);
    float life = point(1,"life",i);
    vector pos = point(1,"P",i);
    vector id = point(1,"id",i);
    vector ptColor =point(1,"Cd",i);
    float nage = age/life;
    
    float maxDist = chf("max_dist")*fit01(rand(id),1-chf("dist_var"),1+chf("dist_var"));
    float dist = distance(v@rest, pos);
    float width = chramp("width",nage);
    
    float sampleMaxDist = maxDist *chramp("spr_motion",nage);
    float sampleMinDist = sampleMaxDist * width;
    float intensity = chramp("intens",nage);
    vector colorTemp = ptColor*chramp("spr_ramp",fit(dist,sampleMinDist,sampleMaxDist,1,0));
    colorTemp *= intensity;
    color = max(color,colorTemp);
    }
v@Cd= color;    
Edited by cncverkstad - March 30, 2022 04:03:34

Attachments:
Armdgsrrrrrdffdddfff.gif (5.1 MB)
cft.jpg (76.6 KB)

Conservation of Momentum
User Avatar
Member
21 posts
Joined: July 2017
Offline
@mestela That was spot on! Exactly the effect I was looking for. I have been trying to create something similar by creating displacement based on noisy color and then the ray sop but your solution is way simpler and faster. Thank you so much for sharing the knowledge.

@cncverkstad your shader solution is pretty cool! Will definitely study that, I can already visualize some interesting stuff to do with it. Thank you for sharing.

Cheers!
  • Quick Links