2
$\begingroup$

In my scenario, I have a horizonal edge loop with equally spaced vertices along it. I am seeking a way to shift the vertices around the loop path where they maintain their spacing.

In this cube example, I manually moved each vertex to achieve the effect I am looking for:

Original Cube

This resulting cube maintains the original vertex spacing but has been shifted over by an increment or two, retaining its cubic form:

Shifted Cube

My goal is to maintain the original shape but skew the vertical edge loop paths to create interesting patterns on the surface of my mesh.

Scaled Vertical Edge Loops and Subsurface

I have tried using the "Simple Deform" modifier to twist my mesh but since I'm not working with a circular shape it doesn't produced the desired result. I'm currently exploring geometry node operations in hopes of finding a more straightforward solution. Any advice or suggestions would be greatly appreciated.

Edit: Here are the cubes with index labeling to better demonstrate the transformation the vertices are performing.

Initial Vertices Transformed Vertices

One solution I found that would produce a similar result is to use "bridge edge loops" and increment the twist value so the vertical edges pair with an above vertex that may be clockwise/counter-clockwise to it rather than directly above

EdgeLoopSolution

This is the shape I intend to perform the desired actions on. However the final version may be a stack of 300 edge loops Sample Shape

$\endgroup$
8
  • $\begingroup$ To clarify your need: it seems to me that you are not shifting vertices, because these remain at the same position. It looks more like if you change the edges connecting these vertices. If so, could we assume that in the original mesh, the edges to change are aligned with Z-axis ? $\endgroup$ Feb 10 at 21:27
  • $\begingroup$ @StefLAncien Within a single, horizontal loop, he shifts each vertex to the position of the next vertex on that loop. It would be more readable if the screenshots showed vertex indices (which do move) $\endgroup$ Feb 10 at 22:12
  • $\begingroup$ @MarkusvonBroady That correct, I've gone ahead and added some more detailed images exposing those indices for better context. $\endgroup$
    – SebaYoung
    Feb 10 at 22:55
  • $\begingroup$ @StefLAncien One solution I have found since posting, uses the twist parameter when applying a Bridge Edge Loop. In that case the vertices remain in their original position and the edges transform. I'm experimenting to see if that will give me the desired result on more complex geometries $\endgroup$
    – SebaYoung
    Feb 10 at 22:55
  • $\begingroup$ The cube is an example, but you're interested in an algorithm that works for other meshes? I ask, because a simple solution would be to e.g. use 4 switch statements based on normal to determine the offset. But what if you want to do it e.g. on a cylinder? No longer works. A horizontal loop can be extracted, converted to curve, and the next point on the curve can be found. But what if the cylinder is rotated? So if you're not fine with an overfitted solution, maybe add another example? $\endgroup$ Feb 10 at 23:07

1 Answer 1

2
$\begingroup$

Knowing, that your actual geometry has horizontal loops, I can work with that, by separating them into curves, alternating the curve direction, and use the next point in curve's position:

Some other techniques could be used, the arbitrary numbers avoided... But that's the gist of it.

With 2 more subdivisions, some numbers divided by 4, some multiplied by 4...

$\endgroup$
2
  • $\begingroup$ Amazing, this looks like a really promising solution! I have one question about how you are able to finely slide the points along the horizontal loop in your demonstration. Playing around within the Blend file, I am only able to snap to every other point using the Add node within the "Next Point's position". $\endgroup$
    – SebaYoung
    Feb 12 at 1:37
  • $\begingroup$ @SebaYoung "Mix" node to interpolate between current position, and target position. $\endgroup$ Feb 12 at 9:30

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .