extrudeFrontSeam group to another extrude

   3321   10   0
User Avatar
Member
14 posts
Joined: Oct. 2017
Offline
Hi,

I'm trying to use the extrudeFrontSeam group from an extrude node on another extrude node.
However, I'm getting two primitives facing away from each other from this operation.
You can see here that primitives 10 and 13 are basically double.

And from the other side:



Also, despite having Connected Components selected on polyextrude2, it still splits the group and creates 3 extrusions.

How do I set this up correctly?

It seemed to me like a great thing to have that extrudeFrontSeam group available to use. Is it better to use something else to select those edges?
For example the first extrude uses a group created from a grid with a bounding box, so I could do the same thing here, but that seems… not elegant?
Edited by sfg - May 7, 2019 11:04:16

Attachments:
01.png (501.5 KB)
02.png (522.9 KB)

User Avatar
Member
2177 posts
Joined: Sept. 2015
Offline
Post your hip, I don't have the same problems and am able to get what I think you want as an end result.
User Avatar
Member
14 posts
Joined: Oct. 2017
Offline
Here it is.

Attachments:
extrude.hipnc (71.3 KB)

User Avatar
Member
2177 posts
Joined: Sept. 2015
Offline
On your second polyextrude change it to individual elements.
User Avatar
Member
14 posts
Joined: Oct. 2017
Offline
Yeah, that works, but then it splits the extrude for each edge.
Not visible with 3 rows for the grid (unless you turn on point numbers) but visible at 6 rows for example.

Anyway, if you don't mind, I have another question.
So I'm trying to use Point Wrangle instead of the bounding box now to select the points on the side of a grid.
So I did this:
@group_right = @P.x>ch("../grid1/sizex")/2-0.001;

Can I write it differently so I don't have to subtract the 0.001? Basically the working code for “select the points that are right on x=ch(”../grid1/sizex“)/2”
Edited by sfg - May 7, 2019 18:56:23
User Avatar
Member
2177 posts
Joined: Sept. 2015
Offline
Yeah, that works, but then it splits the extrude for each edge.
Not visible with 3 rows for the grid (unless you turn on point numbers) but visible at 6 rows for example.

I don't know what you mean by that.

With it set to individual, you get two prims.

With it set to connected(as you had it), you get 4 prims.(Connected includes adjacent edges)

Can I write it differently so I don't have to subtract the 0.001?

You can do it this way:

@group_right = @P.x >= ch("../grid1/sizex")/2.0;

But this way you need to keep the grid centered along the z axis, ditto for your method.

You could do the following since it lets you transform the grid in any x direction before you define the group in the wrangle.

vector Center = getpointbbox_center(geoself());
@group_right = @P.x > Center.x/2.0;
Edited by BabaJ - May 7, 2019 21:28:10
User Avatar
Member
14 posts
Joined: Oct. 2017
Offline
Sorry, I meant this:


Thank you very much for the help!

Attachments:
03.png (484.3 KB)

User Avatar
Member
2177 posts
Joined: Sept. 2015
Offline
Ok…I see what you mean now. And although you haven't mentioned it specifically, there's probably some confusion about why the second extrusion doesn't behave like the first.

So in the attached file, I've added a group create node - and just renamed your ‘extrudeFrontSeam’ and used the new name as the reference in the second extrude node.

As such, in the second extrude node you no longer need to switch to individual, you can keep it as connected components and you get the transformation you want without the extra polys.

As to why…I think I am only skimming the surface and perhaps someone can chime in with more detail, but….

If you click on your first group node and enable Show Handle icon along the left side of your viewport…you will see the orientations.

Now if you select the first polyextrude node, with the same Show Handle icon enabled…you will see a change of orientation.

I suspect for whatever reason the poly extrude node, to do what it needs to do in order to produce what is being asked of it, results in a different inherent orientation after the operation.

So when you try to do the same operation with the second poly extrude, which by appearance seems to be the same kind of edge as the first; Because there is now a different inherent orientation we get different results.

With the group create(renaming), if you select that node and have Show Handles enabled…you will see it has the same orientation as the first group. As Such we get the same behavior through our second poly extrude…like your scaling with Transform Front.

If I am wrong about what is happening would be good for someone to chime in.

Attachments:
extrude-6 v1.hipnc (75.8 KB)

User Avatar
Member
240 posts
Joined: March 2015
Offline
Hi, I had a quick look at this the other day but didn't come to a conclusion as to what is happening. What I did find out was confusing so I didn't post but here it is, in case someone else can understand;
By adding a sort sop between the two extrudes and changing the point order, everything works. This is contrary to what I understand of edge groups though. As in, edge groups are made of points so if I change the point order, the group shouldn't work. (so I'm misunderstanding something)

Attachments:
extrude_sort.jpg (68.3 KB)
extrude_sort.hipnc (79.7 KB)

User Avatar
Member
2177 posts
Joined: Sept. 2015
Offline
I like the sort method because it's quicker.

However, I still think it is a matter of orientation.

With the sort node set to Y or X, good results are had.

However, not if it is set to Z ( which is the original point order).

Both X and Y are on the grid planes. Z is off that plane.

In all 3 cases ( X,Y,Z ) no matter how the points are ordered…they all are on the same plane, and they all ascend in increasing value along the y axis on the target edge.

There ‘must’ be some orientation ‘attached’ with the data.

Would be good for a staff or someone who might know what really is going on under the hood, to chime in.

To get an answer I guess it could be called a bug, and filed as such, since the behavior is different from the first polyextrude.
User Avatar
Member
14 posts
Joined: Oct. 2017
Offline
Thanks for trying to figure it out!

Another question I have…
So, I have a group made of just a point of the corner of a grid. I made that by first making two groups, one with the points on the top side, one with the points on the left side. These two I made in a wrangle:
@group_top = @P.y>=ch("../grid1/sizey")/2-.001;
@group_lside = @P.x<=-ch("../grid1/sizex")/2+.001;
Then I intersected these groups with a group combine node. (As a side note, can you do intersections in VEX? I could just add groups together with a simple “+”)

OK, now I have the top left corner point selected no matter how many rows and columns I set on the grid.
The question is, how do I use the point number as an int in another wrangle node?
I want to use it in something like this, instead of the 25:
int next = neighbour(0, 25, 1);
I can't figure out how to set it as a variable or something. Obviously the number will change if I change the grid divisions so I can't just use the number directly.

If you're wondering what I'm trying to do with that neighbour thing, is to basically get the next point down from the top left corner point.
Edited by sfg - May 10, 2019 17:55:51
  • Quick Links