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
2014-07-30Bugfix T41240: Home key doesn't show everything on F-CurvesJoshua Leung
Own copy and paste typo in 73d157e meant that this was not in some cases, the bounds calculated may be incorrect.
2014-07-20Bugfix T41042: Irrelevant Bezier handles still affect Graph Editor Show AllJoshua Leung
The "Show All" and "Show Selected" operators in the Graph Editor was taking into account all handles on keyframes, even when some of those would be invalid and/or set to nonsense values (e.g. for any interpolation mode other than "Bezier")
2014-07-19Defines: replace ELEM3-16 with ELEM(...), that can take varargsCampbell Barton
2014-06-13Code cleanup: remove redundant arg from ARRAY_LAST_ITEMCampbell Barton
2014-06-11Regression Bugfix T40332: Bad driver behaviour on small distances.Joshua Leung
!!! ANIMATORS/RIGGERS PLEASE TEST !!! I've reduced the size of the threshold for the keyframe lookup here. This threshold determines the minimum time in frames between keyframes (i.e. "how close" to each other they can get). Making this too small causes problems like T39207, but it seems that the threshold we've been using makes it impossible to get accurate behaviour on driver curves with keyframes, when the driver target only moves 2cm (i.e. 0.02 BU). So far, all of the test cases from T39207 seem to work fine, as well as Caminandes 2 files, and Kenny the Caterpillar. The Kiribati rigs/shots (thanks jpbouza for helping to check on these!) also seem to be fine.
2014-04-28f-curve easing: Adjustments to Robert Penner elastic easingCampbell Barton
Compensate for the clamped amplitude by blending the elastic effect. Allows for a subtle elastic effect which wasn't possible before.
2014-04-28"Auto" option for Keyframe.easingJoshua Leung
This option (alongside the Ease In/Out/InOut options already available) aims to make it easier to get an initial curve that looks closer to the one you were expecting, by automatically picking whether Ease In or Ease Out should be used based on the type of interpolation being used for the curve segment in question. Notes: * The types chosen may need some adjustments (e.g. using ease in-out instead of just ease in) * This does break compatability with files saved in previous dev builds, but only if you were using Bounce/Elastic/Back with "Ease In"
2014-04-19Math Lib: add shell_v3v3_normalized_to_dist and v2 versionCampbell Barton
bypass angle calculation to avoids (asin, sqrt, cos).
2014-04-15Move binary-search threshold used for FCurves to BKE_fcurve.h headerJoshua Leung
Since this is now pretty much the de-facto "minimum distance between keyframes", we might as well expose this in this header so that other places which need similar thresholds can perform similar checks (needed for my next commit)
2014-04-11Code cleanup: use boolCampbell Barton
2014-04-01Code cleanup: remove TRUE/FALSE & WITH_BOOL_COMPAT defineCampbell Barton
2014-03-31Fix T39291: "Stepped" F-curve modifier does not work as expected when ↵Joshua Leung
stacked after other modifiers Evaluation of time-warping modifiers ("Stepped" is one of them) didn't actually end up distorting the time to look up what values other modifiers in the stack generate. This meant that when a "stepped" fmodifier was on top of a "generator", the stepped fmodifier looked like it didn't have any effect. (This fix requires a bit of testing still, so should be left for 2.71)
2014-03-31Fix T39405: Make "amplitude" for elastic easing more intuitive to useJoshua Leung
Previously, amplitude was more of an "absolute" value in the sense that whatever value you set it to became a sort of "maximum bounce" height. However, it turns out that this approach isn't so nice when dealing with large gaps between the values of two keyframes, as the elastic easing equations expect that "amplitude > |change|" (where change is the difference in values from key1 to key2). Now, the "amplitude" value we pass to the easing functions are "|change| + amplitude". This is easier to control, as now, as soon as you start changing that value, there are immediately visible effects.
2014-03-25Code cleanup: rename easing functions with BLI_easing_ prefixCampbell Barton
2014-03-25Code cleanup: rename BLI_math_easing to BLI_easingCampbell Barton
Many hard coded values and really specific to time & keyframes.
2014-03-21Patch T22084: Robert Penner Easing Equations for FCurvesJoshua Leung
This commit introduces support for a number of new interpolation types which are useful for motion-graphics work. These define a number of "easing equations" (basically, equations which define some preset ways that one keyframe transitions to another) which reduce the amount of manual work (inserting and tweaking keyframes) to achieve certain common effects. For example, snappy movements, and fake-physics such as bouncing/springing effects. The additional interpolation types introduced in this commit can be found in many packages and toolkits (notably Qt and all modern web browsers). For more info and a few live demos, see [1] and [2]. Credits: * Dan Eicher (dna) - Original patch * Thomas Beck (plasmasolutions) - Porting/updating patch to 2.70 codebase * Joshua Leung (aligorith) - Code review and a few polishing tweaks Additional Resources: [1] http://easings.net [2] http://www.robertpenner.com/easing/
2014-03-21Fix T39207: FCurve evaluation regressions following 2aff243 (again)Joshua Leung
Yet another attempt at fixing the problems here. This time, I've added a new function/version of the binary search utility so that we can pass in custom thresholds (Note: This ability is only used for evaluation currently, with everything else using a wrapper which still uses the old default threshold), making it ok to start trusting the "exact" parameter.
2014-03-21Debug prints weren't getting triggered, since they no longer use the old flagJoshua Leung
2014-03-19A simpler fix for the "clive" part of T39207 without the precision ↵Joshua Leung
granularity risks
2014-03-19Fix T39207: FCurve evaluation regressions following 2aff243Joshua Leung
This commit attempts to fix some of the FCurve evaluation regressions arising from an earlier commit to speed up the process using binary search. Further tweaks may still be needed though to get this to an acceptable level of reliability (namely, tuning the threshold defining which keyframes get considered "close together"). Since we're still in an early stage of the 2.71 dev cycle, for now it's still worth trying to get this working instead of simply reverting this (which can still be done later if it proves too problematic). Specific fixes: * The previous code was somewhat dangerous in that it allowed out-of-bounds accessing of memory when a == 0. It turns out this was more common than originally anticipated (as the assert I added here ended up failing in the "action_bug.blend" file in the report) * Tweaked the code used to test for closely-spaced points so that the "Clive.blend" example for driver curves won't fail. The approach used here has the downside though that since "exact" uses a might coarser threshold for equality, there may be some precision loss issues causing backwards compat issues (namely with closely spaced keyframes, or for certain NLA strips). For now, I've left in some debug prints that can be enabled by running Blender in debug mode (i.e. "blender -d"), which can provide some useful tuning info should we need to look more into our approach here.
2014-03-15Patch T36209: Use binary search function for evaluating F-CurvesJoshua Leung
This provides a speedup to evaluating long F-Curves in fcurve_eval_keyframes() by using the pre-existing binarysearch_bezt_index() function (used for keyframe insertion) to find the relevant BezTriple on the FCurve at the current evaltime. The current code loops over all BezTriples (sometimes not even breaking from the loop after cvalue has been evaluated). Reviewer Notes: - Unlike in the original patch, we use the old/existing logic instead of checking that (exact == true). See comments in code and also on the tracker entry for this patch for more details. Patch By: Josh Wedlake
2014-03-01Fix for baked FCurve subframe interpolation (bad abs use)Campbell Barton
2014-03-01Code cleanup: comment unused code in calchandleNurb_internCampbell Barton
Also remove outdated comments.
2014-02-07ListBase API: add utility api funcs for clearing and checking emptyCampbell Barton
2014-02-03Code cleanup: use bools where possibleCampbell Barton
2014-01-01Fix crash happening in Cycles fcurve modifierSergey Sharybin
Summary: Crash was happening because of fcurve modifier stack used modifier's DNA to store temporary data. Now made it so storage for such a thing is being allocated locally per object update so multiple objects which shares the same animation wouldn't run into threading conflict anymore. This storage might be a part of EvaluationContext, but that'd mean passing this context all over in object_where_is which will clutter API for now without actual benefit for this. Optimization notes: storage is only being allocated if there're Cycles modifier in the stack, so there're no extra allocations happening in all other cases. To make code a bit less cluttered with this storage passing all over the place added extra callbacks to the FModifier storage which runs evaluation with the given storage. Reviewers: brecht, campbellbarton, aligorith CC: plasmasolutions Differential Revision: https://developer.blender.org/D147
2013-12-01Fix T37667: rotational difference driver target marked invalid even though ↵Brecht Van Lommel
valid.
2013-11-04Bugfix [#36950] Restrict Frame Range not being obeyed on Driver F-CurvesJoshua Leung
By default, drivers (used to) automatically map the driver result (i.e. "evaltime" or the x-coordinates in the driver graphs) to results. This evaltime => cvalue mapping is necessary when there are absolutely no keyframes or modifiers on a driver F-Curve, or else nothing would happen. However, when there are modifiers on these driver F-Curves, and these modifiers only work within certain ranges, there would be confusing and unwanted situations where even if you clamped the modifiers to only generating a curve within certain frame ranges, the final driver output would still ignore the results of the curve due to the underlying 1-1 mapping. This commit introduces a check to ensure that this automatic mapping won't happen during such invalid ranges.
2013-10-02fix [#36919] Cannot delete keyframe of animated simulation parameter if ↵Campbell Barton
simulation has been disabled
2013-10-01fix for error setting vector handles to free when both vector handles were ↵Campbell Barton
selected but not the mid-point. only one of the handles would be changed to the HD_FREE. effected curves and fcurves.
2013-07-21code cleanup: add break statements in switch ()'s, (even at the last case).Campbell Barton
2013-07-19style cleanup: switch statements, include break statements within braces & ↵Campbell Barton
indent. also indent case's within the switch (we already did both of these almost everywhere)
2013-07-18fix for action editor view-selected behaving strangely.Campbell Barton
- when an fcurve had no selected keyframes, a default fallback value was used which caused view-selected to include frame 1, even when no selected frames were there. - the vertical axis was always reset, ideally we would center vertically too but the way this operator currently works we only know about the frame range, now don't change the vertical scroll when viewing selected since it would always jump to the top of the screen (view-all still acts this way).
2013-07-13remove redundant null checks and avoid divide by zero in driver evaluationCampbell Barton
2013-05-26BLI_math rename functions:Campbell Barton
- mult_m4_m4m4 -> mul_m4_m4m4 - mult_m3_m3m4 -> mul_m3_m3m4 these temporary names were used to avoid problems when argument order was switched.
2013-05-12correct assert for driver evaluation,Campbell Barton
also add asserts for listbase functions when the list is NULL, and use noreturn attribute for jpeg_error.
2013-04-22Bugfix [#34836] Crash when driver variable has path == 'data'Joshua Leung
Most of the places which relied on RNA_path_resolve() did so believing that if it returned true, that it had found a valid property, and that the returned pointer+property combination would be what the path referred to. However, it turns out that if the property at the end of the path turns out to be a "pointer" property (e.g. "data" for Object.data), this would automatically become the pointer part, while the prop part would be set to null. Hence, if a user accidentally (or otherwise) specifies a path for the single-property driver variable type like this, then Blender would crash. This commit introduces two convenience functions - RNA_path_resolve_property() and RNA_path_resolve_property_full() - which mirror/wrap the existing RNA_path_resolve() functions. The only difference though is that these include a check to ensure that what was found from resolving the path was in fact a property (they only return true iff this is the case), and make it explicitly clear in the name that this is what they will do so that there's no further confusion. It is possible to do without these wrapper functions by doing these checks inline, but the few cases that had been patched already were pretty hideous looking specimens. Using these just make it clearer and simpler for all. I've also beefed up the docs on these a bit, and changed these to using bools.
2013-03-25More new data names translation (most cases should be covered now).Bastien Montagne
Also done a few cleanup here and there...
2013-03-21Driver error warnings are now only printed to the console when Blender is runJoshua Leung
using the -d flag This prevents a stream of error messages flooding the console when working with particular rigs which may have a few broken controls. In general, riggers now have a better alternative by using the filtering tools in the Graph Editor.
2013-03-17use const pointers for file loading and booleans for animation system return ↵Campbell Barton
values passed as pointers.
2013-02-28Bugfix: Invalid target tagging for "Distance" driver variable type onlyJoshua Leung
highlighted the first target if/when both targets were empty.
2013-02-28Bugfix: Types mismatch (flags and targetFlags were ints, but dtar->flag is aJoshua Leung
short)
2013-02-28Invalid Driver Targets are now indicated appropriately (using Red Backgrounds)Joshua Leung
in the UI This is the second part of the fixes for [#32492], making it easier to identify which part of a driver (i.e. which of its targets) is causing problems A number of additional/related changes needed to be made: * Red-alert status for layouts is now propagated down to child layouts when they are created. This is needed as otherwise some of the templates used in the Graph Editor driver settings won't actually get the red-alert status flushed down to them. Also, note that this status needs to be set before any widgets are added to the layout, or else the settings aren't applied when the relevant widgets get created. * "Single Property" RNA-Paths resulting in out of bounds array access will now trigger an error status and appropriate warnings TODO: * The error tagging doesn't get applied immediately after variables are created, or their types changed * There was also some other weirdness involved when a higher-value flag (1<<10) was used for this setting, which needs further attention
2012-12-29style cleanupCampbell Barton
2012-12-23Code cleanup: add usual 'BKE_' prefix to 'public' constraint functions from ↵Bastien Montagne
blenkernel...
2012-12-21replace MIN/MAX 3,4 with inline functionsCampbell Barton
2012-10-23rename api functions...Campbell Barton
- minf, maxf, mini, maxi --> min_ff, max_ff, min_ii, max_ii
2012-10-21style cleanup: trailing tabs & expand some non prefix tabs into spaces.Campbell Barton
2012-09-11code cleanup: use min/max inline functions rather than macros & simplify loopCampbell Barton
2012-09-11add some missing NULL checks, a few parts of the code used a pointer then ↵Campbell Barton
checked it for NULL after. also made it more clear that some areas assume the pointer isnt null (remove redundant NULL checks).