In fact fixed in easiest way -- always re-calculate knots array
on topology changes.
After some discussion with Ton we agreed on that having manually
editable knots is not intuitive and user should only define
cyclic/endpoints flags and knots would be re-calculated based
on this flags.
This means that it's unnecessary to have special logic for knots
manipulating in some topology changing tools and they could just
re-calculate knots for the whole nurb, without worrying that knots
could have been manually edited.
Now these links are drawn in the same way as all others. Also they now display highlighting correctly when inserting a node into a link, making it easier to avoid unwanted insertions.
input image to be calculated in some cases, use only actual area which is
needed to calculate current tile.
Seems to be giving some % of speedup. Verified result of keying before
this patch and after this patch and they were identical, so hopefully
now area of interest is indeed correct.
Screens are usually doesn't have overexposured pixels and all
saturation / gradient math was written assuming that all channels
are withing 0 .. 1 range and in cases when some channel exceeds
this range matte could be completely wrong.
Added special check for overesposure and assume such pixels as
definitely foreground.
Also fixed minimal value for edge kernel size.
Right now this is being fixed by not allowing the exact same action (action, start/end frames, speed, etc) to be played if it's already playing. Hopefully this will not cause more issues than it solves.
a translate node were connected with the same complex node (like lens
distortion).
Added a check to see if the list of buffers are available to resolve
this issue.
First half of the problem is fixed, but the second issue regarding edge/vertex snapping disregarding angle constraints will need some refactoring eventually.
- makesdna wasn't checking whether such scalars are aligned to 8 bytes.
Now it should be handled correct.
- Some scalars in Object structure weren't 8 bytes aligned, which lead
to some incorrectly loaded files.
Fixed by adding void *pad. It's a bit tricky part of patch, but can't
see clearer way to make alignment correct
Usually ints/chars were used for padding, but in this case there are
some leading pointer properties before int64 properties and using
pointer as a padding resolves alignment on both 32 and 64 bit
platforms.
Using pointers as padding weren't needed before, because all types
were correctly aligned independent of whether pointers are 4 or 8
bytes.
This fixes#31774: Empty offset Y parameter is resetting
The problem was that calculating the angle was reliant on previous mouse coordinates, which did not update to match snapped-to vertices and edges.
This solves the issue by updating mouse coordinates in knife_find_closest_edge() and knife_find_closest_vertex(). Additionally, when angle constraints are enabled, edge/vertex snapping is now prevented.