2
$\begingroup$

I'm trying to snap a selection of vertices (along their individual x-axis) onto the face of a plane. I'd rather not move each vertex one by one.

enter image description here

I've tried a number of things from the snap menu but I usually get this result:

enter image description here

This is the desired result:

enter image description here

Shrinkwrap isn't really an option as I only want to snap a selection of vertices.

Any ideas?

Cheers.

-----UPDATE-----

This a response to Robin Betts' solution:

Why we need an option to extend vertices along their normals. Imagine I was trying to do the same thing with a cone and I used "Project individual elements" using the face's normal:

enter image description here

The cone's base would shoot straight out:

enter image description here

However, if each vertex was allowed to continue along its normal, instead of relying on the face it would look like this:

enter image description here

I'm sure "Project individual elements" is useful in some scenarios but it would be nice to see a "Project Along Normals" option.

$\endgroup$
1
  • $\begingroup$ Shrinkwrap is an option for selections; you just need to assign them a vertex group to limit the shrinkwrap. $\endgroup$
    – Nathan
    Feb 4, 2022 at 5:49

2 Answers 2

3
$\begingroup$

Blender's Snap system includes a 'Project Individual Elements' option, when the target is set to 'Face':

enter image description here

So, if the loop-to-be-snapped is not aligned to one of the standard orthographic views, the steps might be:

  1. Set the Snap as shown above
  2. F Fill the loop, creating a face to aid alignment if necessary, and select.
  3. With the view orthographic (Numpad 5 to toggle), hit ShiftCtrlNumpad 7 to align it to look through the back of the face.
  4. Tap G, and left-click to accept.

enter image description here

You can then delete the face. If your loop is conveniently aligned to one of the standard views, you won't need the face, and can align for projection without steps 2 and 3.

$\endgroup$
5
  • $\begingroup$ I was hoping I wouldn't have to go with this solution but I guess so. Having to align the camera seems odd, considering the camera's forward view is a vector equal to the normal of the selected vertices. Now imagine I was trying to do the same thing with a cone, but I wanted each vertex to continue along its connected edge's normal instead of shooting directly forward from the camera. I would end up with a longer cone but the base diameter would remain the same. Maybe in the future Blender will include an option to move each vertex along its normal. Thanks for the solution though ;) $\endgroup$
    – gatzkerob
    Feb 4, 2022 at 18:18
  • 1
    $\begingroup$ I shouldn't have said "Camera" - what I meant was the view aligned with the face's normal. See my question update for more info. $\endgroup$
    – gatzkerob
    Feb 4, 2022 at 19:00
  • $\begingroup$ Hi @gatzkerob ! If I'm not mistaken, the direction you want is that of the connected long edge, not the normal? Like a GG + C or Alt-GG .. a slide with the clamp turned off? $\endgroup$
    – Robin Betts
    Feb 4, 2022 at 19:29
  • $\begingroup$ yes the direction of each connected edge. I've tried GG and Alt+GG with all vertices selected, but they all stay vertical when they hit the plane instead of each vertex lying on its own position on the plane. $\endgroup$
    – gatzkerob
    Feb 4, 2022 at 20:07
  • $\begingroup$ @gatzkerob So it's a 'Slide-Srinkwrap'. But you can see why it hasn't been written as a modifier, because it's hard to give the user a way of defining which edges are to be used to define the direction of projection. The tinyCad add-on can do it one edge at a time.. but that's not up to much.. $\endgroup$
    – Robin Betts
    Feb 4, 2022 at 20:15
1
$\begingroup$

Well, I don't know of any method to snap them directly but you can try with shear and custom orientations.

Here is how :

enter image description here

I have here a cylinder and a slanted plane. Select the Plane, go to edit mode and select the face you want to snap the vertices on (in my case I only have one face :D ), then on the header of the viewport, select Normal for Transform orientation :

enter image description here

enter image description here

As you can see, you have the z axis pointing along the normal of the plane. Create a custom Transform orientation from this with the little + near the Transform orientations list (Make sure you have Normal as selected Transform orientation before this):

enter image description here

You have now a custom transform orientation named Face that follows the direction of the plane, you can rename it if you want. For now, select Global to go back to the default transform orientation.

Now go back to Object Mode and select the cylinder, go to edit mode and select the vertex you want to snap, go to Front View orthographic and set the shading mode to Wireframe :

enter image description here

Now, you will "shear" the vertices to roughly get the orientation of the plane, it doesn't need to be perfect, just as close as you can :

enter image description here

You can do this with CTRL + SHIFT + ALT + S or by going to Mesh > Transform > Shear :

enter image description here

As a side note, when you shear some geometry, you can chose what direction you shear it by pressing X or Y after pressing the shortcut. For my case, it's the default X.

With that done, we can select the custom orientation we created in the Transform Orientations option :

enter image description here enter image description here

And just scale the selected vertices on the z axis to 0 by going S then Z then 0 then Enter. This will align the vertices perfectly to the plane. All that is left to do is move them to the plane and we can now snap them with the snap to face option in the header :

enter image description here

The easiest way (and the most accurate way) to do that is to select Global orientation, move them on the X axis with snap to face on and they should snap perfectly to the face while staying in line with the cylinder's direction.

$\endgroup$

You must log in to answer this question.

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