Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-10-05Insert keyframes while preserving shape of curveSybren A. Stüvel
Apply the De Casteljau algorithm to split the Bèzier curve at the X coordinate where the new key is inserted, and uses the result to update both the newly inserted and surrounding handles. For curves that use Auto keyframes this has been largely addressed by the new algorithm from D2884. This commit extends this to non-auto handles. This code is heavily based on D3172 by Alexander Gavrilov (@angavrilov). Manifest Task: https://developer.blender.org/T81353
2020-09-30Cleanup: convert gforge task ID's to phabricator formatValentin
Cleanup old tracker task format to the new. e.g: [#34039] to T34039 Ref D8718
2020-09-16Cleanup: spellingCampbell Barton
2020-09-15Fix T75881: Animation, limitation of Bézier HandlesTonyG
Relax limits of FCurve Bézier handles during evaluation. FCurve handles can be scaled down to avoid the curve looping backward in time. This scaling was done correctly but over-carefully, posing unnecessary limitations on the possible slope of FCurves. This commit changes the scaling approach such that the FCurve can become near-vertical. Bump Blender's subversion from 291.0.1 to 291.0.2 to ensure that older animation files are correctly updated. Reviewed By: sybren Differential Revision: https://developer.blender.org/D8752
2020-09-15Cleanup: FCurve, comments should be sentencesTonyG
No functional changes.
2020-09-09Cleanup: reduce variable scopesJacques Lucke
2020-09-02Cleanup: use bool instead of int in various placesJacques Lucke
2020-08-28Cleanup: improve function namesJacques Lucke
With this change, the three .blend read operations: data reading, lib reading and expanding are more grouped together.
2020-08-21Cleanup: use doxy sections for fcurve.cCampbell Barton
2020-08-21Refactor: move fcurve/fmodifier code from blenloader to blenkernelJacques Lucke
This is part of T76372.
2020-08-07Cleanup: Blenkernel, Clang-Tidy else-after-return fixesSybren A. Stüvel
This addresses warnings from Clang-Tidy's `readability-else-after-return` rule in the `source/blender/blenkernel` module. No functional changes.
2020-07-20T77086 Animation: Passing Dependency Graph to DriversSybren A. Stüvel
Custom driver functions need access to the dependency graph that is triggering the evaluation of the driver. This patch passes the dependency graph pointer through all the animation-related calls. Instead of passing the evaluation time to functions, the code now passes an `AnimationEvalContext` pointer: ``` typedef struct AnimationEvalContext { struct Depsgraph *const depsgraph; const float eval_time; } AnimationEvalContext; ``` These structs are read-only, meaning that the code cannot change the evaluation time. Note that the `depsgraph` pointer itself is const, but it points to a non-const depsgraph. FCurves and Drivers can be evaluated at a different time than the current scene time, for example when evaluating NLA strips. This means that, even though the current time is stored in the dependency graph, we need an explicit evaluation time. There are two functions that allow creation of `AnimationEvalContext` objects: - `BKE_animsys_eval_context_construct(Depsgraph *depsgraph, float eval_time)`, which creates a new context object from scratch, and - `BKE_animsys_eval_context_construct_at(AnimationEvalContext *anim_eval_context, float eval_time)`, which can be used to create a `AnimationEvalContext` with the same depsgraph, but at a different time. This makes it possible to later add fields without changing any of the code that just want to change the eval time. This also provides a fix for T75553, although it does require a change to the custom driver function. The driver should call `custom_function(depsgraph)`, and the function should use that depsgraph instead of information from `bpy.context`. Reviewed By: brecht, sergey Differential Revision: https://developer.blender.org/D8047
2020-07-13Clang Tidy: enable readability-non-const-parameter warningJacques Lucke
Clang Tidy reported a couple of false positives. I disabled those `NOLINTNEXTLINE`. Differential Revision: https://developer.blender.org/D8199
2020-06-27Docs: correct invalid doxygen params & referencesCampbell Barton
2020-06-05Code Cleanup: fcurve function namingJeroen Bakker
2020-06-05CleanUp: Introduce BKE_fcurve_createJeroen Bakker
2020-05-28Cleanup: spellingCampbell Barton
2020-05-26Fix/refactor foreach_id handling of animdata.Bastien Montagne
Now callbacks for animdata, nla strip and fcurve are in their own proper BKE files (mimicking `foreach_id` callback of `IDTypeInfo`). This commit also fixes some missing handling of ID pointers (text ID and IDProperties of script fcurve modifier...).
2020-05-15Merge branch 'blender-v2.83-release'Campbell Barton
2020-05-15Fix T76563: Transforming an auto-aligned point won't set it alignedCampbell Barton
When local origins are used or a single control point is selected, change the handle types from auto to aligned.
2020-05-04Added missing return statementSybren A. Stüvel
Every code path through the `fcurve_eval_keyframes_interpolate()` function has a valid `return` statement, but in debug mode GCC still doesn't like it.
2020-05-01Cleanup: Animation, refactored FCurve interpolationSybren A. Stüvel
Early returns are used to heavily reduce code indentation and clean up some code flow. No functional changes.
2020-05-01Cleanup: Animation, split FCurve interpolation into separate functionSybren A. Stüvel
2020-05-01Cleanup: Animation, unify FCurve extrapolationSybren A. Stüvel
Previously there were two functions for FCurve extrapolation, one for before the first keyframe, and the other for after the last. After the previous cleanup made the variable names consistent, it was clear that the code was almost identical. The biggest difference was in the sign of many of the calculations, which was cancelled out by swapping `B-A` to `A-B`. This showed that the computations are actually the same, and the only remaining difference was which neighbouring handle to use in case of Bézier curves. No functional changes. # Conflicts: # source/blender/blenkernel/intern/fcurve.c
2020-05-01Cleanup: Animation, refactored FCurve extrapolationSybren A. Stüvel
Variables have been renamed so that they refer to the endpoint and its neighbor (rather than `bezt`, `prevbezt`, or `lastbezt`), and unnecessary variables have been removed. By returning early the code flow is also easier to understand. No functional changes.
2020-05-01Cleanup: Animation, split FCurve extrapolation into separate functionsSybren A. Stüvel
The `fcurve_eval_keyframes` consists of three parts: - Before the first keyframe - After the last keyframe - Between the keyframes This commit splits the first two parts into separate functions. This is the first of a series of refactors, which will be committed into smaller parts so that each is easier to follow & validate. No functional changes.
2020-05-01Cleanup: moved drivers to BKE_fcurve_driver.h / fcurve_driver.cSybren A. Stüvel
All the driver-specific code in `fcurve.c` has been moved into a new file `fcurve_driver.c`. The corresponding declarations have been moved from `BKE_fcurve.h` to `BKE_fcurve_driver.h`. All the `#include "BKE_fcurve.h"` statements have been investigated and replaced with `BKE_fcurve_driver.h` where necessary. No functional changes.
2020-04-03Code Quality: Replace for loops with LISTBASE_FOREACHDalai Felinto
Note this only changes cases where the variable was declared inside the for loop. To handle it outside as well is a different challenge. Differential Revision: https://developer.blender.org/D7320
2020-04-03Cleanup: Animation, move AnimData API to `anim_data.c`/`BKE_anim_data.h`Sybren A. Stüvel
The `BKE_animsys.h` and `anim_sys.c` files already had a an "AnimData API" section. The code in that section has now been split off, and placed into `BKE_anim_data.h` and `anim_data.c`. All files that used to include `BKE_animsys.h` have been adjusted to only include the animation headers they need (sometimes none). No functional changes.
2020-03-19Cleanup: `make format` after SortedIncludes changeDalai Felinto
2020-03-09Cleanup: Replace ABS/SQUARE/CUBE with function callsSergey Sharybin
While it might be handy to have type-less functionality which is similar to how C++ math is implemented it can not be easily achieved with just preprocessor in a way which does not have side-effects on wrong usage. There macros where often used on a non-trivial expression, and there was at least one usage where it was causing an actual side effect/bug on Windows (see change around square_f(sh[index++]) in studiolight.c). For such cases it is handy to have a function which is guaranteed to have zero side-effects. The motivation behind actually removing the macros is that there is already a way to do similar calculation. Also, not having such macros is a way to guarantee that its usage is not changed in a way which have side-effects and that it's not used as an inspiration for cases where it should not be used. Differential Revision: https://developer.blender.org/D7051
2020-03-09Revert "Constraints: remove special meaning of Local Space for parentless ↵Sybren A. Stüvel
Objects." This reverts commit 7728bfd4c45c634ba6b62e149176425ec5779945. Although this brings back an inconsistency in the behaviour of constraints on objects and bones, people were relying on the old behaviour, and the new behaviour broke their files. It is still desired to remove this inconsistency, but it will happen more gradually.
2020-03-05Cleanup: redundant castsCampbell Barton
2020-02-07Cleanup: Animation, split driver evaluation into separate functionsSybren A. Stüvel
No functional changes.
2020-02-07Cleanup: Animation, reduce indentation by reordering conditionsSybren A. Stüvel
This turns error condition checks into precondition checks, grouping the non-error functionality together towards the bottom of the function and error-handling functionality towards the top. No functional changes.
2020-02-07Cleanup: reduced indentations by returning/continuing earlySybren A. Stüvel
No functional changes.
2020-01-24Depsgraph: fix false positive time dependencies for simple drivers.Alexander Gavrilov
The dependency graph has to know whether a driver must be re-evaluated every frame due to a dependency on the current frame number. For python drivers it was using a heuristic based on searching for certain sub- strings in the expression, notably including '('. When the expression is actually evaluated using Python, this can't be easily improved; however if the Simple Expression evaluator is used, this check can be done precisely by accessing the parsed data. Differential Revision: https://developer.blender.org/D6624
2020-01-16Fix T53704: Error scaling f-curve handles by -1Campbell Barton
The last handle wasn't corrected, also, there is no reason to flip the handles while sorting (checking the same handles many times) move this into it's own loop.
2019-11-22UI: Changes to Graph Editor selection and transformJulian Eisel
When introducing "drag-all-selected" support all over Blender, we figured this wouldn't work well with the Graph Editor selection/transform behavior. Hence, William and I worked on the following changes, although we used this chance to improve the behavior in general too. For more info see T70634. * Handles now always move with the key, regardless if they are selected or not. * Selecting the key doesn't select the handles anymore, their selection is separate. * Multiple keys and handles can now be dragged. * Dragging a handle moves all selected handles **on the same side**. * Tweak-dragging any handle can never affect any keyframe location, only handles. * G/R/S should behave as before. * Changing the handle type with a key selected always applies the change to both handles. * Box selection with Ctrl+Drag now allows deselecting handles (used to act on entire triple only). * Box selection //Include Handles// option now only acts on visible handles, wasn't the case with Only Selected Keyframes Handles enabled. * Box selection //Include Handles// is now enabled by default in all bundled keymaps. The changes have been tested for some days by the animators here in the Blender Animation Studio. Some changes are based on their feedback. Also, this improves/adds comments for related code. Differential Revision: https://developer.blender.org/D6235 Reviewed by: Sybren Stüvel, William Reynish
2019-11-06Constraints: remove special meaning of Local Space for parentless Objects.Alexander Gavrilov
In 2011 special handling was introduced, apparently for no other reason than to address a complaint in T25707 that World and Local space are equivalent for objects without parent. This causes issues and confusion, as mentioned in rB599c8a2c8e4. This special meaning of Local Space is not documented in the manual, and is not known to experienced riggers, so removing it should not be a problem. Differential Revision: https://developer.blender.org/D6095
2019-09-03Drivers: support decomposing rotation into swing followed by twist.Alexander Gavrilov
In order to correctly drive corrective shape keys from a freely rotating organic joint it is very often found necessary to decompose the rotation into separate bending and twisting motions. This type of decomposition cannot be reproduced by any Euler order or a single quaternion. Instead this is done by using a helper bone with a Damped Track constraint aimed at the tail of the control to pick up the bending, and its helper child with Copy Transforms to separate the twist. Requiring two additional bones to drive a shape key or a correction bone seems inconvenient, so this implements the necessary math as new options in the recently introduced Rotation Mode dropdown of the Transform Channel driver variable type. The data is also accessible as a Transformation constraint input. The output is in the form of Quaternion-derived 'pseudo-angles', which for `Swing and Y Twist` would represent the following: * W: true bend angle, independent of bend direction. * Y: true twist angle. * X, Z: pseudo-angles representing the proportion of bending around X/Z. Reviewers: brecht Differential Revision: https://developer.blender.org/D5651
2019-09-01Copy Rotation & Transform: add Euler order override options.Alexander Gavrilov
For reasons similar to drivers, it should be possible to set an explicit Euler rotation order in constraints that use Euler angles. The Transform constraint in a way approaches drivers in its use, in that it effectively alters channels using values of other channels after applying a fixed form mathematical expression. For this reason, instead of just specifying the euler order for its inputs, it uses the same enum as driver variables. However Quaternion components are converted to a weighted pseudo-angle representation as the rest of the constraint UI expects angles.
2019-08-31Drivers: support accessing Quaternion rotation channels.Alexander Gavrilov
After adding the Euler order option, it's an easy addition to the enum. The list of channels had of course to be expanded too.
2019-08-31Drivers: support explicit euler rotation order for transform channels.Alexander Gavrilov
The meaning of the euler angles completely depends on the rotation order. Currently the rotation order is taken from the target of the driver variable, which somewhat makes sense if it uses euler, but if it's quaternion, then the order is always set to XYZ. Add a new option for the rotation channels of the Transform Channel driver variables that defaults to the old behavior, but allows setting an explicit rotation order.
2019-08-23RNA: Cleanup PointerRNA structJacques Lucke
The old layout of `PointerRNA` was confusing for historic reasons: ``` typedef struct PointerRNA { struct { void *data; } id; struct StructRNA *type; void *data; } PointerRNA; ``` This patch updates it to: ``` typedef struct PointerRNA { struct ID *owner_id; struct StructRNA *type; void *data; } PointerRNA; ``` Throughout the code base `id.data` was replaced with `owner_id`. Furthermore, many explicit pointer type casts were added which were implicit before. Some type casts to `ID *` were removed. Reviewers: brecht, campbellbarton Differential Revision: https://developer.blender.org/D5558
2019-08-14Cleanup: move trailing comments to avoid wrapping codeCampbell Barton
Some statements were split across multiple lines because of their trailing comments. In most cases it's clearer to put the comments above.
2019-08-01Cleanup: misc spelling fixesCampbell Barton
T68035 by @luzpaz
2019-07-31Spelling fixes in comments and descriptions, patch by luzpazBrecht Van Lommel
Differential Revision: https://developer.blender.org/D3744
2019-06-12Cleanup: spelling in commentsCampbell Barton
2019-05-16Fix T64681: evaluate curves with generative modifiers and no keys.Alexander Gavrilov
Introduce a new function and use it everywhere, including automatic curve deletion checks to guarantee consistency.