Page MenuHome

Shapekeys not targeting the right vertex position with Subdiv
Closed, ResolvedPublicBUG

Description

System Information
Operating system: Linux-5.4.0-47-generic-x86_64-with-debian-bullseye-sid 64 Bits
Graphics card: Quadro GP100/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 440.100

Blender Version
Broken: version: 2.91.0 Alpha, branch: master, commit date: 2020-09-17 05:34, hash: rBf085ebba58d7

Short description of error
When sculpting on a shapekey it works just fine but if a subdivision surface modifier is used (or Multires with the "Scultp Base Mesh" option used) it won't work.
Instead of targeting the vertex positions of the shapekey it will always go for the base shape.

Exact steps for others to reproduce the error

  • Create an object and add a base and Key 1 shapekey
  • Change the value for "key 1" to 1
  • Add a subdiv modifier and subdivide
  • Enter sculpt mode and disable the "Use Deform only" option in the header
  • Try sculpting the shapekey
  • Enable the Grab Active Vertex option in the Grab brush to see the targeted wires more clearly

Event Timeline

Germano Cavalcante (mano-wii) changed the task status from Needs Triage to Confirmed.Sep 21 2020, 7:34 PM
Germano Cavalcante (mano-wii) changed the subtype of this task from "Report" to "Bug".

@Pablo Dobarro (pablodp606) @Sergey Sharybin (sergey) Since this fix is needed very soon for production it makes sense to push up the priority.

Is the solution in the patch ok?

@Pablo Dobarro (pablodp606) I tested it and it seems to work fine (like 2.83 with the shrunken cage) when used with a subd modifier or when using the multires on level 0.
With the option "Sculpt Base Mesh" it's still broken but that could be fixed at another point?

I think the sculpt base mesh option is a separate issue. What you are trying to do using the sculpt base mesh feature is something that could be done with a refit/apply base for the modifier?

Is the solution in the patch ok?

Address the inlined comment in the code and the patch is fine.
Also don't forget that the corazyspace fix from the discussion in the patch is to be finished.

I think the sculpt base mesh option is a separate issue. What you are trying to do using the sculpt base mesh feature is something that could be done with a refit/apply base for the modifier?

@Pablo Dobarro (pablodp606) I don't think that makes sense for what this fix is for. Just to explain what I am using them for usually:
I am mainly using it to create various expression tests in a non destructive way like these:
https://cloud.blender.org/p/stylized-character-workflow/5d4a99d97b4f5e512c939903

The workflow I am using this for is explained in more detail in this video:
https://cloud.blender.org/p/stylized-character-workflow/5da05942e2e7bac4cc81bd5a

But Essentially: To create various expression test sculptings I am roughly retopologizing a sculpt and re-projecting all of the missing details onto a multires modifier with a shrinkwrap modifier.
Afterwards I start modeling & sculpting shapekeys on the base resolution for various deformations like open eyes, closed mouth, and many expressions. These I can then mix & blend in a non destructive way to create lots of expression sculpts quickly & experiment or polish away any design issues on all expressions at the same time.

The main issue right now is that I can only sculpt on the shapekeys if I disable any multires or subd modifiers completely. This adds a lot of toggling to see the subdivided result. If the "Sculpt Base Mesh" option would work properly with shapekeys, the workflow would be most efficient because any changes on the base resolution can be immediately visible in sculpt mode without switching to object mode all the time..

I could also sculpt these expressions in a destructive way without shapekeys but then once anything needs to be changed on a base level like eye size or face proportions I would have to do it for every single expression separately again & again.
Shapekeys of course aren't the best way of working like that because of performance issues and missing multires layer support but they are the only feature we have to do this right now.