This was disabled during the course of hair dynamics work. The cloth
collision solution is based on a secondary velocity-only solver step.
While this approach is usable in general, the collision response
calculation still does not work well for hair meshes. Better contact
point generation is needed here (Bullet) and preferably an improved
solver for unilateral constraints.
* Strips in muted tracks are also drawn with dotted borders now to make it clearer
that they are not contributing.
TODO:
* Perhaps dotted should be used for protected, and opacity for muted instead?
* Do not make Action Stash Tracks or their strips active/selected
* Lock the track to prevent accidental editing/adding of other strips
* Prevent strips from being added into locked tracks by the pushdown operator.
This is mainly to prevent pushdown actions from getting into the stash tracks.
This commit modifies the "New Action" operator to always stash the old action
before it creates a new one. As a result, the old active action will now have
a proper user of sorts after the new one is created, preventing previously
created actions from being lost.
Now that the New operator does this, it can be used for the Action Editor header AND
NLA Editor (Animation Data Panel -> Active Action) again. The "stash and create"
operator is somewhat redundant at this point as a result.
In constrast to the old "new" operator, this operator will stash the existing action
in the stack to prevent it from being lost. This situation isn't totally ideal yet,
since the NLA Editor still calls the old method.
I'm still not sure which version is better, but I suspect that with the labels,
this might help users figure this out more than if they were just unlabelled
icon buttons...
This operator (the snowflake icon, beside the pushdown button on the Action Editor
header) adds the currently active action to the NLA stack in a muted track, then
creates + loads a new action ready to be populated with new keyframes.
Since the NLA is being used to hang on to all the actions here, no actions are
getting lost.
Usage Notes (there will be some additional tweaks to make this nicer):
* To preview different actions that have been "stashed", simply click the "Solo"
toggle for the track containing the action in question. Playing back the NLA will
now show the stashed track
* To edit a previously stashed action - simply enter tweakmode on it in the NLA
while the "Solo" toggle is enabled.
Todo:
* Add some more operators here to polish up the Action <-> NLA bridge to make the
layered and stash workflows smoother. Examples include some tools to easily
switch between the different actions layers in the stack, as well as making it
easier to get out of tweakmode (and sync up the action lengths)
* Review and cleanup the behaviour of the "new" operator here to avoid the old
problems that users were running into
* After the next release - Implement the full Action Libraries functionality, with
ways to bridge the stashed strips over to a full-blown library.
The Solo and Mute functionality for the NLA system should really be mutually
exclusive features. They both affect whether a given track applies or not.
The only difference is that the Solo option mutes all the others, while the Mute
only does this on a per track basis.
Before this fix, muting a strip and then making it solo meant that the solo'd
track would not play at all, which isn't really what we want.
This commit exposes the "Push Down" button/functionality found in the NLA Editor
to the Action Editor, so that actions can be added NLA Stack from here too. The
main point of this for now is to make the whole layered-animation workflow nicer
more efficient, but not requiring the second editor be visible in common cases.
It also conveniently sets things up for the next few changes (already hinted at
here)...
(Note for the uninitiated looking at the diffs: this is very much *not* what
you're probably thinking right now, if you're looking at the line in
act_new_exec())
* There was no real default value for this parameter (neither "" nor None would work the same as
not specifying that parameter). Now, 'None' is considered as default value, and you get
exact same behavior with this value and if not specifying it. This is important at least for
consistency, and potentially too in some esoteric cases (like generated code or so).
* Add a warning about the fact that 'default' parameter shall not be psecified when items
are given a callback function.
Own mistake in refactoring of `BLI_strncpy_wchar_as_utf8()`, if given size was exactly
the one needed, we'd lost last char (off-by-one error).
Many thanks to plasmasolutions (Thomas Beck) who found the issue and did
all the investigation work here!
This is still not so correct, to make it work we really have to do a
blurring pass based on the real coc (currently we are just blending 3
levels of blur)
`enforce_locks()` would reset weights of non-locked modified vgroups if it could not
find any other non-modified non-locked vgroup to 'distribute' weights into.
Sounds rather stupid, yet I hope I did not break something else, this code
is rather convoluted to say the least.
Side-reported by zeauro (ronan ducluzeau) in T43814, thanks!
Removed window arg from key conversion functions.
Removed processModifierKeys declaration since that function was
apparently never implemented.
Using Win32-specific classes instead of their generic superclass -- this
helps in a few cases like WinTab.
* m_hDC was always included after m_hWnd in all the constructors and other functions,
but the order was reversed in the struct, meaning that they would not get initialised
correctly
* Got rid of the gotos for the error handling case in initializeDrawingContext()
This was causing "jump to label ... crosses initialisation" errors for the calls
to get GL version string info (i.e. const char *vendor = ...; etc.) I wasn't sure
if those glGetString calls needed the rest of the context to be defined first, so
I decided to leave them where they are now, and got rid of the gotos (which were
making this particular piece of code a bit confusing) instead.
TODO:
There are still a bunch of warnings about around 660, which I haven't managed to solve
(but at least they won't prevent Blender from compiling)
narrowing conversion of '(stereoVisual ? 1063 : 1061)' from 'int' to
'DWORD {aka long unsigned int}' inside { } is ill-formed in C++11 [-Wnarrowing]
This patch fix two bugs related to CreateConstraint().
1. Disable linked collision only working with 6DoF constraints.
2. If all pivot axis rotations setted to zero the linked object disappears.
{F101374}
Reviewers: moguri, sybren, brita_, lordloki
Reviewed By: lordloki
Subscribers: p9ablo
Differential Revision: https://developer.blender.org/D704
Things here are simple, selected bone joint could have same priority as
unselected bone, so bone would always win. Gave joints a little more
priority than bones, usually user will be more precise just to select
the joint anyway.
frame start.
Issue here is that if we failed to get an image from the cache, we would
try to load from file. This would fail when the queried frame was less
than the animated sequence start frame, and invalidate the OK state of
the image.
Solution is that when loading from cache succeeds, we also reset the OK
state of the image for animated textures.
The fix might be relevant elsewhere too, but kept it isolated just in
case.
loading 'readline' module could crash blender if 'libedit' was already linked (via LLVM).
Workaround the problem for now since we don't even need readline,
a _real_ fix likely involves changing how LLVM or Python are built.