# Curly Abstract Geometry

## Recommended Posts

Hey guys, hows going?

I'm trying to figure out how to do this kind of stuff, as you already may know, these artists are Cristoph Bader, and Simon Holmedal, two genius.

I know there's an easy way to do in cinema 4d, with x-particles, a followsurface node and a turbulent noise, but the more I learn Houdini, the less I want to go back to my older apps, and the more I want to study fractals, nature, maths (always a hard thing for me since I'm a designer), but proceduralism is da bomb!

Sam welker posted a tut on creating swirly patterns on a plane, entagma has some on fractals, as well as for loop subdivision depending on attributes.

My questions, are these done with particles and solver? I really want to achieve this kind of complexity, If someone has a good tutorial or resource on stuff like "this particle goes here, and when spot this one the next do this" and stuff, pop behaviors explained for a 1 month houdini user, could be also a ray sop involved here to get the shapes?, at the same time they are uniform, noise?, trying to figure out but its driving me crazy, some key words to google would be very helpful, lately I'm more in abstract stuff than anything, started looking nature more closely, probably there's VEX involved here, thats my biggest fear, I guess I'll had to learn if I want to make power stuff.

• 1

##### Share on other sites
5 hours ago, f1480187 said:

Use VDB point advection to output geometry. You need to compute a velocity vector, it's up to you. For example, just a curl noise (first image) is a good starting point, as well as cross product of @N and position delta using point cloud (second image, some noise applied also). It may be anything you could imagine, from fluid trails to volume thickness.

Dude, you are a beast, I was actually waiting for your comment, you helped me in all my posts and I really appreciate that, gonna analize that file now, and then, search all your posts, you share amazing stuff, thanks again man, cheers from Argentina

##### Share on other sites

Finally got (the simple setup lol)

A question about the simplest point wrangle

// Project onto a tangent plane.
@v = @v - @N * dot(@v, @N);
//@v = normalize(@v);

Googled tangent and readed its the rect that touches a curve in a certain point (as I said math is not my fort), is this what this snippet is doing? Why we have to rest the velocity by the normal? and what does the "dot(@v,@N)" stuff does?

Understanding this first setup will be enough for now, I get some parts of the other point wrangle, but I better start reading more the tokeru cgwiki, I hate coding, but its needed for achieve the results Im looking for, plus is multithreaded.

Btw, how old are you?

##### Share on other sites
`@v = @v - @N * dot(@v, @N);`

This projects the "noisey" velocity vector back into the tangent of the surface. Take a look at the file and compare wrangle A and B. (Remember to enable Visualizer "Vel")

-b

Edited by bonsak
• 1

##### Share on other sites
3 hours ago, bonsak said:
```
@v = @v - @N * dot(@v, @N);```

This projects the "noisey" velocity vector back into the tangent of the surface. Take a look at the file and compare wrangle A and B. (Remember to enable Visualizer "Vel")

-b

@bonsak perfect, got it now! thanks for the sample file!

##### Share on other sites

In fact, you don't have to project anything, you can still use VDBs. Compute Closest Point from the surface SDF (not v) using VDB Analysis node and then use it as a third input of VDB Advect Points SOP, switching it to Constrained Advection mode. It doesn't allow for jittered input, but it can be added later by pushing points along N on random distance computed from primitive number.

• 2

##### Share on other sites
13 hours ago, f1480187 said:

In fact, you don't have to project anything, you can still use VDBs. Compute Closest Point from the surface SDF (not v) using VDB Analysis node and then use it as a third input of VDB Advect Points SOP, switching it to Constrained Advection mode. It doesn't allow for jittered input, but it can be added later by pushing points along N on random distance computed from primitive number.

I'll try this later today, I "think" I get the whole process.

One question it comes to my mind, so using vdbs, like in this sample were a curl noise is projected on a surface, it is possible for example, if I made a pattern, lets say some geometric pattern in illustrator and then import to houdini, can I use this workflow to project the pattern on the surface?, but not the way the ray sop does, instead making a certain pattern/design follow the velocity vector to get some crazy abstract shi*.

The way it comes to my mind is insead of using a curl noise in point vop, importing a pattern/curve, is this possible?

##### Share on other sites

You need uvs and input geometry dense enough to capture details. To bring values, use Attribute from Map node. Remap the color from 0..1 to -1..1 range and use it to create velocity VDB. Should be sufficient enough to reveal pattern.

• 1

##### Share on other sites

@caskal here is another set up using a point vop and curl noise, giving you some more control over the noise on the surface.

curlshiznat.hiplc

• 1

##### Share on other sites
6 hours ago, Slimesunday said:

@caskal here is another set up using a point vop and curl noise, giving you some more control over the noise on the surface.

Thanks @Slimesunday just checked your hip, nice result!, cheers!

• 1

• 2

##### Share on other sites

Hey f1480187

Beautiful solution using advect points. Checking the wrangle nodes in your scene, some of the code lines don't make sense to me. That said, would you know where i can grab more info about how you came up with that solution?

##### Share on other sites

Hi @Marcola. You can ask here. Which lines make no sense? There is no definitive source, I think. It's a compilation of techniques learned from the multitude of examples made by odforce users.

##### Share on other sites

Thanks for the info, @f1480187. This forum seems to be one of, if not the best, resources out there for Houdini. Great stuff!

My question is more regarding where to begin understanding VEX. I'm fairly new to wrangling but almost 20 of 3D and also do have a little background in python.

You know, one can spend days, maybe years researching programming languages but I wanted to know what would be a good way to start learning geometry manipulation through Houdini or where to start, at least, learning more about how to use VEX in Houdini and how to use that data to manipulate geometry (i.e.: extrusion with ramp, grid creation, for each loops etc.). I've been watching Jeff Wagner's and Rohan Dalvi's videos but i'm catching myself watching them repeatedly. They are definitely good materials and are helping a lot. Houdini's learning curve is pretty steep but i'm impressed with what this software can do, incredible.

Regarding the coding lines on your example, i didn't quite understand lines 4 and 5. What is the delta for? What the cross function is doing? Is it acting on the particle velocity channel? Last, what is the reason for using the "fit" function on the noise, how come @P * 25 ?

Newbie questions....any help would be appreciated. Thanks

##### Share on other sites
Posted (edited)

VEX is very simple, it's like basic C. No need to spend years to master it. Try @mestela's wiki. Help has a good basic reference too. I would recreate examples for 5-6 weeks, and gain critical mass of basic knowledge, before trying to make something I personally wish.

```vector near = point(1, "P", nearpoint(1, @P));
vector delta = @P - near;
delta = normalize(delta);
@v = cross(@N, delta);
@v += fit01(vector(noise(@P * 25)), -1, 1);```

"delta" is a common variable name for things like difference between two positions. Here it will output radial directions from points towards scattered centers.

cross() function outputs vector perpendicular to both arguments. It is commonly used to compute transform matrices or just to get something perpendicular. Here it redirects deltas to be concentric.

Fit functions (there are fit and shortcuts fit01, fit10, fit11) remap values from old range to the newer range.

I computed pretty frequent vector noise. Therefore noise's "xyz" argument was multiplied by 25, which is same as using any VOP noise and set it's frequency to 25. The noise return positive values within 0..1 range, it is not suitable for randomizing vectors in all directions. So it need to be mapped to -1..1. This allow to get random evenly distributed direction.

Then I randomized velocity using resulting noise.

For debugging, you should output variables to attributes and visualize them. Older and simplest way is to visualise with @Cd and @N. I usually create visualizers using gear menu at Parameters pane, it allows to quickly setup visualizer to the current node.

Edited by f1480187
typo
• 1
• 1

##### Share on other sites

Thank you so much for the explanation, really clear and easy to understand. I'll keep digging Houdini and will definitely check Matt Estela's website, great material in there too. Many thanks to Matt for putting all of that together!

##### Share on other sites
On 29/08/2016 at 11:26 AM, caskal said:

Hey guys, hows going?

I'm trying to figure out how to do this kind of stuff, as you already may know, these artists are Cristoph Bader, and Simon Holmedal, two genius.

I know there's an easy way to do in cinema 4d, with x-particles, a followsurface node and a turbulent noise, but the more I learn Houdini, the less I want to go back to my older apps, and the more I want to study fractals, nature, maths (always a hard thing for me since I'm a designer), but proceduralism is da bomb!

Sam welker posted a tut on creating swirly patterns on a plane, entagma has some on fractals, as well as for loop subdivision depending on attributes.

My questions, are these done with particles and solver? I really want to achieve this kind of complexity, If someone has a good tutorial or resource on stuff like "this particle goes here, and when spot this one the next do this" and stuff, pop behaviors explained for a 1 month houdini user, could be also a ray sop involved here to get the shapes?, at the same time they are uniform, noise?, trying to figure out but its driving me crazy, some key words to google would be very helpful, lately I'm more in abstract stuff than anything, started looking nature more closely, probably there's VEX involved here, thats my biggest fear, I guess I'll had to learn if I want to make power stuff.

Do you mind sharing the last image's .hip file? @caskal It's very interesting to learn the flow or you could replace it with a basic sphere. Thanks