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-01-14Cleanup: move property auto-keyframing to a generic API functionCampbell Barton
Prepare to call this from gizmos.
2019-09-27Cleanup: Replace 'add mode' short for driver FCurve creation with an enumSybren A. Stüvel
The 'add mode' was a `short` between -1 and 2 inclusive, and magic numbers sprinkled throughout the code. It's now an enum with descriptive names. No functional changes.
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-07-31Animation: Remove depsgraph argument from a lot of APISergey Sharybin
Use explicit boolean flag to indicate whether flush to original data is needed or not. Makes it possible to avoid confusion on whether an evaluated or any depsgraph can be passed to the API. Allows to remove depsgraph from bAnimContext as well. Reviewers: brecht Differential Revision: https://developer.blender.org/D5379
2019-07-31Animation: Remove depsgraph argument from direct keyframingSergey Sharybin
It was used to access evaluated object and pose and was done prior to implementation of flushing values back to original data for an active dependency graph. Removing the argument allows to simplify API and solve issues with accessing missing dependency graph on redo.
2019-06-04Fix T65451: Changing driver expression doesn't update relationsSergey Sharybin
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.
2019-05-15Animation: treat F-Curves with no keys as if muted/not existing.Alexander Gavrilov
When normally editing curves, deleting the last keyframe also deletes the curve. Thus if for some reason it didn't happen, e.g. maybe due to removing keys directly via Python, skip the bad curve instead of resetting the channel to zero.
2019-04-17ClangFormat: apply to source, most of internCampbell Barton
Apply clang format as proposed in T53211. For details on usage and instructions for migrating branches without conflicts, see: https://wiki.blender.org/wiki/Tools/ClangFormat
2019-03-25Cleanup: use braces for interface codeCampbell Barton
2019-02-18doxygen: add newline after \fileCampbell Barton
While \file doesn't need an argument, it can't have another doxy command after it.
2019-02-06Cleanup: remove redundant doxygen \file argumentCampbell Barton
Move \ingroup onto same line to be more compact and make it clear the file is in the group.
2019-02-01Cleanup: remove redundant, invalid info from headersCampbell Barton
BF-admins agree to remove header information that isn't useful, to reduce noise. - BEGIN/END license blocks Developers should add non license comments as separate comment blocks. No need for separator text. - Contributors This is often invalid, outdated or misleading especially when splitting files. It's more useful to git-blame to find out who has developed the code. See P901 for script to perform these edits.
2019-01-15Cleanup: comment line length (editors)Campbell Barton
Prevents clang-format wrapping text before comments.
2019-01-14Keyframing: refactor insertion code to allow property-global NLA tweaks.Alexander Gavrilov
Supporting a strip blending type that treats quaternions as a unit also means being able to adjust all sub-channels as a unit when inserting keyframes. This requires refactoring keyframe insertion code to retrieve array property values for all channels at once, before iterating over the indices being inserted.
2018-12-14NLA: insert keyframes correctly for strips with non-Replace mode.Alexander Gavrilov
NLA strips support using the keyframe values in a variety of ways: adding, subtracting, multiplying, linearly mixing with the result of strips located below in the stack. This is intended for layering tweaks on top of a base animation. However, when inserting keyframes into such strips, it simply inserts the final value of the property, irrespective of these settings. This in fact makes the feature nearly useless. To fix this it is necessary to evaluate the NLA stack below the edited strip and correctly compute the raw key that would produce the intended final value, according to the mode and influence. Differential Revision: https://developer.blender.org/D3927
2018-12-08User Interface: Add button color for indicating that the value differs from ↵Lukas Stockner
the interpolated one One issue that especially newer users often run into is that they accidentally reset changes to the scene by switching frame without creating a keyframe first. Therefore, this commit adds a new color that is used to draw properties if their current value differs from the one that would be set when switching to this frame. This works both for existing keyframes as well as for currently interpolated frames. Unfortunately the flags in but->flag are full, so I had to move the new flag to but->drawflag and pass that to all relevant functions. I went with orange for the color since afaics it fits with the green and yellow that are currently used for keyframe states and since it's somewhat reddish to signify that there might be something to look out for here. Reviewers: campbellbarton, #user_interface, brecht Reviewed By: campbellbarton Subscribers: brecht, predoe Differential Revision: https://developer.blender.org/D3949
2018-09-18Support evaluating simple driver expressions without Python interpreter.Alexander Gavrilov
Recently @sergey found that hard-coding evaluation of certain very common driver expressions without calling the Python interpreter produces a 30-40% performance improvement. Since hard-coding is obviously not suitable for production, I implemented a proper parser and interpreter for simple arithmetic expressions in C. The evaluator supports +, -, *, /, (), ==, !=, <, <=, >, >=, and, or, not, ternary if; driver variables, frame, pi, True, False, and a subset of standard math functions that seem most useful. Booleans are represented as numbers, since within the supported operation set it seems to be impossible to distinguish True/False from 1.0/0.0. Boolean operations properly implement lazy evaluation with jumps, and comparisons support chaining like 'a < b < c...'. Expressions are parsed into a very simple stack machine program that can then be safely evaluated in multiple threads. Reviewers: sergey, campbellbarton Differential Revision: https://developer.blender.org/D3698
2018-08-30UI: add dedicated icon IDs for decorators, tool settings, shaderfx, overlays.Brecht Van Lommel
The preset and decorator icons were updated to be monochrome and draw in the same color as text. Other icons are unchanged, having them as separate icon IDs prepares for an artist to make them.
2018-06-18Fix T55511: Decorator drag makes many undo stepsCampbell Barton
Each keyframe made a separate undo step.
2018-06-17UI: correct decorator buttons 'enabled' flagCampbell Barton
2018-06-17UI: decorator color button assertCampbell Barton
Also set 'all' argument based on the RNA-index (even though it worked, better set to correct value).
2018-06-16UI: show decorator icon for static-overrideCampbell Barton
2018-06-16UI: Add property decorator buttonsCampbell Barton
When use_property_split is enabled, this template adds buttons to set keyframes, (Alternative to showing color). See: T54951
2018-06-07Merge branch 'master' into blender2.8Bastien Montagne
Conflicts: source/blender/editors/animation/anim_deps.c source/blender/editors/animation/keyframing.c source/blender/editors/animation/keyingsets.c source/blender/editors/armature/pose_edit.c source/blender/editors/armature/pose_transform.c source/blender/editors/gpencil/gpencil_convert.c source/blender/editors/include/ED_anim_api.h source/blender/editors/include/ED_keyframing.h source/blender/editors/interface/interface_anim.c source/blender/editors/space_action/action_edit.c source/blender/editors/space_graph/graph_edit.c source/blender/editors/space_outliner/outliner_draw.c source/blender/editors/transform/transform_conversions.c source/blender/makesrna/intern/rna_armature.c source/blender/makesrna/intern/rna_pose.c source/blender/python/intern/bpy_rna_anim.c source/blenderplayer/bad_level_call_stubs/stubs.c source/gameengine/Converter/KX_BlenderSceneConverter.cpp
2018-06-07Cleanup: remove moar G.main usages.Bastien Montagne
Notes: * Really need to address RNA setters case, end up adding way too much G.main here these days... :/ * Added Main pointer into bAnimContext, helps a lot in anim code ;)
2018-05-23Merge branch 'master' into blender2.8Campbell Barton
2018-05-23Cleanup: strip trailing space from interface filesCampbell Barton
2018-05-19WIP COW Fix: Insert keyframe operators/api now queries depsgraph for ↵Joshua Leung
evaluated data When using copy on write, insert keyframe operators were reading from old bmain data instead of COW data. This meant that inserting keyframes would often read old/stale data, resulting in invalid keyframes getting created (e.g. from last transform operation, instead of actual current state). This commit makes it so that keyframing operators will ask depsgraph for the evaluated copy of the data, so that it can read values from that. It introduces a new function - `DEG_get_evaluated_rna_pointer()`, which when working correctly/fully, should work just like the other `DEG_get_evaluated_*()` functions, except it lets you pass in an RNA Pointer. However, currently, this is only done for Pose Bones (as a dirty hack, since this is an important/pivotal requirement for production) and/or datablock properties directly (since we can just use the DEG_get_evaluated_id() directly). on the datablock. Committing to a branch for now as this all needs more testing. More work to come later at a more sane time of day!
2017-06-08Replace all old DAG calls with direct calls to new DEG and remove ↵Luca Rood
BKE_depsgraph.h This removes BKE_depsgraph.h and depsgraph.c
2017-03-22Depsgraph: Fix missing relations update tag when typing #frameSergey Sharybin
New depsgraph requires relations to be updated after drivers changes.
2016-11-18Fix T50063: Editing driver's expression eliminates "Zero" numberJulian Eisel
Disables trimming of trailing zeros in case button contains an expression.
2016-09-21UI: Make button driver and keying set shortcuts configurableJulian Eisel
2016-09-21UI: Configurable shortcuts for keyframe operatorsJulian Eisel
Adds support for editing the shortcuts for inserting (I), deleting (Alt+I) and clearing (Alt+Shift+I) button keyframes.
2016-09-19UI Messages: Consistent spelling of term "data-block"Julian Eisel
Was using a bunch of different spellings, mostly "data-block" though, so went with that one (would have been my #1 choice anyway ;) )
2016-05-04UI: avoid getting the active button when its already knownCampbell Barton
2016-04-01Cleanup: style/spellingCampbell Barton
2016-03-24Driver Keyframing: Some tweaks to make inserting keyframes on Driver ↵Joshua Leung
F-Curves easier Now, when trying to insert a keyframe on a driven property (using IKEY, or with autokeying enabled), the keyframes will get created on the Driver's F-Curve (instead of creating a new FCurve that goes into the active action, but will never do anything). Furthermore, the x-value of the new keyframe will be the current result of the driver expression. Why/Motivations: This way, it becomes easier to create corrective drivers, as you can position all the targets the driver depends on, then adjust the driver value until it does what you need, and then you keyframe that value to bake it into the Driver F-Curve (in effect, "training" the computer how to behave in that case). Usage Notes: * In practice, that particular workflow is still quite clunky to achieve, due to some quirks of how the driver system and the UI widgets interact. Specifically, you'll need to disable/mute the driver before trying to edit the setting (to prevent the driver from immediately resetting the value - before even autokey fires!). However, if you're using the Graph Editor to preview/monitor/manage the keying process, you'll then want to re-enable the driver before changing the targets, so that you can see how much of a change you'll want to be applying! * The warning about editing driver values may need to be disabled or selectively knocked out. I had it disabled while testing this functionality, but it's actually harmless in its current state (if just a bit annoying).
2016-03-13Keyframing: Added ToolSetting for choosing default keyframe typeJoshua Leung
To make it easier for animators working in a multipass pose-to-pose workflow when inserting breakdown keyframes and so forth, it is now possible to specify the "type" of keyframe being created (i.e. the colour of the keyframe, when drawn in the Dope Sheet). Usage: 1) Choose the type of keyframe ("Keyframe", "Breakdown", "Extreme", etc.) from the new dropdown located between the AutoKeying and KeyingSet widgets on the timeline header. 2) Insert keyframes 3) Rejoyce that your newly created keyframes have now been coloured for you already in the DopeSheet. Todo: * Look into a way of using the actual keyframe colours (from the theme) for the icons of these types.
2015-07-24Fix: Autokeying of buttons doesn't work on NLA Strip propertiesJoshua Leung
2015-03-28Keyframes on NLA-Strip F-Curves are detected by RNA buttons tooJoshua Leung
2014-11-28Cleanup: unused headersCampbell Barton
2014-11-16Bugfix T41525: Button keyframe indicators don't work correctly when editing ↵Joshua Leung
NLA Strips When the active action is a NLA strip, the keyframe indicator colors for buttons and the 3D view indicator (i.e. the current frame indicator changes color) didn't work correctly. This was because they were still checking for keyframes in "global" time space, whereas they needed to be applying NLA corrections to "look inside" the remapped action.
2014-11-15Fix T42567: Color Wheel Buttons do not autokey correctly.Bastien Montagne
In fact, any button controlling a whole array of values were broken because they always only keyed the index of the single fcurve returned by `ui_but_get_fcurve()`, now pass button's rna_index value instead.
2014-11-11UI Refactor T41640Campbell Barton
Make the UI API more consistent and reduce confusion with some naming. mainly: - API function calls - enum values some internal static functions have been left for now
2014-10-06Fix T40350: Some texture prop did not have visual feedback they were driven.Bastien Montagne
This is only a (hacky) partial fix, actually, since `RNA_property_animated()` will still not work in those cases... Better that than nothing, though. Thanks to Campbell for review.
2014-05-21Fix T40291: Crash when adding # driver to some fieldsCampbell Barton
2014-05-08Fix typoCampbell Barton
2014-05-08Drivers: When editing expressions from UI buttons, "invalid" flags now get ↵Joshua Leung
cleared from the drivers With this change, there should hopefully be less need to hit "Update Dependencies" on drivers so often.
2014-01-20Code Cleanup: remove redundant NULL checks and add function attributesCampbell Barton