Commit Graph

433 Commits

Author SHA1 Message Date
077f8520da Pose Propagate - Further Tweaks:
- Pose Propagate and Pose Sliding tools now work in the same way as
Pose Library previewing, with regards to selections. If some bones are
selected, then only those will be affected. But if no bones are
selected, then the whole rig gets affected.
- Added a "On Selected Markers" option, which only propagates poses to
frames where there's a selected marker. Animators can combine this
with a "select markers whose name contains..." operator to get an
effective way to manage hand-keyed walk cycles, etc.
2011-03-31 01:37:42 +00:00
531d3e410f Propagate Pose Tweaks:
- Renamed "Last Keyframe" mode to "Before End". This mode still just
copies the pose to all keyframes starting from the current frame until
the last one encountered per F-Curve
- "Last Keyframe" mode (new one) now copies the pose to the last
keyframe. This is useful for making animations cyclic (i.e. go to
first keyframe, edit, then Pose->Propagate->To Last Keyframe (Make
Cyclic))
2011-03-31 00:45:52 +00:00
9b9c4184c8 misc nodes & editors: floats were being implicitly promoted to doubles, adjust to use floats.
+ minor update to demo_mode
2011-03-28 17:08:33 +00:00
a73c3fe5c9 subsurf, derived mesh and other misc files: floats were being implicitly promoted to doubles, adjust to use floats. 2011-03-27 17:22:04 +00:00
617e6a83bc object/paint/misc-files: floats were being implicitly promoted to doubles, adjust to use floats.
- also UV angle stretching was using radians->deg which wasn't needed.
2011-03-27 14:59:55 +00:00
b07f94d87b tag variable as unused. 2011-03-24 03:28:18 +00:00
3b0a42f898 Reshuffled utility function to keyframe drawing API, removing some
duplicate code
2011-03-24 03:19:30 +00:00
eef811a095 Animation Tool: Propagate Pose
This tool automates the process of copying a pose to successive
keyframes, making it easier for animators to go back and change the
pose for some controls which remain "static" for periods of time.
Previously, animators would need to do a "{Ctrl-Pageup Ctrl-V} *
number_of_static_keyframes" dance for each set of controls that this
happened on, which is not too good ergonomically speaking.

There are two modes exposed via the menu (Pose->Propagate):
- "Pose Propagate" - also known as the 'WHILE_HELD' mode, which
propagates to all keyframes that are holding the same value
- "To Next Keyframe" - which only propagates the pose to the closest
keyframe in the occurring after (but not including) the current frame

Additionally, there are a few other modes that can be used, though
they are less useful for direct use from the UI, though they can be
used via the PyAPI as need be.

---

Also, I did some cleanups in the "Pose" menu to bring it more into
line with the Object mode one. There are some more tweaks that could
still be done here, such as bringing the keyframing operator entries
under a submenu too (as in the Object mode version) to get the length
of this under control.
2011-03-24 03:02:34 +00:00
a79820d284 properties were being used with wrong type functions, this resulted in bad memory access when getting int from an enum. 2011-03-22 12:53:36 +00:00
91e4a1bdf8 fix for crashes moving armature layers and applying loc/scale/rot in armature editmode. 2011-03-22 08:30:07 +00:00
e9005b985e remove some redundant vars, assignments & checks. 2011-03-19 05:06:06 +00:00
7609370d50 Bugfixes:
- Sync Markers option works for local markers (or any other list of
markers in future) too now.
- Apply Pose to Restpose operator now displays a warning if an action
was found (warning about the action now being invalid)
2011-03-14 10:45:42 +00:00
e263657df7 tag var as unused. 2011-03-14 03:33:21 +00:00
280592be9f Replaced RNA code in previous commit with a version which should be a
bit safer (less likelyhood of float <-> int corruption)
2011-03-13 12:26:53 +00:00
2144b23f51 Pose Sliding Tools - Custom Property Support + Other bugfixes
- Custom properties are now affected by the Pose Sliding tools too.
This is now more important to support, given that modern rigs use
these a lot for facial expressions/posing. By and large, this should
work fine, though discrete integer values may experience a bit of
trouble

- Fixed potential bugs with the code which detects which F-Curves are
relevant to a PoseBone's transforms (+ custom props). This was prone
to being tricked by certain setups if the names of the bones contained
some of the keywords these were searching for.

- Shuffled some code around: moved bulk of logic out of vec3 case into
new function for single-value, since it was really doing per axis
already
2011-03-13 12:22:57 +00:00
3c184def72 use NULL instead of 0 for pointers, (editors) 2011-03-03 17:59:04 +00:00
Nathan Letwory
95100afc12 doxygen: blender/editors tagged. 2011-02-27 20:29:51 +00:00
4ed5cd6cef == UI icons ==
* Change ICON_NULL --> ICON_NONE to avoid two #defines with the same meaning.
2011-02-27 18:03:19 +00:00
2e5eb41522 pedantic warning cleanup, also remove texspace_edit() since its been added using a different method. 2011-02-27 08:31:10 +00:00
24685d3967 Bug fix, irc report.
Menu Help -> Operator Cheat Sheet crashed, calling function with NULL context.
2011-02-25 16:05:26 +00:00
8a1cff54ce internal operator/wm/macro function: dont crash if operators are not found (warning will be printed). 2011-02-25 04:15:45 +00:00
197a57db69 face-paint mode operators were not ported from 2.4x yet hide/reveal/sel-swap
also added hide-unselected option to armature mode.
2011-02-24 16:04:36 +00:00
Nathan Letwory
5b607701a7 doxygen: prevent GPL license block from being parsed as doxygen comment. 2011-02-23 10:52:22 +00:00
0a7fecac8f add 2.4x posemode & weightpaint feature as an operator - Flip Active, Shift+F. 2011-02-23 04:58:08 +00:00
Nathan Letwory
322ff7dfe4 I swear, it was just an innocence change in guardedalloc!
The butterfly wing flap, causing a nice storm in the rest of blender.

Now all dependencies should point ok again. CMakers, do double-test.
2011-02-21 12:35:04 +00:00
55a0e21a03 Revert r35003. It was just an extra semicolon 2011-02-20 23:21:15 +00:00
187f9c5874 Fixed compilation bug in r35002: C90 forbids mixed declarations and code. I've changed the order of variable declarations. 2011-02-20 22:03:49 +00:00
38e7084179 Bugfixes:
- Fix for crash with Keying Sets when a Keying Set path has no ID-
block to target
- Info window now indicates the types of the reports shown by
colouring their entries if the entries are not selected.
2011-02-20 21:32:21 +00:00
43d362fcc8 Bugfix #26150
Crash in hovering over the menu "Pose -> Poselib" sub-items.
NULL context passed on to function and read before the test.
2011-02-19 18:53:08 +00:00
27e812d697 Clear some compiler warnings by commenting some functions, adding others to headers.
left in warnings where functions obviously need to get ported to 2.5x still.

Also, render stamp seq strip works again.
2011-02-17 22:34:41 +00:00
aed7eaf0d9 sphinx doc gen: multiple examples possible and include the scripts docstring inline in sphinx.
also tag unused vars
2011-02-16 17:31:04 +00:00
d6da81be38 Forgot to actually hook up this operator... 2011-02-16 11:28:25 +00:00
437bdbc96c PoseLib Bugfixes, Cleanups, and Missing Operators
* All the various index-related issues should finally be sorted now.
It seems you cannot just partially implement some of these active
index getter/setters...
* Standardised the call used by PoseLib operators to get the Object
from which they get the active PoseLib data from
* PoseLib operators which require some existing data to work now use a
poll() which checks for this
* Added back the operator used to make standard actions into ones
usable by PoseLib
* Added a dummy operator for the apply active pose button which really
just calls the same backend functions as "Browse Interactive", but
which has a nicer frontend (naming + description) for the purpose of
being used in this way
* Also, removed some useless code from here
2011-02-16 06:18:20 +00:00
78c135d93e Fix for compiler warning: forgot to hook up a poll callback I defined
for unlinking PoseLib data
2011-02-16 02:10:26 +00:00
7756da34c9 PoseLib UI and Bugfixes:
- Added operator button to show the current pose. This runs on top of
the interactive pose browse functionality, so the tooltip may be a bit
obtuse...
- Specifying a pose for the Pose browse functionality to set now works
correctly. Previously, some old depsgraph hacks were actually
interferring with correct updating (only the armature updated
correctly, but deforms didn't occur)
- Fixed a case of accessing freed memory, which I'm surprised no
static checkers have reportedly picked up on yet, or that nobody has
really had issues with (probably due to low memory "turnaround" so
far)
2011-02-16 02:05:41 +00:00
147309e3c5 Pose Lib: Start of PoseLib UI in Armature buttons
This presents a UI from which PoseLibs can be assigned/removed from
Objects. From here, it is also possible to see the list of poses and
add/remove poses from this list.

Known Issues:
- [Py/RNA/Operators BUG ALERT!] If after immediately starting Blender
you try to remove a pose from the PoseLib using the UI buttons, you'll
get a an error the first time you do so (but not for subsequent
attempts). This seems to be caused by the "pose" enum (dynamically
generated) of the POSELIB_OT_pose_remove operator, which does not seem
to be getting initialised when the operator's exec gets called without
the invoke having been called previously
- Changing the active Pose Library still seems to be broken (to be
fixed soon)

Todos:
- Operator button to make the selected pose get shown in the 3d view
- Restore the "validate action" operator and add that to this panel
- Rename pose access
2011-02-16 00:17:22 +00:00
e63b51a9ab PoseLib: Adding support for custom properties
Custom properties are now supported by Pose Library. They will get
saved and restored correctly during previewing and pose adding.

To do this, I've changed PoseLib over from using the "LocRotScale"
Builtin Keying Set to the "Whole Character" one instead. One
consequence of this, is that now entire poses are stored in the Pose
Lib, irrespective of whether you only selected part of a pose to store
(i.e. facial controls only, or hand poses only). If this is enough of
a problem, I'll make a second Keying Set that does take selections
into account, and use that here instead.
2011-02-15 11:47:09 +00:00
8b7482892b made most variables which are only used in a single file and not defined in header static for blenlib, blenkernel and editors. 2011-02-14 17:55:27 +00:00
59f1640ae5 warning cleanup.
- fix mistake with grease pencil UI (&& was intended but & used).
- use (void) rather then () across _all_ blenders code.
- a few minor edits, don't shadow stack variables in roll calculation & avoid running memset() for VBO vertex map.
2011-02-13 15:02:21 +00:00
0955c664aa fix for warnings from Sparse static source code checker, mostly BKE/BLI and python functions.
- use NULL rather then 0 where possible (makes code & function calls more readable IMHO).
- set static variables and functions (exposed some unused vars/funcs).
- use func(void) rather then func() for definitions.
2011-02-13 10:52:18 +00:00
867fc4b463 enforce string limits (reported by pedantic checking tools & some developers).
mostly replace strcpy with BLI_strncpy and multiple strcat's with a BLI_snprintf().
also fix possible crash if CWD isnt available.
2011-02-13 03:21:27 +00:00
bd023c443b remove mat_nr from MVert struct, saves 4 bytes per vertex.
used to be used for halo's
2011-02-07 13:02:44 +00:00
1dc11c4fdf Bugfix [#25934] "Apply Visual Transform as Pose" not working?
Simplified the code for Apply Visual Transform as Pose.

This makes it work for IK chains now, since there aren't any
recalculations of the pose involved now, which were contributing to
the pose getting incorrect as the applying process went on, since the
IK chain was getting calculated differently with each successive
change to the chain.
2011-02-07 10:50:35 +00:00
a4f0c29a23 PoseLib Bugfix:
When using Pose Lib with a search string, if the search fails after
typing a character and then you try to backspace to get back to the
previous search string, the pose does not refresh until you type in
another valid letter such that the search works again.

Did a logic reshuffled in the get next preview pose function so that
this is dealt with properly
2011-02-07 01:28:47 +00:00
55da733eba PoseLib Preview/Browse Bugfixes:
- [#25951] Hardcoded Keys in PoseLib modal operator register twice per
use
Now only the KM_PRESS events are handled. KM_RELEASE events for these
are ignored...

- While checking the above, I also found that the view-manipulation
while previewing functionality was broken. This was one of the
benefits of this UI approach over a fixed screenshot-only listview.
Fixed now :)
2011-02-06 22:20:26 +00:00
90cf78eb54 Fix bones moving when changing between editmode and posemode.
Patch #25901 by Tobias Oelgarte.

Bone transformations would be converted back and forth between different
representations when changing modes, which due to numerical errors could
lead to bone transformations slowly changing as you edit the armature.

Now the editmode head, tail and roll values are stored in bones and used
directly when entering edit mode. Head and tail were already there but
now we ensure they are the exact same value, roll was not yet there, so
we have a version patch for it.

The sub version was incremented to 1 for the version patch.
2011-02-05 13:19:14 +00:00
deefe52821 Quick Animation Feature: Paste Pose "Selection Mask" option
After discussions with ZanQdo, it was agreed that the current workflow
for making a pose symmetrical was a bit too cumbersome, especially
when auto-keying was enabled, requiring pasting the flipped pose on
another frame so that the changes could be merged back in without
overwriting the "good" half of the rig.

This option for the Paste Pose operator makes things easier, by adding
an option which will make the pose only get pasted on to selected
bones instead of overriding the entire pose. By default this option is
turned off, but can be easily enabled either from the toolbar
(operator properties) or through the F6 popup.

The intended workflow with this option for making a rig symmetrical is
now:
1) Copy pose
2) Select "bad" bones
3) Paste Flipped
4) Enable "On Selected Only" for the operator

If there is sufficient interest, this option can even be enabled by
default. But, we'll see about that later
2011-02-04 11:43:30 +00:00
95df65f1b5 - some parts of the code to remove rotation were not removing axis/angle rotation (only functional change of this commit).
- use BLI_math functions for removing rotations from objects and pose channels.
- add unit_axis_angle() to avoid setting the Y axis inline anywhere rotation needs removing.
2011-02-02 00:40:55 +00:00
89c617a116 remove nan-makefiles 2011-01-30 15:29:22 +00:00
ed5791bd0b - Clear rotation for objects now works on delta transforms too. The
only case that doesn't fully work yet is the one where quats/axis-
angle are converted to eulers first.
- Fixed incorrect comment
- Removed obsolete "armature_clear" var from clear origin operator.
This was some ancient stuff from 2.4x code that ended up getting
ported across...
2011-01-26 10:25:15 +00:00