eunchae Posted September 27, 2021 Share Posted September 27, 2021 Hello. I want to make a ripple like image. If you do not use the ripple solver (without simulation) is there any way i can make it? If you have any good ideas, please share them with me. I wish I could customize the length, width...etc of the ripple. thank you. Quote Link to comment Share on other sites More sharing options...
konstantin magnus Posted September 27, 2021 Share Posted September 27, 2021 Hi @eunchae, you could copy and transfer displaced grid rows into a height field: boat_waves.hiplc Quote Link to comment Share on other sites More sharing options...
konstantin magnus Posted September 27, 2021 Share Posted September 27, 2021 Alternatively remap and average out directions and distances to points across a height field: float scale = chf('scale'); float range = chf('range'); float disps[] = {}; int pts[] = nearpoints(1, v@P, range * 4.0); foreach(int pt_near; pts){ vector pos = point(1, 'P', pt_near); vector nml = point(1, 'N', pt_near); float pscale = point(1, 'pscale', pt_near); vector dir = normalize(pos - v@P); float angle = fit11(dot(nml, dir), 0.0, 1.0); float dist = distance(pos, v@P); float shape = chramp('shape', angle); float dist_mod = dist * shape * pscale; float mask = 1.0 - smooth(0.0, range, dist); float wave = sin(dist_mod * 0.02); float height = 1.0 - chramp('height', angle); float disp = height * mask * scale * wave; append(disps, disp); } f@height = avg(disps); boat_waves_VEX.hiplc 2 Quote Link to comment Share on other sites More sharing options...
eunchae Posted September 29, 2021 Author Share Posted September 29, 2021 On 2021. 9. 27. at 6:05 PM, konstantin magnus said: Alternatively remap and average out directions and distances to points across a height field: float scale = chf('scale'); float range = chf('range'); float disps[] = {}; int pts[] = nearpoints(1, v@P, range * 4.0); foreach(int pt_near; pts){ vector pos = point(1, 'P', pt_near); vector nml = point(1, 'N', pt_near); float pscale = point(1, 'pscale', pt_near); vector dir = normalize(pos - v@P); float angle = fit11(dot(nml, dir), 0.0, 1.0); float dist = distance(pos, v@P); float shape = chramp('shape', angle); float dist_mod = dist * shape * pscale; float mask = 1.0 - smooth(0.0, range, dist); float wave = sin(dist_mod * 0.02); float height = 1.0 - chramp('height', angle); float disp = height * mask * scale * wave; append(disps, disp); } f@height = avg(disps); boat_waves_VEX.hiplc Thank you. If I have to ask you one more thing, can you make it like the last pattern in the video? Even if I use ripple sop, such a shape does not come out. Quote Link to comment Share on other sites More sharing options...
konstantin magnus Posted September 29, 2021 Share Posted September 29, 2021 Hi @eunchae, @ssh has already implemented the Kelvin Wake pattern in Houdini: 1 1 Quote Link to comment Share on other sites More sharing options...
eunchae Posted September 30, 2021 Author Share Posted September 30, 2021 9 hours ago, konstantin magnus said: Hi @eunchae, @ssh has already implemented the Kelvin Wake pattern in Houdini: Thank you! Quote Link to comment Share on other sites More sharing options...
konstantin magnus Posted September 20, 2022 Share Posted September 20, 2022 There is a Kelvin Wakes deformer in SideFX Lab's now: https://www.sidefx.com/docs/houdini/nodes/sop/labs--kelvin_wakes_deformer-1.0.html 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.