Revision 9cd9386 by Alexander Gavrilov January 8, 2021, 10:29 (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 4053af1 by Alexander Gavrilov January 8, 2021, 10:29 (GMT) |
Armature: fix bad B-Bone deformation blending 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. 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. |
Revision c44e9b4 by Alexander Gavrilov January 8, 2021, 10:29 (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 8da6446 by Alexander Gavrilov January 8, 2021, 10:29 (GMT) |
Copy Transforms: implement Invert, Fix Shear and more Mix options. This constraint can be naturally viewed as a prototype for a future 4x4 matrix math node (or subset thereof), since its basic semantics already is matrix assignment. Thus it makes sense to add math options to this constraint to increase flexibility in the meantime. This patch adds support for several operations that would be useful: - An option to fix shear in the incoming target matrix. - An option to invert the target matrix. - More ways to combine target and owner matrix. Shear is known to cause issues for various mathematical operations, so an option to remove it at key points is useful. In the future node system this would be a separate operation, but due to the limits of the constraint stack it has to be built in for now. Inverting a matrix is also an operation that can be useful to have. For some uses it may be useful to invert components separately, so implement this by checking the Mix mode setting to avoid UI options. Finally, add two more ways to combine the matrices (multiplied by two due to the necessity for the Before/After choice). Now there are three combine modes: Full implements regular matrix multiplication as the most basic option. Split Channels combines location, rotation and scale separately. Looking at D7547 there is demand for such a mode in some cases, and even with nodes it's cumbersome to rig manually every time. Finally, Aligned emulates the 'anti-shear' Aligned Inherit Scale mode, and basically uses Full for location, and Split for rotation/scale. Differential Revision: https://developer.blender.org/D9469 |
Revision 9b0b961 by Alexander Gavrilov January 8, 2021, 10:29 (GMT) |
Limit Rotation: add an Euler Order option and orthogonalize the matrix. Since Limit Rotation is based on Euler decomposition, it should allow specifying the order to use for the same reasons as Copy Rotation does, namely, if the bone uses Quaternion rotation for its animation channels, there is no way to choose the order for the constraint. In addition, add a call to orthogonalize the matrix before processing for the same reasons as D8915, and an early exit in case no limits are enabled for a bit of extra efficiency. Since the constraint goes through Euler decomposition, it would remove shear even before the change, but the rotation won't make much sense. Differential Revision: https://developer.blender.org/D9626 |
Revision dadd4fd by Alexander Gavrilov January 8, 2021, 10:29 (GMT) |
Constraints: add support for a new Owner Local Space for targets. Add a new transformation space choice for bone constraints, which represent the local transformation of the bone in the constraint owner's local space. The use case for this is transferring the local (i.e. excluding the effect of parents) transformation of one bone to another one, while ignoring the difference between their rest pose orientations. Owner Local Space replaces the following setup: * A `child` bone of the `target`, rotated the same as `owner` in rest pose. * A `sibling` bone of the `target`, positioned same as `child` in rest pose and using Copy Transforms in World Space from `child`. * The `owner` bone constraint uses Local Space of `sibling`. (This analogy applies provided both bones use Local Location) Since the space list is getting long, this adds a couple of separators. Differential Revision: https://developer.blender.org/D9493 |
Revision 1c7dae9 by Alexander Gavrilov January 8, 2021, 10:29 (GMT) |
Constraints: refactor the D7437 patch adding Custom Space for constraints. As mentioned in the comments to that patch, I had an idea for a different way to do some technical aspects, but it was too complicated to force changes in the original patch. Thus I submit this follow up patch. First, instead of modifying all the get_constraint_targets and flush_constraint_targets callbacks, introduce wrapper functions for accessing constraint targets, convert all code to use them, and handle the new reference there uniformly for all constraints. This incidentally revealed a place in the Collada exporter that didn't clean up after retrieving the targets. Also, tag the special target with a flag so other code can handle it appropriately where necessary. This for instance allows dependency graph to know that the Use B-Bone Shape option doesn't affect this specific target. Finally, rename and simplify the function for initializing the custom space, and make sure it is called everywhere necessary. Differential Revision: https://developer.blender.org/D9732 |
Revision 1f590fb by Alexander Gavrilov January 8, 2021, 10:29 (GMT) |
Weight Paint: avoid creating very small values with locked weights. When painting using Auto-Normalize or Lock Relative with some groups locked, the locked weights may not add up precisely to 1 because of precision limitations, which results in creating nonzero weights close to FLT_EPSILON. With Lock Relative display mode this is very obvious and annoying (random red points amid black or blue), so add an epsilon check to consider less than 1e-6 unlocked weight to be the same as 0. In addition, in cases when no weight can be painted due to locks, don't create vertex group entries at all if they don't exist yet. Also, don't run Auto Normalize when not painting a deform group. Differential Revision: https://developer.blender.org/D10000 |
Revision eb566b6 by Alexander Gavrilov January 8, 2021, 10:29 (GMT) |
Cloth: add a vertex group setting to exclude from object collision. This can be useful as a workaround on the boundary with the pinned vertices in some situations among other things, and completely copies the existing design of the self collision vertex group setting. Differential Revision: https://developer.blender.org/D10043 |
January 8, 2021, 10:20 (GMT) |
Use the term "N-gon" instead of "Polygon" for triangulation method This was reported for the Triangulate geometry node, but was also true for the triangulate modifier and in exporters. Note the modifier was introduced with "Ngon Method" in rBa7b44c82e5b9 but was renamed to "Polygon Method" in rBf4762eb12ba5. Since quads are also polygons (and quads have their own method), the term "N-gon" is more appropriate here and is also described in the glossary https://docs.blender.org/manual/en/2.92/glossary/ index.html#term-N-gon Docs have been updated in rBM7539 (partially - the method would also have to be renamed once this patch lands). Note this also fixes the wrong enum used for the alembic exporter. Fixes T83907 Maniphest Tasks: T83907 Differential Revision: https://developer.blender.org/D10022 |
January 8, 2021, 09:24 (GMT) |
Cloth: completely exclude fully pinned triangles from collision. Currently such triangles are effectively already excluded, because the calculated forces are not applied to pinned vertices. However these forces are still being computed, which is inefficient. This adds an early check for triangles where all vertices are pinned during BVH overlap detection, which significantly speeds up certain use cases with big fully pinned areas that happen to overlap a collider. In case of self collision both triangles must be fully pinned to exclude safely, because the computation is symmetric and handles two triangles at the same time. Differential Revision: https://developer.blender.org/D10041 |
January 8, 2021, 09:24 (GMT) |
Surface Deform: the Strength setting is not bind-specific. It is used during evaluation so it shouldn't be greyed out in the UI. Ref D10040 |
January 8, 2021, 09:24 (GMT) |
Surface Deform: optimize memory allocation in the evaluation code. Using malloc to allocate a temporary array for each vertex, which most commonly contains just 4 elements, is not efficient. Checking the mode with a switch is also better. Differential Revision: https://developer.blender.org/D10040 |
January 8, 2021, 09:23 (GMT) |
GPU: Enable HQ normal work around on Linux. Linux does not report the driver version. It does report the OpenGL version. This change will check the OpenGL version to enable the HQ normal work around. |
January 8, 2021, 06:24 (GMT) |
VSE: Hide cache settings and adjust defaults Adjust default cache settings for all files to store raw and final images. All settings are still available when developer extras option is enabled in user preferences. This is part of design task T80278 Differential Revision: https://developer.blender.org/D9745 |
January 8, 2021, 03:24 (GMT) |
Cleanup: Use LISTBASE_FOREACH macro |
January 8, 2021, 02:19 (GMT) |
Fix file-handle leak when parsing xdg user directories |
January 7, 2021, 22:28 (GMT) |
Fix T83868: Disabled or inactive list items are not grayed out The cause for this was quite simple-- a misplaced bitwise operation before passing a value to the function that grayed out buttons based on their state, caused by refactoring in rB933bf62a611f before committing. What makes the situation a little more confusing is that the theme colors are overridden for list buttons in UI lists, necessitating a second call to `ui_widget_color_disabled()`. Ideally that wouldn't be necessary. |
January 7, 2021, 20:58 (GMT) |
Revision 97d76ec by Alexander Gavrilov January 7, 2021, 18:36 (GMT) |
Surface Deform: fix binding vertex artifacts causing spikes. There are two issues here. First, like in T81988 there are cases where the modifier would deform some vertices immediately after bind. This is caused by wrong assumptions in the code about the possible relative angles between various vectors, which can cause negative weights that don't blend correctly to appear. Specifically, it seems originally the code assumes that the centroid-point vector in the polygon plane lies somewhere between the mid-edge vectors. This is however not necessarily the case for distant vertices, because the polygon is not guaranteed to be truly planar, so normal projection may be a bit off. The code has to use signed angles and checks to support all possible angular arrangements. The second issue is very thin and long triangles, which tend to be very spatially unstable in their thin dimension, resulting in excess deformation. The code was weighting distance using the distances between the centroid and the mid-edge points, which in this case end up as nearly opposite vectors of sizable length and don't correctly represent how thin the triangle actually is. It is thus better to use centroid-to-line distances, and an additional even stricter value for the midpoint that will use only 3 vertices at evaluation time. |
|
|
|


Master Commits
MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021