Single vertex shows strange behavior when moved in 3D space
Closed, InvalidPublic

Description

Blender Version
Broken: hash 78c2242
Worked: (optional)

Short description of error

open

and grab the selected vertex (using "G")
Try to move the vertex around. It does not move freely as expected .

Exact steps for others to reproduce the error

  • type "G" and move the selected vertex: The vertex does only move along an invisible line in 3D
  • Grabe the entire mesh: all verts except the one behave correct
  • switch to Face Select mode: Same behavior.

Something tells this vertex to misbehave :)

Details

Type
Bug

Worth to add: it moves, but only by 0.000something. And after using "smooth selected vertices" it start to moving normally.

Unchecking the Toolbar > Options> Mesh Options > Mesh Mirror > X Mirror option will allow the vertex to move freely.
Not sure why it is stuck for that specific vertex (index 92).

Also, upon opening, the vertex 'X' position is .00078. If you manually change it to something like .00079 and above or .00076 and below, it works normally.

-update, also if you select a another close verex vertically and set that 'x' value to .00078, it also seems to resist changing the 'x' value from that point also upon Grabbing.

This happens because the local coordinate 'x' of the locked vertex has the value 0.0. So it becomes a "reflection" of itself.

When X-Mirror is enabled, the only thing that indicates whether a pair of vertices is mirrored or not are their coordinates.

If the coordinate of a vertex is (x, y, z), its mirrored vertex would have the coordinate (-x, y, z). Vertices with 'x' zero do not move either to the right or to the left to remain mirrored.

Therefore this behavior is expected. But some questions remain open:

  • Would it be better to disable this behavior when proportional editing is not enabled?;
  • Should Topology Mirror prevent this from happening?;

It sounds odd to do a mirror on self when x location is 0.
Would it be convenient to add a simple check like:

if (no mirrored vertex found or mirrored vertex is self) then treat as simple vertex

It makes sense to have vertices on symmetrical plane locked on this plane by X Mirror when they are included into a bigger selection.

You just have to try to move an edge or a face that have vertices on a YZ plane at X=0 with X Mirror ON to understand why.

But if the selection is limited to vertices on YZ plane at X=0, I don't see an issue to disable the locking of vertices.

This is working as intended so its not a bug,
we've had many reports over the years from users leaving x-mirror on by accident, then noticing strange behavior - in nearly all cases it's because they're not actually editing a symmetrical mesh.

We could have visual feedback for this, see related patch: D2839