===========================
DeBalie commit (main changes only):
- Code cleanup
- Selectable tracking graph curves and curve knots
- Graph curve and curve knots can be deleted now
- Fixed wrong write when linking libraries
(error is caused by hardcoded cound of linkable ID blocks)
- Fixed for KLT tracker when using keyframe adjustment
- removed AVG2, was only used once.
- remove unused LONGCOPY define.
- removed BLI_STRUCT_OFFSET, was only used once, replce with offsetof
- formatting edits, split some macros over multiple lines.
===========================
Naming refactor: avoid using acquire from movie clip related functions.
This stuff doesn't need releasing, all locks happens in getters,
so using get instead of acquire makes more sense here.
===========================
Fixes for codereview issues pointed by Brecht:
- Replace use_default_clip with use_active_clip setting for
motion-tracking constraints.
- Removed unneeded Clip panel from toolshelf when no clip is opened.
- Put options in Display panel in one column.
Don't want properties region be wider and it should also be
a bit easier to find option you need. Maybe additional re-shuffle
would be good here.
- Reversed order of items in Clip menu
- Re-ordered selection operators in clip editor Select menu to
match 3d viewport order.
- Share common part of sensor/shift and so detection between
object_camera_matrix and Follow Track constraint.
- Fixed typos in translate mode caused by copying files.
- Movie clip angle output is now in radians. Transform node now
accepts rotation in radians too.
- Use scale-rotate-translate order for transformation node and
stabilization data.
Also makes sense when using transform node for non-tracking goals:
image would stay centered when applying only rotation and scale.
Think it's nicer.
- Fixed compilation error caused by recent node-update commit.
This prevents access to non-existent typeinfo during type initialization,
when node types have been removed and such nodes are deleted from older files.
All blenkernel functions now only set the node->update flag instead of directly
calling the update function. All operators, etc. calling blenkernel functions
to modify nodes should make a ntreeUpdate call afterward (they already did that
anyway).
Editor/RNA/renderer/etc. high-level functions still can do immediate updates by
using nodeUpdate and nodeUpdateID (replacing NodeTagChanged/NodeTagIDChanged
respectively). These old functions were previously used only for setting
compositor node needexec flags and clearing cached data, but have become generic
update functions that require type-specific functionality (i.e. a valid typeinfo
struct).
The cause is an unknown node socket type in node groups. Ideally the node system
should handle this better and remove the unknown sockets from groups, but this
is a bit of a risky fix to do now, so instead the shader socket type has been
added, since this is a simple change and the code has been tested well.
The image node output is the default value when no image is selected. In pre-2.60 this was always initialized to 0 alpha, the defaults written in the node socket templates were completely ignored for outputs (except for value and RGB input nodes, which use these as button values). Now the stack values are initialized with the template defaults, which are all 0 by default. This patch changes alpha to 0 for image and render layer outputs too.
The problem was that all outputs got tagged indiscriminately (esp. hidden render layer sockets), leading to full recalculation every time. This was caused by erroneous tagging of bNodeStacks with hasinput/hasoutput flags. This patch restores the old behaviour of tagging all non-static stacks as input values and all outputs that are connected to some input. Only difference is in node groups, where the hasoutput flag is no longer abused for tagging internal buffers, here the is_copy flag is used instead.
===========================
Scale compositor node feature: if there's no input and scaling is set to
absolute, generate image with given resolution using color from input
socket as background. Useful to generate "overscanned" foortage.
===========================
Support for (un)distortion of images with overscan. Needed for
easier keeping this up-to-date until proper overscan support is
implemented in renderer. Not exposed into UI yet at all.
===========================
Fixed threading issues used to happen when compositor tree
and rendering happened in the same time. Problem was caused
by cached camera intrinsics stored in MovieTracking structure
and access to which wasn't thread-safe.
Now each movie distoriton mode stores it's own camera intrinsics
in it's storage which makes compositor (un)distoriton be totally
thread-safe and this also makes compositor tree faster when
(un)distortion happens on images with different resolution.
===========================
- Merge Movie Distort and Movie Undistort nodes into one node
called Movie Distortion where action (distort/undistort is specified).
- Implemented more proper distortion/undistortion for scaled images.
NOTE: Please, delete distortion nodes with current blender first
before opening files with blender versions from this commit/
===========================
Implemented "Movie Distort" and "Movie Undistort" nodes which
uses camera undistortion coefficients.
Not perfect for footages shoted on cameras with pixel aspect != 1:
there's extra scaling down and scaling up caused by others areas supposing
frame aspect x be 1 and multiplying height by 1.0/pixel_aspect.
Not so critical but would be nice to solve.