Page MenuHome

Mirror bisect plane scaled in object space rather than mirror object space?
Closed, ResolvedPublicTO DO


System Information
Operating system: Linux
Graphics card: Intel

Blender Version
Broken: 2.92

Short description of error

When an object which has a mirror modifier using use_bisect_axis and mirror_object also has some degree of rotation and anisotropic scale across the mirror axis, the bisection plane appears in the wrong place:

It looks like the bisection plane is being offset in the object's space instead of in the mirror object's space.

Exact steps for others to reproduce the error

  • Add a cube and an empty to an empty scene.
  • Add a mirror modifier to the cube.
  • Set mirror_object on the mirror modifier to the empty and enable "X" for use_bisect_axis.
  • Rotate the cube by any non-orthogonal angle around the global "Y" axis.
  • Scale the cube by any significant amount around its local "X" xor "Z" axis.

Or just download and open the below file:

Event Timeline

Will (WCN) updated the task description. (Show Details)
Falk David (filedescriptor) changed the task status from Needs Triage to Confirmed.Apr 20 2021, 10:31 AM

I can confirm this on the latest 2.93.0 Beta, branch: master, commit date: 2021-04-19 10:12, hash: rBc75b2019e101.

After taking a closer look, I found that the cube object had a non-uniform scale. Applying the scale solves the problem.
The bisecting could maybe take the scale into account, but this would not classify as a bug (unless it worked in a previous version).
Closing this for now.

@Falk David (filedescriptor) Anisotropic/non-uniform scale is explicitly a part of the description and reproduction steps. Applying the scale doesn't solve the problem so much as avoid it, and isn't an option for objects with shared data.

The bisecting already does take scale into account— Just not always correctly. If you scale the object uniformly in the axes that intersect with the mirror plane (so Z and X but not necessarily Y in the example), then the bisection plane stays at the world-relative center and angle of the mirror object. Likewise, if you rotate or translate the object, the bisection plane also stays at the correct place. It's only with non-uniform scale along axes which intersect with the mirror plane that the behaviour suddenly changes from how it behaves with all other transformations.

Note too that the actual mirror plane itself also stays at the world-relative center and angle of the mirror object. It's only the bisection plane that becomes separated from the mirror plane (which, in and of itself, is also a thing which should probably never happen).

The expected behaviour of the mirror modifier is for its mirror and bisection planes to be positioned at the same position and angle in world space as the mirror object.
A corollary of this is that the bisection plane should never be separated from the mirror plane.

This issue describes a reproducible scenario where that expected behaviour is clearly broken. Why would it not be classified as a bug?

The bisecting could maybe take the scale into account, but this would not classify as a bug (unless it worked in a previous version).

I looked at the code as it currently is and this is working as intended. That's why I would say it is not a bug. The scale is just not taken into account. And the fact that uniform scale is working is just a by-product of how matrix multiplication works.
@Campbell Barton (campbellbarton) Would you say we should classify this as a bug?

I know I'm just a user with an opinion.

But the tooltip for the "Bisect" options says "Cuts the mesh across the mirror plane". And this is a scenario where it does not cut the mesh across the mirror plane. Even if the behaviour was somehow originally intended, it still clearly defies both documentation and reasonable user expectation/utility.

Falk David (filedescriptor) reopened this task as Confirmed.Apr 22 2021, 7:15 PM
Falk David (filedescriptor) changed the subtype of this task from "Report" to "To Do".

@Will (WCN) I agree with you that this is confusing. I will reopen the report and mark it as a to-do. There is no good reason, why the bisection is affected by the scale of the object.