# Proportional height editing on a curved object?

Trying to figure out to proportionally scale a circular extrude along the Z axis so that the height of the curve gradually increases and slopes upward. As if one were traveling up a mountain incline.

I can easily do that with a straight line by selecting the beginning face and using proportional editing. That doesn’t work on a curved selection though.

I'm also open to trying to do this with modifiers or in Geometry nodes if that is possible.

• On one hand to use Geometry Nodes, I think a distance along the "path" (.i.e. curvilinear abscissae) is required. Is a curve used to define the squares to extrude ? On the other hand to use the Displace modifier, could a gray scale be painted, going from white to black along the "path" ? Dec 2, 2023 at 20:58
• I tried curves but was only able to get a profile equally distributed around it instead of a sloping height. I would like to use curves as that would ultimately give me more control over the path. The next thing I was thinking about trying was in fact a gradient displacement. But I need to keep polycount pretty low for this and displacement requires a lot of geometry. Dec 2, 2023 at 23:20
• Would you like the top of the "pillars" to be horizontal (constant Z for the 4 corners) or projected on the slope (as on your first picture) ? Dec 3, 2023 at 8:25
• Two answers are provided, based on Edit Mode or on Geometry Nodes. Dec 9, 2023 at 10:01

(Using Blender 3.6.1 and Geometry Nodes)

Approach: Combine an Extrude Mesh node to create the volume, with a Raycast node to compute the length of extrusion up to a targeted object.

Documentation: About the Extrude Mesh Mode: Faces vs Edges vs Vertices

• Faces: The starting face is displaced such that its centre is on the targeted object. It remains parallel to its original orientation. So its vertices may not be on the targeted object, based on initial relative orientations between this object surface and the extruded face. Lateral faces are created also as surfaces swept by the extruded face edges. Only lateral faces at the boundaries of connected faces are created if the Individual input is false.
• Edges: The starting face edges are displaced such that these mid-points are on the targeted object. So vertices at both ends may not be on the targeted object. The starting face is not displaced. All lateral faces are created as surfaces swept by the extruded edges, even those between connected faces (NB: the Individual input is available only in Faces Mode).
• Vertices: The starting face vertices are displaced such that these lay on the targeted object. Lateral edges are created as lines swept by the extruded vertices. However, no lateral faces are created. The starting face is not displaced.

Procedure: 0. Initialization: Add a GeometryNodes modifier to the curve object.
1. Minimal extrusion: Add an Extrude Mesh node in Faces mode to create only lateral faces at the boundaries. Offset Scale is set to zero, because whatever this input, extruded faces would not lay on the targeted object.
2. Extrusion displacement computation: Add a Raycast node to find the position, on the targeted object, of the new Top vertices created by extrusion at step 1. The Target Geometry and Ray Direction inputs are collected from the Group Input node for flexibility. (NB1: The direction vector is defined in the object coordinate system, not in the world coordinate system. NB2: The displacement is based on the position of the targeted object relative to the curve object, not its original position).
3. Extrusion correction: Add a Set Position node to move on the targeted object the vertices created at step 1.
4. Geometry trimming: Add a Delete Geometry node with Face domain and Only Edges & Faces mode set, to remove the extruded faces (i.e. the Top) and to keep only the lateral faces. This will keep polycount minimal.
5. Normals correction: Based on the input Direction vector orientation relative to the original faces normals, the lateral faces normals might be pointing at the wrong side. if so, add a Flip Faces node. (NB: In Viewport Overlays, switch ON Geometry/Face Orientation to control).
6. Semi-closure: Add a Join Geometry node to fill the beginning of the extruded contour with the original faces.
7. Geometry trimming: Add a Merge by Distance node to seal the rim between both sets of faces, laterals and originals.

Resources:

(Using Blender 3.6.1, curves and Edit Mode)

Approach: Use a mesh made from an extruded curve to snap faces during individual extrusion of faces.

Step 1: Design the slope 1.1. Shape a Bezier or Nurbs curve in top view to follow the path to elevate.
1.2. In perspective view, constraining displacement along Z axis, adjust the elevation of the curve control points.
1.3. Setup the curve parameters with Shape/Twist Method set to Z-Up and Geometry/Extrude set to a value large enough to span the path to extrude width (to adjust in top view). The direction of extrusion is controlled by the tilt attribute (in Edit Mode/Control Points) to set at 90 degrees.
1.4. Convert the curve to mesh, keeping the original if modifications are expected.

Step 2: Extrude the faces 2.1. Go to Edit Mode.
2.2. (optional) Create a Face Maps to group the faces to extrude.
2.3. Activate Snap to/Face Project.
2.4. Select one face at a time, extrude it in normal direction, moving the cursor until it snaps to the slope made at step 1.

Ressources:

• Thanks StefLAncien! This helped a lot. I didn't use your exact method but incorporated most of the steps to achieve what I needed. I used a nurbs curve from the Curve Spirals add-on to create a curve that already had a sloped height. Set Shape/Twist Method to Z-Up. Set curve extrude parameter as desired. Convert curve to mesh. Extruded on Z axis to desired height (I think with Sanp to/Face Project). Finally, to align the uneven bottom faces of the mesh to the same ground plane I selected all bottom vertices and scaled along Z axis to 0. Dec 3, 2023 at 17:51
• You're welcome. Would a non-destructive Geometry Nodes solution be of interest for you ? I could give it a try. Dec 3, 2023 at 20:41
• Except for two or three brief tutorials I haven’t really started on Geometry Nodes yet so it would be of interest to me as a learning exercise. Dec 4, 2023 at 3:17
• You will find a Geometry Nodes solution here. Dec 9, 2023 at 10:05