0055ae01abbf0784eb3a64a6c50be7a5183b9524
Currently vertices are mapped to B-Bone segments without taking the rest pose curve into account. This is very simple and fast, but causes poor deformations in some cases where the rest curvature is significant, e.g. mouth corners in the new Rigify face rig. This patch implements a new mapping mode that addresses this problem. The general idea is to do an orthogonal projection on the curve. However, since there is no analytical solution for bezier curves, it uses the segment approximation: * First, boundaries between segments are used for a binary space partitioning search to narrow down the mapping to one segment. * Then, a position on the segment is chosen via linear interpolation between the BSP planes. * Finally, to remove the sharp discontinuity at the evolute surface a smoothing pass is applied to the chosen position by blending to reduce the slope around the planes previously used in the BSP search. In order to make per-vertex processing faster, a new array with the necessary vectors converted to the pose space, as well as some precomputed coefficients, is built. The new mode is implemented as a per-bone option in order to ensure backward compatibility, and also because the new mode may not be optimal for all cases due to the difference in performance, and complications like the smoothed but still present mapping discontinuities around the evolute surface. Wiki: https://wiki.blender.org/wiki/Source/Animation/B-Bone_Vertex_Mapping Pull Request: https://projects.blender.org/blender/blender/pulls/110758 Pull Request: https://projects.blender.org/blender/blender/pulls/110758
…
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.
Project Pages
Development
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 for details.
Description
Languages
C++
78%
Python
14.9%
C
2.9%
GLSL
1.9%
CMake
1.2%
Other
0.9%
