Jump to content

finding the points for corner, u corner or straight wall placement

Recommended Posts


Im creating a façade of a building, the lower part of the building can have indents. on these indents another model needs to be placed.

Also on the corner, a corner model needs to be placed. to specify the placement I simply use points with a copysop. These points vary

from position on the Z-axis to randomize the indents and corners.

I have made an example for just a representation of how it could look. The method used can be ignored.

I have tried to solve this issues by creating a pointVOP and setting the distance by using a constant. This didn't work. I have no idea

what I'm doing :). Another approach to solve it is to detect if a point has a neighbour by selecting it with a box. Again. I have no idea what

i'm doing. :) I hope I'm clear enough.

I hope someone can help me

thanks in advance

Model detection.hipnc

Share this post

Link to post
Share on other sites

What is it that you are trying to achieve? A procedural facade? What workflow do you seek to achieve?


You will need to use stamping on the copy sop to put different models on different points.

Keep in mind you can create arbitrary attributes with the attribute create SOP/ VOPs and manipulate those with VOPs. 

Share this post

Link to post
Share on other sites

sorry about that,


I do intend to make the entire wall,facade procedural with building blocks. Actually, every point should have stored

information so the procedure know when to place a straight wall, a left or right corner, or a U corner. Basically its a

wall with points that places models accordingly to the position of a point to others points.


I want to separate the ground floor with the higher floors since on those higher floors other models should be placed

than on the ground floor. But the whole facade consists out of straight pieces of walls, and corners, of which the

corners does not only exists on the most left or most right of a building. They could also occur in the centre to

have a indent.


I wanted to solve this by checking from every point if it has any neighbours. Has it 2 neighbours, left and right, than

a straight wall building block should be place on that point. If a point misses a point on the left, a left corner building

block should be placed. If a point misses a point on the right, a right corner building block should be place. If a point

does not have any neighbours, a U corner building block should be place.


Once the basic building block models are placed, I should swap them with an other type of that particular building block.

This is indeed done by using the stamp function in the copySOP. Which already kind of works for me.


Another issue is that I do understand(I think) how the procedural assets or tools are made, by logic and math. But I

have trouble translating this into Houdini. It gets easier but it still confuses me. Which is a reason why I am not doing

so well with VOPs.

I hope this block of text will clarify a lot of questions

Share this post

Link to post
Share on other sites

Clarifies questions but does not ask too accurately  ;)

maybe you can show a picture/mesh of what you want to achieve?

Edited by konstantin magnus

Share this post

Link to post
Share on other sites

Mathew Foscarini demonstrates how to detect corners and neighbors within fonts, in this video. You might be able to adapt the method.

Share this post

Link to post
Share on other sites

Hey Marco!


instead of using neighbours, you can also just do it per primitive and use the vertices (and their order)


that way if you check if the cross product of the normal (from the previous point) against the one (to the next point),

you can check if the corner is left/right by seeing if the cross product points upwards or downwards :)

(I did not watch Atom's video yet, but it is likely to touch on this as well)


also if you are translating code from stuff like stack overflow, maybe its an idea to just skip VOPS and go directly into Attrib Wrangles :P

I find that once you get used to it, its actually faster to work with, and easier to debug as well.

VOPS are still good for generating noises and such of course...

  • Like 1

Share this post

Link to post
Share on other sites

Hello @Atom!

I tried to follow the video but I can't get the results. The For Loops are different and I don't know what I should do.

Also, many nodes used on the video look different now, for example Neighbour and Import Attribute. The neighbour one asks for a file, should I just say First Input instead? Or does it automatically ignore that as soon as I plug something in? Should I use Get Attribute instead of import? I'm kind of lost, I got until the part where he creates a AddAttrib node, and can see the values either 0 or 1 assigned to each point. For me they're just all 0's. Any ideas on how to accomplish this using the newer nodes? Similarly to OP, I'd like to have a way to separate corner points into a group. I understand the principle and the math behind it, using the Dot product, but I just started learning Vex and VOP's still confuse me sometimes.

@acey195, could you elaborate on achieving this using the vertices instead? That would also interest me! I'm also experimenting with building facades and would like to optimize the placement of sub-assets, since my last effort became complicated very fast when trying to model from inside the same network, based on the prims and their attributes.

Thanks in advance, and sorry for bringing up an older thread!

edit: After a lot of struggle, I finally managed to get it working! But I still think there should be a better way of doing this, since the network I had to build inside the Attribute VOP became very large. If anyone could take a look at it and give me some advice would be really nice!



Edited by neblina
Issue partially resolved!

Share this post

Link to post
Share on other sites

I just found out another much, MUCH easier way of achieving this. It's so easy I'm actually mistrusting it a little, maybe someone can tell me if there are any complications in the long run?

Using the Measure SOP and setting it to Curvature, then append a new group having " @curvature>0 " as the base group. This select all the corner points in a curve or extruded prim. After just delete the selected or the non-selected, as needed.

Am I missing something?

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now