# How to creat subdivision pattern ?

## Recommended Posts

I saw this awesome video yesterday.

It's so cool!!!!! But i can't find any information for doing this in houdini.

I want creat some stuff like this so much,Can you guys give me some idea or

some information for how to creat stuff like this! Thank you very much!!!!!!

##### Share on other sites

Interesting stuff. It consist of four types of triangle subdivision, applied recursively. They all are built in or possible to recreate in Houdini:

1. Edge Divide + Divide (Avoid Small Angles turned on);
2. TriDivide;
3. Subdivide (OpenSubdiv Loop);
4. Subdivide.

First is the tricky here, since I don't understand what logic was used in this particular video to select which side of triangle to divide. And the whole idea behind driving setup is unclear for me also.

Ok, after a bit of thinking it seems like a matter of deciding which kind of subdivision to use in 3-4 repetitions in a row. Try it first.

... and after another bit of watching actual video, I don't see "Subdivide" type anymore, the type creating three quads. It wasn't used, I guess.

Edited by f1480187
• 5

##### Share on other sites

I think C4D, as Max, has some nifty selection tools where you can select points/edges/polys by pattern, using default selection sets provided by the tool. You should be able to recreate them by grouping edges by pattern, even grouping more than once and combining, then start playing with the different subdivision types - as well as with the selection patterns.

I think this is a good example on a feature implemented in a 3D app as you couldn't create it using the tools of the app, that you have to recreate yourself in Houdini because you can create it using the tools in Houdini. It reminds me of one of the first things I wanted to do, learning Houdini. I wanted to rotate a particle around its velocity axis, a feature available as "standard" in Pflow and Thinking Particles. In Houdini you gotta build that in a VOP (or using VEX), not very easy if you don't know what a quaternion is. This feels kinda similar to that.

Edited by Farmfield

##### Share on other sites

i am also working on some custom subdivisions

@f1 you are really a sensei!

Edited by deniz
• 1

##### Share on other sites
18 hours ago, Farmfield said:

I think C4D, as Max, has some nifty selection tools where you can select points/edges/polys by pattern, using default selection sets provided by the tool. You should be able to recreate them by grouping edges by pattern, even grouping more than once and combining, then start playing with the different subdivision types - as well as with the selection patterns.

I think this is a good example on a feature implemented in a 3D app as you couldn't create it using the tools of the app, that you have to recreate yourself in Houdini because you can create it using the tools in Houdini. It reminds me of one of the first things I wanted to do, learning Houdini. I wanted to rotate a particle around its velocity axis, a feature available as "standard" in Pflow and Thinking Particles. In Houdini you gotta build that in a VOP (or using VEX), not very easy if you don't know what a quaternion is. This feels kinda similar to that.

I think c4d didn't have this kind tool.

The creater say it's all built in python.

• 1

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

Interesting stuff. It consist of four types of triangle subdivision, applied recursively. They all are built in or possible to recreate in Houdini:

1. Edge Divide + Divide (Avoid Small Angles turned on);
2. TriDivide;
3. Subdivide (OpenSubdiv Loop);
4. Subdivide.

First is the tricky here, since I don't understand what logic was used in this particular video to select which side of triangle to divide. And the whole idea behind driving setup is unclear for me also.

Ok, after a bit of thinking it seems like a matter of deciding which kind of subdivision to use in 3-4 repetitions in a row. Try it first.

... and after another bit of watching actual video, I don't see "Subdivide" type anymore, the type creating three quads. It wasn't used, I guess.

Thank you very much!

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

I think c4d didn't have this kind tool.

The creater say it's all built in python.

Well, it was so long since I used C4D I shouldn't really comment about it, but I know 3ds Max has - and that's in regard to the pattern selection tools, the subdivision part I'm unsure of, but probably not so much.

And it doesn't surprise me it's scripted, the more you learn Houdini the more you reach for VEX, it's all about that low level control, and my experience is the cooler the stuff you see, the more VEX (or Python, Maxscript, MEL) is in it.

One thing that strikes me, though, is how you create selection patterns like this on generic triangulated meshes where you don't really have a pattern in the poly/edge numbering. I'm guessing it's the same math/methodology as doing polywalk setups, you start at one point and spread out from that. I feel I really have some way to go before I'm at that point where I can set that up, doing unfolds and alike, the stuff that F1, Pavel, Andrew and their likes can do in their sleep.

Edited by Farmfield

##### Share on other sites

Recreated all three subdivision types in VEX. It now fast and uses some input parameters. Didn't achieve any worthy results with animating this stuff, however.

subdivide_triangle.hipnc

Edited by f1480187
code fix
• 8

##### Share on other sites

First off, wowness. Damn, F1, that is really cool.

In regard to animation, in the video in the first post, seems like he's just using color noise to control subdivision iterations, not very complicated if you got the base for the subdivisions themselves. But I would propose you could do some seriously cool animations with this using it in conjunction with a polywalk or unfold setup.

##### Share on other sites

Thanks, @Farmfield.

31 minutes ago, Farmfield said:

polywalk or unfold setup

Are you referring to some specific techniques?

##### Share on other sites

Naeh, just the techniques in themselves, couldn't find a Houdini example of unfolding, but this is an extreme one done in C4D...

As for polywalk, Andrew Melnychuk did a series about it here. This one is on my todo list, so to speak.

Edited by Farmfield

##### Share on other sites
On 2016/8/1 at 6:14 PM, f1480187 said:

Recreated all three subdivision types in VEX. It now fast and uses some input parameters. Didn't achieve any worthy results with animating this stuff, however.

Man,you are awesome!

learn a lot!!!!!!

##### Share on other sites
On 03/08/2016 at 4:46 AM, aoisaki said:

Man,you are awesome!

learn a lot!!!!!!

Recently, our brilliant friend Akira Saito came out with the generation of some splendid forms.

I though it wirth a share

My assumption is he is using fractal and recursive subdivision iterations using nonstationary weights based on custom division patterns.

Found it was worth to share

• 1

##### Share on other sites

Started to get some cool things myself for a project, using my own ways, still feel a limited to code my own subdivision rules

Obviously how not to mention master Michael Hansmeyer here?

_______________________________________________________________

Vincent Thomas   (VFX and Art since 1998)
Senior Env and Lighting  artist & Houdini generalist & Creative Concepts

(Available soon, feel free to contact for reel and resume=

• 2

##### Share on other sites
```v@P = set(v@uv.x, v@uv.y, 0.0);
------
v@P = primuv(1, "P", i@hitprim, v@hitprimuv);
-----------------------------------
//f@r = sqrt(v@P.z * v@P.z + v@P.x * v@P.x);
f@r = length(v@P);
//f@r = length2(v@P);

f@phi = atan2(v@P.x, v@P.z);

v@P_cartesian = v@P;

v@P.x = f@phi;
v@P.z = f@r;
-------------------------------------------
over primitives
int edge[];
float longest = 0.0;
int vertices[] = primvertices(0, @primnum);
for(int i=0; i<len(vertices); i++)
{
int vtx1 = vertices[i];
int vtx2 = vertices[(i + 1) % len(vertices)];

int pt1 = vertexpoint(0, vtx1);
int pt2 = vertexpoint(0, vtx2);

vector p1 = point(0, 'P', pt1);
vector p2 = point(0, 'P', pt2);

float dist = distance(p1, p2);

if(dist > longest)
{
longest = dist;

int e[];
push(e, pt1);
push(e, pt2);
edge = e;
}
}
if(len(edge) != 0)
{
s@edges = ' p' + itoa(edge[0]) + '-' + itoa(edge[1]);
}
----------------------------  ```

projection Ray projection Ray l-system or vice versa..

## Create an account

Register a new account