Commit Graph

25580 Commits

Author SHA1 Message Date
de1c4fafc7 First stages of easier "expressions" creation...
It is now possible to create "scripted expression" drivers by simply
clicking on some property, and typing some short Python expression
prefixed with a '#'. This will result in a scripted expression driver,
with the typed-in text being created.

For example, you can click on X-Location of the default cube, and
type:
#sin(frame)
and a new driver will be created for the x-location of the cube. This
will use the current frame value, and modulate this with a sine wave.

Do note though, that the current frame is a special case here. In the
current implementation, a special "frame" driver variable, which
references the current scene frame is created automatically, so that
this simple and (assumed) common case will work straight out of the
box.

Future improvements:
- Explore possibilities of semi-automated extraction of variables from
such expressions, resulting in automated variable extraction. (Doing
away with variables completely is definitely 100% off the agenda
though)
- Look into some ways of defining some shorthands for referencing
local data (possibly related to variable extraction?)
2011-07-04 03:12:28 +00:00
1f4fca3654 Light Color Animation Import Complete. 2011-07-03 17:26:02 +00:00
aa295bb551 AnimationType flag. AnimationType Enum update. 2011-07-03 13:01:52 +00:00
9f99e5cc1e AnimationType Enum. 2011-07-03 12:33:52 +00:00
b6c1490359 Experimental depsgraph tweak:
Objects with drivers are now treated as needing updates when the
current frame changes. This assumption has been documented in the
code, and should at least mean that users who try to use drivers for
creating simple time-based expressions that this should work.

Note:
- It is still recommended to create a "cfra" driver variable instead
of actually inlining bpy.context.scene.frame_current into the
expressions. Not only does the latter look rather nasty to type/have
in the expression, but it is also less future-proof for when I get
around to actually working on a beefed-up depsgraph (nothing official
on that front yet...)
2011-07-03 11:56:24 +00:00
c922b41374 find_frames() calls removed. 2011-07-03 11:28:40 +00:00
a632091176 Light Animation Identification. 2011-07-03 11:07:34 +00:00
46d12b480e BGE Animations: Making the action actuator's loop end play mode work better. 2011-07-03 02:57:50 +00:00
5d7921691b BGE Animations: Reimplementing support for the "Flipper" play mode of the action actuator. 2011-07-03 02:51:14 +00:00
5f4f75c51a BGE Animations: Adding in layer weights to allow for layer blending. 2011-07-03 01:59:17 +00:00
87030e6a32 Light Sid addressing edited. 2011-07-02 05:05:03 +00:00
52784d7e30 NLA Strip Drawing Tweaks
* Removed frame-number display from NLA strips. Indeed doing so makes
things look cleaner/easier to identify.
* When transforming NLA strips, the "temp-metas" (purple strips) get
their frame extents drawn on either end, like in the sequencer, which
seems to be easier to read than the ones inside the strips.

---

The downside of this tweak is that there is no longer any visual
feedback for which strips run reversed instead of forwards, as that
used to be shown using the frame extents stuff.
2011-07-01 12:21:13 +00:00
3eec91f4d7 Keying Set UI - Icons for Paths in List
The Keying Set paths list now shows the icon of the type of ID-block
that a path item refers to. This make it easier to make snese of the
paths shown in the list.
2011-07-01 03:35:59 +00:00
77dbc5c914 Icons!
Animation Editor toggle tweaks:
* By popular request, curve visibility toggles in the Graph Editor are
now represented using the eyeball icons
* Muting is now represented by a speaker icon (a speaker for this
purpose seems fairly common?)

New icons:
* Keying Sets now have their own icons (as found in a proposal on
jendrzych's "Pixel Sized" blog)
* Drivers also have their own icon now. This is just a hacky one I've
devised which doesn't look that great. Suggestions on this are very
welcome.
2011-07-01 02:37:44 +00:00
b4b26b735c BGE Animations: Fixing a bug where an action actuator could update a frame property when it wasn't active. 2011-06-30 20:08:05 +00:00
12596969af BGE Animations: Shape drivers are now working again. 2011-06-30 19:33:13 +00:00
038feabedd Light color parameter animation export support. 2011-06-30 18:24:45 +00:00
a6270b0204 Animation Channels Filtering Refactor - Part 5
Channels can now be used as "animation containers" to be filtered
further to obtain a set of subsidiary channels (i.e. F-Curves
associated with some summary channel).

The main use of this is that object and scene summary channels can now
be defined without defining the filtering logic in three different
places - once for channel filtering, once for drawing keyframes in
action editor, and once for editing these keyframes.

An indirect consequence of this, is that the "Only selected channels"
option in Timeline will now result in only the keyframes for a
selected bones getting shown (when enabled), instead of all keyframes
for the active object. This was requested by Lee during Durian, and is
something which has only become possible as a result of this commit.
2011-06-30 13:56:47 +00:00
2a85eff40c Bugfixes:
* After changing driver target settings, the driver F-Curves now have
their "disabled" flags cleared, so that they will be updated
immediately instead of needing a manual "Update Dependencies" flush
* Little comment tweak to appease my text editor
2011-06-30 04:38:27 +00:00
97e4681217 Some tweaks to naming of channels in animation editors - thanks Matt
* F-Curves no longer show the name of the datablock of the property
they affect if this is an ID-block. For example, transform curves for
a cube won't get the "... (Cube)" suffix anymore. In these cases, it's
relatively clear that these belong to the parent datablock, so doing
this should be fine (and reduces clutter).

However, for non-id data (i.e. subsurf modifier settings) or bones,
this info still gets shown. In these cases, there is some ambiguity.

* "ActiveAct: <...>" is no longer shown for NLA action channels (i.e.
just the name of the action gets shown). This should make it easier to
see at a glance what action is being used.
2011-06-30 01:07:03 +00:00
2710c567b9 Animation Editors - Small Visual Tweaks for Usability
== Datablock filters in the headers are now hidden by default ==
This has been done because users were generally not frequently
toggling these, so quick access vs screen-estate cost wasn't really
worth it to have these always showing and taking up space on the
header.

Usage notes:
- To show these again, click on the "Filter more..." toggle.
- The "Filter more..." button DOES NOT affect whether those filters
apply.

Design notes:
- I tried many other button/icon combinations, but those were either
too space-hogging, vague, or had wrong button order.
- I also tried putting a box around these, but there was too much
padding.
- The ordering of the filters has also been modified a bit so that the
group/fcurve-name filters occur earlier in the list, given that
they're used more frequently

== Graph Editor - Use Fancy Drawing ==
Renamed this option to "Use High Quality Drawing" as suggested by
Matt. "Fancy" isn't really descriptive enough.

== Icons for Mode Dropdowns ==
The mode dropdowns in the DopeSheet and Graph Editors now have icons.
- These were important enough (compared to the auto-snap mode) that
some visual decoration was perhaps warranted.
- It makes it easier to see at a glance what mode the view is in

Icon choices:
- In some cases, the icons seem like quite a natural fit IMO (i.e.
outliner<->dopesheet, key<->shapekey editor, grease pencil, fcurve
editor)
- Action Editor uses an "object" icon to indicate that this is object-
level only for now (though I hope to find a way to address this
soon/later). This will be kept like this until then.
- There isn't any icon for drivers, so after trying a few
alternatives, I settled on area-link icon, since it ties together two
entities using some link.
2011-06-29 13:00:19 +00:00
2f10ded896 Compiler warning fixes 2011-06-29 05:07:12 +00:00
2f60a5030f Actions can now be made single-user from the Outliner
* Use the same method as from unlinking actions to do this.
* Split off the make single-user code used for the ID-browser into a
function in blenkernel which can be used elsewhere. Getting materials
to also work using this method proved to be a bit too tricky (due to
the whole messy ob vs obdata situation), so I haven't done that.
2011-06-29 04:34:20 +00:00
b85e0c3e85 BGE Animations: Moving the BL_Action::IsDone() implementation from the header file to the source file. 2011-06-29 02:45:08 +00:00
3afe0e9c88 BGE Animations: Beginning work on layer blending. Blending armature actions works, but needs more testing. Also, currently the mode is forced to ADD and the weight to 1. 2011-06-29 02:42:46 +00:00
d122f24c1a BGE Animations: Fixing a bug with priority and non continuous animations. 2011-06-29 01:53:17 +00:00
de3c95a09c BGE Animations: Adding blendin for Shape Actions. 2011-06-29 01:05:12 +00:00
caef67eb92 Set Edit bone roll on Armature Import.
+ Light->Color Sid for testing.
2011-06-28 19:30:00 +00:00
0b41c479e4 Action-Management from Outliner - Unlinking Actions
It is now possible to use the Outliner for managing the active action
of an ID-block (provided that it appears in the Outliner), which
should be a bit better than having to go through the NLA Editor.

So far, this only allowing unlinking actions, using some existing
operators. To use:
1) Navigate through the Outliner tree to find the
Object/Material/Lamp/etc. that the animation belongs to. (NOTE: this
doesn't work in Datablocks mode, but should in the normal "All Scenes"
and related modes)
2) Expand the "Animation" entry below this
3) Right-click on the Action entry below this, and select "Unlink"
from the RMB menu

In the process, I've fixed problems with some data-blocks not showing
their animation data in Outliner.
2011-06-28 11:21:12 +00:00
c4e28f999b Outliner Bugfixes:
* Mesh Animation-Data was not shown. Other data types would get this
shown.

* Added attempted fix for the problem where when you try to expand the
last item in a RNA list or so, you often end up expanding the first
item (and then have to close and try again, at which point the expand
works as you expected the first time round). More testing needed, but
seems to work better already
2011-06-28 05:17:17 +00:00
661c55b78a Refactoring code for filtering actions
- This is still quite convoluted unfortunately...
- I can't quite figure out what a bug note I left in the code was
about anymore. Removed.
2011-06-28 05:02:00 +00:00
26b7d513f1 Small bug fixes:
* Removing the last of the owner/ownertype stuff. The bulk of this
stuff was removed in Part3 of the refactor, but it seems I forgot to
actually remove these struct members at the end of that.
* Texture datablocks without animdata aren't skipped immediately
anymore. This could lead to texture nodetrees on animdata-less
textures getting skipped.
2011-06-27 13:04:21 +00:00
489ca86b59 Texture Nodes AnimEdit support 2011-06-27 04:46:03 +00:00
fd3c5bef7e Bugfix: Selecting nodes now updates animation editors
Noticed while testing the material nodes commit
2011-06-27 04:24:59 +00:00
b6bc47eb09 AnimChannelFiltering - Material Nodes support
Animation for Material nodes is now shown in Animation Editors :)
2011-06-27 03:54:33 +00:00
87f242fab0 set_pose function completed. Algorithms to be checked.
(Still not the desired results )
2011-06-26 18:56:06 +00:00
12e5d69af0 pose channel -> pose matrix import ( in progress ) 2011-06-26 15:35:02 +00:00
10d775df3d AnimChannels Filtering Refactor - Part 4
This commit is aimed at cleaning up the filtering code by changing the
filtering idiom/pattern used. While the old code used a "check then
do" approach, the new code does a "grab then assimilate".

The main benefits are that:
* the code duplication that used to exist has now been removed, making
it easier to add new channel types for data
* a recursive "peeking" ability now means that the old problems with
data existing deep in the tree (i.e. figuring out whether a channel
should be shown based on whether it will have any descendents) should
now work much better than before.

In the process, I've found and fixed a few previously unnoticed bugs
with how some channels were constructed, so hopefully things work a
bit better now.

TODO's:
* Action-Group filtering stuff hasn't been refactored yet. This was
causing some grief in the past, so I still need to check this
carefully.
* Material Nodes support (missing in trunk) should be easy to slot in
now :)
2011-06-26 14:50:19 +00:00
c863cdcaf3 Fixed issues with unit conversion and animation channels. 2011-06-25 07:23:23 +00:00
a165ad251e BGE Animations: Removing no longer used code and variables. 2011-06-24 00:31:13 +00:00
f969b813a4 BGE Animations: Making BL_Action::SetFrame() not so dependent on timing. This should smooth out things like setActionFrame(). 2011-06-23 23:19:39 +00:00
12ca476b8b BGE Animations: For KX_GameObject.setActionFrame(layer, frame), frame should be a float, not a short. 2011-06-23 23:18:53 +00:00
ea47125f16 BGE Animations: Exposing KX_GameObject's GetActionFrame() and SetActionFrame() to Python. KX_GameObject.setActionFrame() seems to still have some issues, which I suspect to be a timing thing. I may need to find a better way to set the local time. 2011-06-23 22:44:24 +00:00
7996d04474 BGE Animations: Shape Action Actuators are now converted to Action Actuators and new Shape Action Actuators cannot be created. 2011-06-23 22:23:46 +00:00
f1a2d46aa0 BGE Animations: Adding the concept of priority back. Priority is handled on a per layer basis. 2011-06-23 22:12:49 +00:00
0fbca841ef BGE Animations: Making the play modes for the Acton Actuator behave more like they have in the past. The only one that still needs work now is Flipper. Property, Loop End, Loop Stop, Play, and Ping Pong should all now be behaving as they used to. 2011-06-23 22:00:54 +00:00
545bf50e1d BGE Animations: Adding shape actions to BL_Action. This means Shape Actions now work through the Action actuator. I still need to handle blendin for shape actions though. 2011-06-23 19:49:53 +00:00
8d179ca920 BGE Animations: BL_Action now creates a PointerRNA only when constructed instead of on each Update() call. 2011-06-23 19:20:28 +00:00
2d2aa95227 BGE Animations: Making shape actions work again:
* BL_DeformableGameObject is no longer responsible for handling keys, BL_ShapeDeformer is
  * BL_ShapeDeformer also creates a copy of the key on construction and puts it back on the mesh when destructed. This avoids us permanently modifying Blender data.
  * I'm not too fond of clearing out the key every frame, but this works and I can't think of another alternative at the moment (something may be possible with some key juggling)
2011-06-23 19:09:09 +00:00
413bc87e4f Merge with trunk r37757. 2011-06-23 17:30:56 +00:00