Page MenuHome

Subsurf (adjust edit cage to modifier result disabled) and armature modifier (adjust edit cage to modifier result enabled) causes transformation distortion on certain vertices
Closed, ResolvedPublicBUG

Description

System Information
Win8, GTX1070

Blender Version
Broken: 2.79 release and master

Short description of error

Subsurf (adjust edit cage to modifier result disabled) and armature modifier (adjust edit cage to modifier result enabled) causes transformation distortion on certain vertices. Meaning, if you select certain vertices and transform then they won't follow the cursor but will be distorted.

Exact steps for others to reproduce the error
Attached blend:

Just select the top vertices and move up along Z axis.

  1. Create a cube.
  2. Add a loopcut in the middle.
  3. Add an armature (bone).
  4. Automatically weigh the cube to the armature.
  5. Add a subsurf modifier to the cube.
  6. Make sure adjust edit cage to modifier is disabled for subsurface modifier and enabled for armature.
  7. Select the top vertices of the cube and move them along the Z axis (axis lock).

Result: Top vertices don't follow the Z axis but the movement is distorted.
Expected: Top vertices follow the Z axis.

Enabling adjust edit cage to modifier for the subsurf modifier too fixes the problem.

Event Timeline

Ray Molenkamp (LazyDodo) lowered the priority of this task from 90 to 50.Mar 11 2018, 4:52 PM

Can confirm the behavior, but unable to say if it's working 'as designed' or not.

This is a limitation of the transform system that does not use the modifier's crazyspace correction.
However, this could be supported...

@Germano Cavalcante (mano-wii): not exactly sure if this applies here as well? (strange thing is that the armature doesn not really contribute any deformation at all...)

Germano Cavalcante (mano-wii) changed the subtype of this task from "Report" to "Bug".

I was actually wrong.
The trasform system supports crazyspace correction! (Gizmo is a different system).
The problem here is that the crasyspace is being calculated incorrectly.