Commit Graph

219 Commits

Author SHA1 Message Date
Joshua Leung
86f71fad8b Bugfix #22374: index=-1 not work for keyingset.paths.add() function
Simple typo which meant that paths with 'Entire array' set could not be reimported properly.
2010-05-20 11:04:15 +00:00
Campbell Barton
610c4befd4 option to copy constraints without making their ID references direct links.
needed because proxies are causing libs to be linked directly when they should be kept indirect (likely slowing load times though I didnt time this)
2010-04-29 15:31:53 +00:00
Campbell Barton
cacd2477c0 bugfix [#22117] Memory Error messages with Spline IK
chainlen was initialized as 0
2010-04-25 13:27:52 +00:00
Campbell Barton
39c0e690d3 sub_v3_v3v3 --> sub_v3_v3 (where possible) 2010-04-23 23:57:00 +00:00
Joshua Leung
877e855ca5 Quick fix, just in case the mesh has no vertex groups, there won't be a crash! 2010-04-23 12:15:50 +00:00
Joshua Leung
6a56b0d844 Bugfix #22101: Envelopes dont respect armature modifier vertex group mask
Changed the point where the vertex groups are retrieved. Hopefully this commit doesn't break any cases I haven't thought of...
2010-04-23 12:11:56 +00:00
Joshua Leung
ce9d5c43e2 Spline IK - Influence Control
Made the 'Influence' slider work for Spline IK too, and made that setting visible now that it works. 

Note that there is still some popping that can occur when going to/from influence = 0.0. I'm not sure exactly what's causing this yet, but hopefully it won't be too noticeable in practice.
2010-04-23 05:14:00 +00:00
Campbell Barton
fba7ebcbea replace add_v3_v3v3() --> add_v3_v3() where possible 2010-04-21 12:27:48 +00:00
Campbell Barton
f7717b2e80 option to use curve point weights to influence particle effectors. 2010-04-21 11:59:47 +00:00
Campbell Barton
24eedb2175 vertex group option for lattice, needed for applying a lattice to a beard/moustache without moving the roots about. 2010-04-20 21:38:55 +00:00
Campbell Barton
4fde9823fd possible fix for [#22057] Autoname L/R in bones names center bones as .R
Bone would get a '.' added even when there was no extension.
(center limit would still be useful)

- name flipping function used sizeof() incorrectly.
- ED_lorem should be extern.
2010-04-18 14:47:45 +00:00
Campbell Barton
8f1500da00 remove config.h references, was added for automake build system rev around 124-126 but isnt used by any build systems now. 2010-04-18 10:28:37 +00:00
Brecht Van Lommel
40e58c8509 Optimization for pose channel name lookups using a hash, makes
playback in one particular scene with 3 characters go from 10 to 13 fps.
(commit 27728 by Brecht from render25 branch)
2010-03-26 10:33:53 +00:00
Campbell Barton
1e9bf0cfdb spaces -> tabs, (4 spaces == 1 tab, only for white space preceding text) 2010-03-22 09:30:00 +00:00
Campbell Barton
546ca400d8 removed unused includes, except for physics and particle related files 2010-03-21 13:42:25 +00:00
Joshua Leung
26932c21eb Bugfix #21384: Bone Driven Shapekeys Child Evaluation Problem
Transform channel drivers for bones in 'localspace' was using the wrong matrix when getting the transforms. I had been assuming that pchan->chan_mat always contained only the matrix-ised transform values stored in the pchan (which is true while constraints are being evaluated, but not afterwards). 

Changes:
- Added a new function to calculate this matrix instead of directly writing it on the pchan->chan_matrix field. 
- Also, made the normalisation of the quaternion values during this process be done on a temp var instead of on the stored value. This was a constant source of confusion in the past, so let's see if we can do without it now :)

Unrelated to this commit, I've also fixed a compiler warning with previous commit that I missed (missing include).
2010-03-01 05:19:07 +00:00
Campbell Barton
3f5786a00e added support for proxies as drivers back. 2010-02-23 17:56:45 +00:00
Campbell Barton
3bf2715039 apply visual transform to pose
So constrainted bones can have their transform applied to their loc/scale/rot, then remove the constraints
2010-02-19 15:34:26 +00:00
Campbell Barton
c5bcbad779 Proxy ID property syncing
This means pose bones on proxy poses can have their own values as long as the name and type matches that of the library pose bone.
without this the only way to add new values on a pose bone proxy is to protect in the lib, reload the proxy blend and save.
2010-02-15 18:43:54 +00:00
Campbell Barton
081c1205a3 correct fsf address 2010-02-12 13:34:04 +00:00
Campbell Barton
a6bbdae805 sync the custom transform option for proxies 2010-02-04 10:42:15 +00:00
Joshua Leung
74190f255b Spline IK: Small tweak improving (but not completely solving) the situation for bug #20708
The best workaround for problems with SplineIK applied to a chain of BBones so far is to disable 'Chain Offset'. Hopefully this workaround will soon become irrelevant.
2010-02-03 11:09:47 +00:00
Joshua Leung
0ff879af73 Spline IK Bugfix:
Spline IK now takes curve-object transforms into account when the 'Chain Offset' option is not enabled, since the intention of that feature is to allow a chain of bones following the shape of a curve to be placed anywhere in the scene.
2010-02-03 01:08:37 +00:00
Joshua Leung
8dd14e1eed Graph Editor: Bugfixes for option where only the keyframes of selected F-Curves are shown
* Selected keyframes in unselected F-Curves were still being modified, although not shown
* Selection tools for keyframes were changing the selection status of F-Curves, making keyframes sometimes disappear after trying to select another keyframe

* Warning fixes in a few other files
2010-01-22 23:51:31 +00:00
Brecht Van Lommel
939c3ba9cb Fix for proxy fix: copy drivers on synchronize now does proper relinking
of driver targets, sharing code with make proxy.
2010-01-20 14:28:49 +00:00
Brecht Van Lommel
1e7858f5a0 Proxy Fix: drivers are now copied on proxy synchronization. Also for bones
on non-proxy protected layers, not sure if these should be done or not, it
depends a bit on preference.
2010-01-20 12:20:34 +00:00
Joshua Leung
7759fc2983 Motion Paths - (Part 3) Operators, Drawing, and Fixes
This commit makes the new-style Motion Paths work for Objects and Bones. Motion Paths can either be added for Objects (Object buttons) or for Selected Bones in PoseMode (Armature Buttons), and/or removed from these panels too.

Changes:
* Changed the way the baking code worked, since it was better to be able to bake a bunch of objects at once, instead of doing it per object
* Fixed a variety of bugs regarding initialising defaults and reading old files
* Added operators for Objects (like for bones), and replaced the existing code for bones.
* Fixed bug with baking code that was causing it to bake the wrong ranges

Todos:
* Frame number drawing is currently messed up, since the "cached" text drawing takes into account the object transforms.
* The new MotionPath panels currently appear as the first panels in the respective contexts, probably due to the order in which the files are included. This needs some fixing, though not sure what the best way is yet.
2010-01-19 11:31:49 +00:00
Campbell Barton
b0f87935a8 spelling errors, no real changes to code. 2010-01-14 10:59:42 +00:00
Brecht Van Lommel
b58a14fe93 Fix for custom shapes getting lost on proxy armature bones. 2010-01-12 18:56:39 +00:00
Campbell Barton
d51e0594fb sanity check that prevents crashing when syncing poses,
attempted to do a partial sync with pose mode however this seems not easy at all since connected data gets lost, parents are invalid etc.
2010-01-05 19:34:19 +00:00
Campbell Barton
74b80f8c3d crashfix, duplicating armatures with ID-Props assigned to the bones didnt copy the bone. 2009-12-07 15:54:27 +00:00
Campbell Barton
5ca3d1919c fix for undo crashing when animating proxies that had ID props 2009-11-27 12:42:42 +00:00
Brecht Van Lommel
7828f822df Bugfix: pose bone was doing double translation in some cases,
due to my commit yesterday.
2009-11-26 11:38:28 +00:00
Joshua Leung
1fcffd1aa0 Bugfix #20041: Drivers don't work on bone visiblity
- Drivers on added to the 'armature' datablock (i.e. keyframing some settings for a "Bone" as opposed to "PoseBone") now evaluate correctly. Added proper recalcs for this case too.

- Also fixed some memory leaks and loading problems I encountered with the test file provided. After having problems loading the test file, I ended up reproducing and finding the error.
2009-11-26 03:43:39 +00:00
Brecht Van Lommel
2b121e6599 Pose Bone Local Location: now also works for non-connected bones with parents. 2009-11-25 18:48:29 +00:00
Brecht Van Lommel
b129ccf000 Pose Bone "Local Location" option. This is enabled by default, disabling it
puts the bone location in pose space rather than local bone space.
2009-11-25 14:59:02 +00:00
Joshua Leung
6555eca6fe 2009-11-23 00:03:51 +00:00
Campbell Barton
684405e0fb id properties for editbones and pose channels were not being freed in a number of cases,
added free_pose_channel(pchan) and use this in all places that free pose bones
2009-11-21 11:26:09 +00:00
Joshua Leung
10e1780cf9 Assorted bugfixes - Sequencer/Preview Range:
* Snapping strips now works with the hotkey  Shift-S   as in the rest of Blender
* Preview Range works in Sequencer now (the operators for setting, clearing, and also drawing)
* Related to the Preview Range for Sequencer, toggling the time-display mode also works
* Preview Range Set operator now works again, after the modal keymaps change for borderselect broke it. Also sends correct notifiers now after bein called.
2009-11-17 10:12:35 +00:00
Joshua Leung
e12f39d116 Spline IK: Fixes for the crashes with non-existant path data that are applied elsewhere 2009-11-12 23:27:33 +00:00
Brecht Van Lommel
17b6dfa499 Bugfix: workaround for spline IK crash with curve path not created
yet, this is actually a depsgraph issue .. so instead of crashing it
will not update correct on file load now.
2009-11-12 15:18:01 +00:00
Joshua Leung
1df6575074 Spline IK: UI/Scaling Tweaks
* Renamed "Keep Max Length" to "Y Scaling" which has the opposite meaning

* Improved the way that Y-Scaling off behaves. Most of the time, bones that do not fit on the curve are now "blended off" their default rotations instead of being scaled to zero.

* Added option to offset an entire chain by moving the root bone of the chain. This is named "Chain Offset"
2009-11-12 12:20:57 +00:00
Brecht Van Lommel
91446e9aad Math Lib
* Post-conversion commit, fixing some introduced warnings.
2009-11-10 20:50:34 +00:00
Brecht Van Lommel
37e4a311b0 Math Lib
* Convert all code to use new functions.
* Branch maintainers may want to skip this commit, and run this
  conversion script instead, if they use a lot of math functions
  in new code:
  http://www.pasteall.org/9052/python
2009-11-10 20:43:45 +00:00
Joshua Leung
d0cd641de3 Bugfixes for Armatures, SplineIK, and F-Curve RNA:
* Fixed the handling of the 'draw_active' flag for drawing of armatures. This is now cleared from bones in old files (so one bone always got represented as active in the viewport even when others were selected), and the flag is correctly set temporarily when drawing the bones (only one place had been done).

* Fixed typo with SplineIK that was making the root bone of the bone chains always be ignored. Similar functionality can come back at some point, but in a more useful form.

* Shortened the UI names for the F-Curve colouring modes to increase readability. The old ones were too long to be able to distinguish between entries in the UI.
2009-11-09 23:41:48 +00:00
Campbell Barton
5935ef0049 use armature active bone as a pointer rather then a flag for each bone that needs looking up.
- rna vars arm.bones.active & rna.edit_bones.active
- needed special undo support.
- readfile.c loads.
- duplicate and copy_armature support.
- keep the draw flag, renamed to BONE_DRAW_ACTIVE, only use for openGL drawing.

Note: it may be better to allow active/unselected as with objects.
2009-11-09 21:03:54 +00:00
Joshua Leung
06d5d53a24 Bugfixes + Spline IK Tweaks:
* #19819: 'Select' operator for Hooks was crashing when Hooks didn't have any vertices assigned yet

* Default twist resolution mode for curves is now 'Minimise'. This seems to work better for Curve Deforms and other purposes. Can be changed if other ways are better after some more testing.

* Spline IK now has more options for controlling how the x and z axis scaling is determined. There is now a choice between using the radius of the curve, the x+z scaling from the bones, or no scaling (default). This does break old files a bit, but this is to have a more stable base for later.
2009-11-05 10:09:45 +00:00
Joshua Leung
20c424730e Spline IK: Rolling Control
Recoded the way that Spline-IK computes the x+z axes of the bones so that flipping artifacts are minimised, and the rotation of individual bones can be used to affect the results of the solution, as per requests from Cessen. 

The bone matrices are now computed normally, and then made to conform to the orientation + scaling imposed by the splines, using the Damped-Track method. Previously, the axes of the bones were calculated without regarding the prior orientation of other bones in the chain, which lead to "z-twists". 

Notes for further investigation:
- There appears to be some shearing that gets introduced now. Unforunately, I can't seem to isolate the cause of this, but I hope it's not going to become too much of a problem in general.
- Maybe inverse corrections for rotation will now be necessary when using transform tools?
2009-11-04 11:30:48 +00:00
Joshua Leung
334a80a4f8 Spline IK Experimental Features:
1) "Even Divisions" - This option ignores the length of bones when considering how they should fit along the curve. This is useful for getting a smoother curve fit without having to worry about getting the bone lengths spot on. By default, this is disabled.

2) "Keep Max Length" - This option prevents the bone chain from extending past its natural length when the spline is stretched beyond that length. When the spline length is substatially shorter though, this bones get scaled to zero; making this option possibly useful for doing "growing tips". 
This is essentially a 'no scale' option, although the behaviour when the curve is shorter is really a compromise since the curve cannot be accurately satisfied + left intact without some scaling being applied due to the way this works.

3) "Radius to Thickness" - The average radius of the spline between at the head+tail of each bone determines the x+z scaling of the bone.
2009-11-02 10:04:37 +00:00
Joshua Leung
e8b5effdff Spline IK Bugfixes 1:
* Fixed crash when reloading a file with Spline IK and/or Damped Track constraints. The targets for these constraints weren't getting relinked.
* Fixed problems with removing Spline IK making some bones unable to be manipulated.
* Jotted down some comments in the Spline IK code noting places where additional tweaks will be added.
2009-11-01 22:30:47 +00:00