bfdbc78466ac14d45f353db9aa39cb21bb962701
This is an alternate fix for T35170 since it caused T44415.
Having the undo system manipulate the key-block coordinates is error
prone as (in the case of T44415) there are situations when it's
important to apply the difference with the original shape key.
This reverts dab0bd9de6, and instead
avoids the problem by not using the data in `Mesh.key` as a reference
for updating shape-keys when exiting edit-mode.
The assumption that the `Mesh.key` in edit-mode won't be modified
until leaving edit-mode isn't always true. Leading to synchronization
errors. (details noted in code-comments).
Resolve this by using shape-key data stored in the BMesh.
Resolving both T35170 & T44415.
Details:
- Remove use of the original vertices when exiting edit mode.
- Remove use of the original shape-key coordinates when exiting
edit-mode (except as a last resort).
- Move shape-key synchronization into a separate function:
`bm_to_mesh_key`.
- Split the synchronization loop into two branches,
depending on the existence of BMesh shape-key coordinates.
- Always write shape-key values back to the BMesh CD_SHAPEKEY layers.
This was only done in some cases but is now necessary for all
shape-keys as these are used to calculate offsets where the `Mesh.key`
was previously used.
- Report a warning when the shape-key layer isn't found as this uses an
imperfect method of restoring coordinates which should only be used as
a last resort.
Reviewed By: mont29
Ref D14127
…
.. Keep this document short & concise, linking to external resources instead of including content in-line. See 'release/text/readme.html' for the end user read-me. Blender ======= Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline-modeling, rigging, animation, simulation, rendering, compositing, motion tracking and video editing. .. figure:: https://code.blender.org/wp-content/uploads/2018/12/springrg.jpg :scale: 50 % :align: center Project Pages ------------- - `Main Website <http://www.blender.org>`__ - `Reference Manual <https://docs.blender.org/manual/en/latest/index.html>`__ - `User Community <https://www.blender.org/community/>`__ Development ----------- - `Build Instructions <https://wiki.blender.org/wiki/Building_Blender>`__ - `Code Review & Bug Tracker <https://developer.blender.org>`__ - `Developer Forum <https://devtalk.blender.org>`__ - `Developer Documentation <https://wiki.blender.org>`__ License ------- Blender as a whole is licensed under the GNU General Public License, Version 3. Individual files may have a different, but compatible license. See `blender.org/about/license <https://www.blender.org/about/license>`__ for details.
Description
Languages
C++
78%
Python
14.9%
C
2.9%
GLSL
1.9%
CMake
1.2%
Other
0.9%