April 22, 2021, 16:15 (GMT) |
Splines: Cleanup |
April 22, 2021, 15:35 (GMT) |
Fix: Deactivate audio settings when output is None |
April 22, 2021, 15:35 (GMT) |
Animation: add "LocRotScaleCProp" keying set Add a keying set that includes location, rotation, scale, and custom properties. The keying set is intentionally not based on the "Whole Character" keying set. Instead, it is generic enough to be used in both object and pose animation, making it possible to quickly switch between animating characters and props without switching keying sets. This is, according to @rikkert, what the Blender Studio animators need 99.9% of the time. |
April 22, 2021, 15:35 (GMT) |
Cleanup: doversion for 3.0 is using FileData |
April 22, 2021, 15:35 (GMT) |
Fix: geometry nodes logs incorrect preview data Under some circumstances, modifiers are evaluated more than once. One time to compute the actual output geometry and another time with `MOD_APPLY_ORCO`. This design probably has to be revisited at some point in the context of geometry nodes. However, that would be much more involved than a bug fix. The issue was that during the second evaluation, the node tree is evaluated based on a slightly different input geometry. The data generated during the second evaluation overwrote the cached data from the first evaluation, resulting in incorrect data that is shown in the spreadsheet. The fix for now is to simply not log any data in the second evaluation. |
April 22, 2021, 15:35 (GMT) |
Fix T87090: VSE scrubbing locks up blender Speed effect caused, that some raw frames are re-used for multiple final frames. When cached final frame is freed due to memory being full, it tried to free also lower level cached frames that were used during compositing. Some lower level cached frames were already freed by different final frame and `BLI_ghash_remove()` failed. Check if key still exists in hash or if linked keys were overwritten before removing them. Reviewed By: sergey Differential Revision: https://developer.blender.org/D10909 |
April 22, 2021, 15:35 (GMT) |
Fix T87615: No snapping to objects instanced by Geometry nodes The code of the snapping system to interact the objects in the scene only considers instances what comes from "DUPLI" objects. This commit adds instances coming from Geometry nodes. Differential Revision: https://developer.blender.org/D11020 |
April 22, 2021, 15:35 (GMT) |
Geometry Nodes: Get attribute domain and type without allocation Because we use virtual classes (and for other reasons), we had to do a small allocation when simply retrieving the data type and domain of an existing attribute. This happened quite a lot actually-- to determine these values for result attributes. This patch adds a simple function to retrieve this meta data without building the virtual array. This should lower the overhead of every attribute node, though the difference probably won't be noticible unless a tree has very many nodes. Differential Revision: https://developer.blender.org/D11047 |
April 22, 2021, 15:35 (GMT) |
Fix missing include |
April 22, 2021, 15:35 (GMT) |
Geometry Nodes: Add initializer for attribute creation Previously we always had to set attribute values after creating the attribute. This patch adds an initializer argument to `attribute_try_create` which can fill it in a few ways, which are explained in code comments. This fixes T87597. Differential Revision: https://developer.blender.org/D11045 |
Revision 3e66bf4 by Alexander Gavrilov April 22, 2021, 15:30 (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 c5a4615 by Alexander Gavrilov April 22, 2021, 15:14 (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 5b33983 by Alexander Gavrilov April 22, 2021, 14:46 (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 364324e by Alexander Gavrilov April 22, 2021, 14:46 (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 4017774 by Alexander Gavrilov April 22, 2021, 14:46 (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 3a83f83 by Alexander Gavrilov April 22, 2021, 14:46 (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 54d5948 by Alexander Gavrilov April 22, 2021, 14:46 (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 |
April 22, 2021, 14:37 (GMT) |
Geometry Nodes Curves: Rename files |
April 22, 2021, 14:37 (GMT) |
Merge branch 'master' into temp-gpencil-masking Conflicts: source/blender/blenloader/intern/versioning_300.c |
April 22, 2021, 14:25 (GMT) |
Merge branch 'master' into geometry-nodes-curve-support |
|