Revision cc617d6 by Alexander Gavrilov January 13, 2021, 14:34 (GMT) |
Armature: add B-Bone lengthwise scaling and custom handle scaling options. In addition to the base bone transformation itself, B-Bones have controls that affect transformation of its segments. For rotation the features are quite complete, allowing to both reorient the Bezier handles via properties, and to control them using custom handle bones. However for scaling there are two deficiencies. First, there are only X and Y scale factors (actually X and Z, but this is the legacy naming), while lengthwise all segments have the same scaling. The ease option merely affects the shape of the curve, and does not cause actual scaling. Second, scaling can only be controlled via properties, thus requiring up to 6 drivers per joint between B-Bones to transfer scaling factors from the handle bone. This is very inefficient. This patch addresses these deficiencies by adding Length scale inputs, and providing toggles to apply custom handle local scale channels to the now four scale-related properties. The 'Length' name is used to avoid confusion due to the X/Y vs X/Z naming. The two Length scale inputs control the ratio between the lengths of the start and end segments of the bone: although for convenience two inputs are provided, the whole chain is still uniformly scaled to fit the curve. A Scale Easing option is provided to multiply the easing value by the Length scale factors to synchronize them - this produces a natural scaling effect where both the shape of the curve and the scale is affected. The second issue is addressed by providing toggles for each handle that multiply each of the X, Z, Length and Ease values by the matching Local Scale channel of the handle bone, thus replacing trivial drivers. The Scale Easing option has no effect on this process since it's easy to just enable both Length and Ease buttons. Finally, this fixes a strange behavior where the segments were not actually scaled in the Y direction to match their actual length, thus producing gaps or overlap depending on the shape of the curve. For transformation the change should be very small if enough segments are used, but this will affect the results of the Copy Transforms and Armature constraints, so a backwards compatibility option is provided. Newly created bones default to the new behavior. Differential Revision: https://developer.blender.org/D9870 |
Revision e08919b by Alexander Gavrilov January 13, 2021, 14:34 (GMT) |
Bone Overlay: support bone wireframe opacity settings. When weight painting the bone overlay is extremely intrusive, effectively requiring either extensive use of hiding individual bones, or disabling the whole bone overlay between selections. This addresses the issue by adding two bone opacity sliders that are used for the 'wireframe' armature drawing mode. One directly controls the opacity in a uniform way. The other one allows fade based on the depth between the near and far clip planes in order to provide an automatic visual cue about which bones are closest. |
Revision ece7adb by Alexander Gavrilov January 13, 2021, 14:34 (GMT) |
Force Fields: implement early filtering by the Affect flags. Most fields have Affect Location and Rotation options that switch off their effect, but they are only checked as the last step after the force is already computed. It is more efficient to check it when building the list of field objects, just like zero weight. It is also possible to check the strength-related fields for 0. As an aside, this adds Location to Texture fields (they don't handle rotation) and both Location & Rotation checkboxes to Fluid Flow. Boid and Curve Guide remain without options for now as they are completely different from others. Differential Revision: https://developer.blender.org/D10087 |
Revision 24d34f2 by Alexander Gavrilov January 13, 2021, 14:34 (GMT) |
Depsgraph: connect up drivers on various physics properties. It seems drivers for physics properties weren't being linked to evaluation nodes. This connects settings used by modifiers to Geometry; particle settings and rigid body data to Transform which seems to contain rigid body evaluation; and force fields to object Transform, since fields can exist on empties. Differential Revision: https://developer.blender.org/D10088 |
Revision bdb6142 by Alexander Gavrilov January 13, 2021, 14:31 (GMT) |
Armature: fix B-Bone deformation blending artifacts with Preserve Volume. The double quaternion blending method in addition to the deformation matrix of each bone requires their rest matrices. For ordinary bones this literally should use the bone rest matrix without any ambiguity. However, it was also using the bone rest matrix for all of its B-Bone segments, which is incorrect and causes strange deformation in some cases involving extreme non-uniform scale, especially at boundaries between different B-Bones. There is also a similar known issue that happens with scale at bending joints, and this fix reduces the distortion when both bones are B-Bones. This changes both the Armature modifier and the Armature constraint to use the actual segment rest matrices. Unlike bones, these can have scale even in rest pose, so normalization is required. Differential Revision: https://developer.blender.org/D10003 |
January 13, 2021, 14:03 (GMT) |
Fix Increment Snapping Without Constraints in Non-Axis-Aligned Views The incremental snap was always operating in the local space, which in most cases is the VIEW type orientation. Use only local space when the operation is affected by constraint. Differential Revision: https://developer.blender.org/D10052 |
January 13, 2021, 14:03 (GMT) |
Fix T84453: Crash bezier curves transfrom The pointer allocated to the `TransData` was being incorrectly incremented, causing misalignment and consequently `heap-buffer-overflow`. Because of this, `TD_NOTCONNECTED` was being set in a strange way that did not correspond to other types of `TransData`. The solution is to not increment the `TransData` pointer and set `TD_NOTCONNECTED` only for "unconnected" segments. The code was also a bit deduplicated. |
January 13, 2021, 14:02 (GMT) |
Fix file-handle leak when parsing xdg user directories |
January 13, 2021, 14:02 (GMT) |
Fix BKE_blender_atexit_unregister error removing from linked list This is an old bug exposed by having multiple atexit calls since c65c4149c9be8a1811eb389f657216fab071dfc5. |
January 13, 2021, 14:02 (GMT) |
Fix T82952: Crash changing mesh data block and switching scenes Regression in 33ac3582bbd5551bdfbc7ef8856640b5e61888f8. |
January 13, 2021, 14:01 (GMT) |
Fix T79779: Pick shortest UV face-path ignores sticky setting |
January 13, 2021, 14:01 (GMT) |
Fix T83372: Point.select can be True when unselected |
January 13, 2021, 14:01 (GMT) |
Fix T84426: Limit dissolve ignores selection with custom normals Regression in 9969c2dd165c7d8ffe607a5a050a80aa59ac50be. Add note that custom normal calculation functions write into to tags. |
January 13, 2021, 14:00 (GMT) |
Fix T82960: Inaccurate selection on collapsed outliner rows After rB15083d9e1 the outliner tree is not rebuilt after expanding or collapsing rows. Because the tree is no longer rebuilt the positions and flags of the elements are not cleared when collapsing a row. This caused hover highlights and selections on the collapsed child icons to be incorrect in many cases. For example, only the direct children of a collapsed element are drawn inline. If any grandchild elements had been previously icon row flagged they would continue to be evaluated as icon row elements despite being hidden. In this case the x coordinates of the child and grandchild would overlap causing selection to appear erratic. Now the flags for inline row icons are explicitly cleared, which was previously only done because the tree was rebuilt on collapsing rows. |
January 13, 2021, 14:00 (GMT) |
Fix T83801: UVEditor translation ignores "Pixel Coordinates" and aspect ratio Caused by rB4eda60c2d82d. T83801 reported not moving in pixel space, but even without that toggle above commit caused the translation to not take apsect ratio into account properly [a translation of 1 on the x axis for example on an image with non 1:1 aspect ration caused the UVs to not end up in the same place on the next 'tile'] Above commit removed 'removeAspectRatio()' [the counterpart of applyAspectRatio -- which does the pixel coord correction internally] from 'applyTranslation()'. This was also reported in T83352 [which was closed by rBf3b08af24c9f -- but that only solved the displax in header, not the actual transformation] Now bring back 'removeAspectRatio()'. Maniphest Tasks: T83801 Differential Revision: https://developer.blender.org/D9869 |
January 13, 2021, 13:59 (GMT) |
Fix T83851: Python: operator macros cause a crash Caused by rB7447eb7e7430. This is just a copy-paste error [previous LISTBASE_FOREACH substitution of marco loop in that file has a different starting point which is not appropriate here] Maniphest Tasks: T83851 Differential Revision: https://developer.blender.org/D9872 |
January 13, 2021, 13:59 (GMT) |
Fix T83875: Converting Proxy to override crashes blender. Some weird proxies apparently can have a local collection instancing... Not sure this is even really valid for proxies, but in any case we cannot override that, just detect and properly cancel the operation then. Should be backported to 2.91.1 should we do it. |
January 13, 2021, 13:59 (GMT) |
Fix crash sliding effect sequence strips Off by one error in array access. |
January 13, 2021, 13:58 (GMT) |
Fix T83361: UV Editor does not draw pinned selected UVs as pinned Caused by rB4212b6528af. outlineColor is computed by the vertex shader, so not a uniform. So outlineColor was undefined. note: it was still possible to run into the situation that a selected UV is drawn ontop of a selected pinned UV [you had to disable sticky selection for this], now also make sure selected-pinned are drawn topmost, then selected, then unselected UVs. Maniphest Tasks: T83361 Differential Revision: https://developer.blender.org/D9786 |
January 13, 2021, 13:57 (GMT) |
Fix T83296: Unknown actions no longer perform an undo push str_len_clip is initialized to 0, so when "Unknown Action" occurs, set str_len_clip appropriately. Regression in 0688309988e546382748b9e755d84ae8a5059192 Ref D9759 |
|