1
$\begingroup$

As the question says, I would like to subdivide a face using geometry nodes but only in one direction (the direction with the longer edges). Using standard tools I would just select the edges and subdivided and that would divide the face as well, is this possible using geometry nodes?

Basically I want to turn the first photo into the second using geometry nodes as part of a larger project (and I can't use a grid as the project will have the original geometry being extruded in the viewport) and I want it to automatically subdivide the longer faces.

Thankyou so much for any help you can offer.

Before and Intended Outcome

$\endgroup$
1
  • $\begingroup$ No, unfortunately this is not possible with Geometry Nodes without replacing the object with new geometry. $\endgroup$
    – quellenform
    Commented Jan 8, 2023 at 17:24

2 Answers 2

1
$\begingroup$

As noted in the official documentation, the node Subdivide Mesh always subdivides a face at each edge:

The Subdivide Mesh node adds new faces to mesh geometry using a simple interpolation for deformation.

Therefore, there is no way to limit the subdivision of a face to a certain area or range with a simple node.

However, there are some tricks that use Geometry Nodes to force a subdivision (albeit some with dubious results), but this is always done by creating a new geometry:

$\endgroup$
1
$\begingroup$

Using the setup pictured below and outlined in this video, you can stretch curve lines along the faces' x and z axis:

enter image description here

enter image description here

enter image description here

Next, edges are compared to get the longest of the two as per your requirements. A boolean value is captured on one set of lines to switch instances later:

enter image description here

Next, a ray source and ray target are created using the smallest of the x and z scales as the prior setup isolated the largest axis upon which the perpendicular axis will be instanced.

A narrow grid (target) and line (source) are created with two orientations that are switched via the prior captured boolean value. This is to account for the change in orientation when the largest curves are forced from the initial, differing x and z axis of each face:

enter image description here

Finally, the target face normals are sampled with the source edge index and the same index is used to sample the edge's position for the raycast's inputs. The source edges are extruded using the "Hit Normal" as the offset and the "Hit Distance" as the scale:

enter image description here

The result works as long as each face corner is 90°, however the angle between the faces themselves doesn't matter:

enter image description here

enter image description here

However, because there are two targets per corner (enlarged here for clarity):

enter image description here

the other, undesired face might be used as the "Hit Normal," but slightly moving the edge can easily correct it:

enter image description here

Still, if your use case is actually just one plane, it should work flawlessly. The inconsitencies with this setup come from using more than one connected plane only. The distance between the loop cuts can be adjusted via the resample rate of the longer axis:

enter image description here

$\endgroup$

You must log in to answer this question.

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