Campbell Barton [Wed, 13 Jun 2012 14:09:20 +0000 (14:09 +0000)]
added mask tool to recalculate handles (Ctrl+N)
Campbell Barton [Wed, 13 Jun 2012 14:01:28 +0000 (14:01 +0000)]
fix for incorrectly checking for break in r47826
Campbell Barton [Wed, 13 Jun 2012 13:59:46 +0000 (13:59 +0000)]
style cleanup
Campbell Barton [Wed, 13 Jun 2012 13:23:48 +0000 (13:23 +0000)]
apply offset to the camera view - this works exactly like camera shift (transforms X/Y in the same space).
Campbell Barton [Wed, 13 Jun 2012 12:58:01 +0000 (12:58 +0000)]
framing options for camera background image: stretch/fit/crop
Jeroen Bakker [Wed, 13 Jun 2012 12:34:56 +0000 (12:34 +0000)]
* optimized threading
* break out with glare node
* Added OpenCL kernels compatible with AMD still need some testing.
Brecht Van Lommel [Wed, 13 Jun 2012 11:44:48 +0000 (11:44 +0000)]
Cycles: first step for implementation of non-progressive sampler that handles
direct and indirect lighting differently. Rather than picking one light for each
point on the path, it now loops over all lights for direct lighting. For indirect
lighting it still picks a random light each time.
It gives control over the number of AA samples, and the number of Diffuse, Glossy,
Transmission, AO, Mesh Light, Background and Lamp samples for each AA sample.
This helps tuning render performance/noise and tends to give less noise for renders
dominated by direct lighting.
This sampling mode only works on the CPU, and still needs proper tile rendering
to show progress (will follow tommorrow or so), because each AA sample can be quite
slow now and so the delay between each update wil be too long.
Campbell Barton [Wed, 13 Jun 2012 11:40:49 +0000 (11:40 +0000)]
update themes for new colors, patch by Brendon Murphy
Brecht Van Lommel [Wed, 13 Jun 2012 11:25:36 +0000 (11:25 +0000)]
Fix cycles crash when viewport camera border goes out of view.
Brecht Van Lommel [Wed, 13 Jun 2012 11:25:22 +0000 (11:25 +0000)]
Fix cycles object_flag array being allocated too big.
Campbell Barton [Wed, 13 Jun 2012 10:35:41 +0000 (10:35 +0000)]
always use bicubic sampler for the scale node with the new compositor since it worked like this in the old compositor.
this ignores the sampler passed and could be done in a nicer way so left this as an ifdef so it can be easily redone.
Campbell Barton [Wed, 13 Jun 2012 10:03:39 +0000 (10:03 +0000)]
style cleanup: scale node
Campbell Barton [Wed, 13 Jun 2012 08:35:50 +0000 (08:35 +0000)]
mango request
- highlight active mask layers.
- remove keyframes when all layer data is removed.
Campbell Barton [Wed, 13 Jun 2012 08:20:43 +0000 (08:20 +0000)]
tint non-active mask layers grey
Lukas Toenne [Wed, 13 Jun 2012 08:10:59 +0000 (08:10 +0000)]
Fix #31780, cycles nested group rendering broken. Was using the dupli object 'index' member to identify dupli objects, but this is not unique and in fact just 0 in most cases. Needs to use a simple dupli list counter instead.
Campbell Barton [Tue, 12 Jun 2012 23:19:52 +0000 (23:19 +0000)]
code cleanup: use const float's where possible and specify vector size.
Gaia Clary [Tue, 12 Jun 2012 23:19:34 +0000 (23:19 +0000)]
Collada: fixed a few loops to only loop over the list of exported objects, instead of the current scene.
Gaia Clary [Tue, 12 Jun 2012 23:01:43 +0000 (23:01 +0000)]
fix code style cleanup
Campbell Barton [Tue, 12 Jun 2012 22:05:33 +0000 (22:05 +0000)]
style cleanup
Sergey Sharybin [Tue, 12 Jun 2012 21:29:15 +0000 (21:29 +0000)]
Default value for frame offset should be 0
Gaia Clary [Tue, 12 Jun 2012 21:25:29 +0000 (21:25 +0000)]
patch #31794 Collada: make exporter more robust, now uses BKE_object_relational_superset()
Sergey Sharybin [Tue, 12 Jun 2012 21:25:23 +0000 (21:25 +0000)]
Added frame offset slider to clip datablocks
In contrast to start_frame (which affects on where footage actually
starts to play and also affects on all data associated with a clip
such as motion tracking, reconstruction and so on) this slider only
affects on a way how frame number is mapping to a filename, without
touching any kind of tracking data.
The formula is:
file_name = clip_file_name + frame_offset - (start_frame - 1)
Gaia Clary [Tue, 12 Jun 2012 21:23:51 +0000 (21:23 +0000)]
patch #31794 Added new function BKE_object_relational_superset()
Sergey Sharybin [Tue, 12 Jun 2012 21:07:14 +0000 (21:07 +0000)]
Fix camera curve in clip editor not being remapped by a clip's start frame
Campbell Barton [Tue, 12 Jun 2012 20:04:55 +0000 (20:04 +0000)]
yse BLI_math for the compositor in more places.
Gaia Clary [Tue, 12 Jun 2012 19:37:30 +0000 (19:37 +0000)]
fix: Collada build warning about inconsistent usage of Camera structure/class
Thomas Dinges [Tue, 12 Jun 2012 19:04:12 +0000 (19:04 +0000)]
Cycles:
* Add back a break, which was deleted in r47773.
Campbell Barton [Tue, 12 Jun 2012 18:36:49 +0000 (18:36 +0000)]
remove input socket of mask node, this wasnt used.
Bastien Montagne [Tue, 12 Jun 2012 18:35:36 +0000 (18:35 +0000)]
Minor fix [#31798] [minor] simpledeform modifier tooltip
Sergey Sharybin [Tue, 12 Jun 2012 17:11:16 +0000 (17:11 +0000)]
Added Selected Only and Show Hidden flags to clip editor's curve view
Sergey Sharybin [Tue, 12 Jun 2012 17:11:00 +0000 (17:11 +0000)]
Some Clip Editor interface clean-ups:
- Display track's reprojection error in dopesheet
- Make sure track is selected when clicking on dopesheet channel
- Attempt to make headers a bit cleaner without long labels which
doesn't actually make sense.
Sergey Sharybin [Tue, 12 Jun 2012 17:10:47 +0000 (17:10 +0000)]
Added options to display only selected tracks and show hidden tracks
in motion tracking dopesheet view.
By default all channels are displaying now.
Sergey Sharybin [Tue, 12 Jun 2012 17:10:24 +0000 (17:10 +0000)]
Make dopesheet settings per-tracking data
It was a bit confusing to synchronize settings used in pre-calculated
dopesheet channels which was storing in tracking data with settings
used for display which is in space data.
This was initially done by converting one flags to other and checking
if space's settings matches pre-calculated one, but that had several
issues if two different dopesheet are using different settings:
- Channels would be re-calculated on every redraw for each of spaces
- Dopesheet operators could fail due to the could be using channels
calculated for other space.
That was also quite nasty code checking if requested settings matches
pre-calculated one.
Sergey Sharybin [Tue, 12 Jun 2012 14:59:36 +0000 (14:59 +0000)]
Tracking dopesheet's scrollbat now updates to channels number nicely.
Joshua Leung [Tue, 12 Jun 2012 11:54:31 +0000 (11:54 +0000)]
Naming + Style tweaks for newly added flag for Action Constraint
Old names used could conflict with other things too easily in future
Nicholas Bishop [Tue, 12 Jun 2012 11:22:10 +0000 (11:22 +0000)]
Decrease frequency of mallocs during multires sculpt smoothing
Patch from Jason Wilkins.
Creates a pool of allocations (one for each OpenMP thread) rather than
allocating every time do_multires_smooth_brush() is called.
Sergey Sharybin [Tue, 12 Jun 2012 11:13:53 +0000 (11:13 +0000)]
Masking support for motion tracks
Added option to use Grease Pencil datablock as a mask for pattern
when doing motion tracking. Option could be found in Tracking Settings
panel.
All strokes would be rasterized separately from each other and every
stroke is treating as a closed spline.
Also added option to apply a mask on track preview which is situated
just after B/B/W channel button under track preview.
Campbell Barton [Tue, 12 Jun 2012 08:50:40 +0000 (08:50 +0000)]
optimize jpeg2000 loading.
Lukas Toenne [Tue, 12 Jun 2012 08:44:46 +0000 (08:44 +0000)]
Modification of node groups by adding/removing nodes is not possible yet. This patch extends the 'Make Group' operator and adds a new 'Separate' operator to add such functionality.
1) For inserting into existing groups:
The 'Make Group from selected' (CTRL+g) operator shows a selection popup (like the object parenting operator), with options depending on the type of the active node (last selected):
* "New" -> regular operator, creates new group type with all selected nodes inside.
* "Insert" (only if active node is a group) -> adds all other selected nodes into the group.
Currently still prohibits groups inside groups in general, though would be technically possible as long as no actual recursion occurs (group containing itself).
2) For extracting from an existing group:
New 'Separate from group' operator (p), works similar to separating vertices/edges/faces from mesh. Two modes:
* "Copy" makes a copy of the nodes in the parent tree, but keeps the original group intact.
* "Move" removes selected nodes from the node group and adds them to the parent tree
Bastien Montagne [Tue, 12 Jun 2012 08:32:06 +0000 (08:32 +0000)]
Few minors style and type fixes (and a nice, harmless copy/paste error! ;) )
Lukas Toenne [Tue, 12 Jun 2012 08:28:25 +0000 (08:28 +0000)]
Reroute node socket types update automatically from connections when possible. This prevents unnecessary conversions and breaking connections when linking incompatible types to the reroute color sockets (point in case: cycles shaders).
Campbell Barton [Tue, 12 Jun 2012 08:10:34 +0000 (08:10 +0000)]
optimize jpeg2000 saving
- expand loops to avoid checks for each iteration
- use unsigned ints for looping over pixels
- use inline functions for color conversion
Lukas Toenne [Tue, 12 Jun 2012 07:27:50 +0000 (07:27 +0000)]
Fix #31675 Reroute nodes aren't working for cycles.
Note that currently the reroute nodes are hardcoded to color values, which means they will not work for shader type connections (and possibly cause overhead for float and vector conversion). Looking into a solution.
Bastien Montagne [Tue, 12 Jun 2012 06:22:23 +0000 (06:22 +0000)]
"Fix" for [#30704] Action Constraint mapping bug
Feature request rather than a real bug: allow constrained bone to use "object" part of the linked action, in addition to "same-named bone" part.
Jeroen Bakker [Tue, 12 Jun 2012 04:23:21 +0000 (04:23 +0000)]
* FIX for
- [#31777] Border Crop gives black
- [#31768] Crash when connecting a Math node to a translate node in Tiles comp
- [#31638] View node in new node compo system crashes when inside a group
* make sure a very fast vignette can be made by using a EliipseMask + Fast Gaussian blur
Campbell Barton [Mon, 11 Jun 2012 20:58:16 +0000 (20:58 +0000)]
fix for using freed memory with mask point slide
-- This line, and those below, will be ignored--
M source/blender/editors/mask/mask_ops.c
Campbell Barton [Mon, 11 Jun 2012 20:50:57 +0000 (20:50 +0000)]
fix for crash drawing grease pencil attached to a tracking marker.
also fix for use of uninitialized variable for ED_clip_point_undistorted_pos().
Campbell Barton [Mon, 11 Jun 2012 19:12:45 +0000 (19:12 +0000)]
safety check when making a node local- make sure its already in the node tree.
Bastien Montagne [Mon, 11 Jun 2012 18:58:34 +0000 (18:58 +0000)]
Fixing first part of [#31760] Assignments not working properly for Object.dimensions
Problem was in fact that non-linear-contiguous axis assignement was broken (i.e. location.xy would work as expected, but location.xz would only affect .x part)... Now all possibilities should work fine.
Did not try to fix the problem specific to obj.dimension (when assigning multiple times to this array, only the last one is taken into account - in fact, a simple print() shows that assigning to dimension is not taken into account immediately), not sure whether this is normal behavior, or if we need a specific "update" of some kind for this prop?
Campbell Barton [Mon, 11 Jun 2012 18:43:48 +0000 (18:43 +0000)]
rna read/write access to ...
node_tree.nodes.active
Campbell Barton [Mon, 11 Jun 2012 18:43:16 +0000 (18:43 +0000)]
minor changes to jpeg2k saving based on reading v1.5 source examples.
Campbell Barton [Mon, 11 Jun 2012 18:16:26 +0000 (18:16 +0000)]
add missing node RNA booleans.
Antony Riakiotakis [Mon, 11 Jun 2012 16:23:10 +0000 (16:23 +0000)]
Add user preference "GPU Mipmap Generation" under the System/OpenGL
subpanel to calculate image mipmapping on the GPU, saving upload and
calculation time. Default is off just in case.
Lukas Toenne [Mon, 11 Jun 2012 15:28:45 +0000 (15:28 +0000)]
Fix for node 'make group' operator in combination with frame nodes. When a selected node is attached to an unselected frame, the parent pointer would end up pointing to a different ID data block.
Antony Riakiotakis [Mon, 11 Jun 2012 13:00:35 +0000 (13:00 +0000)]
Fix compilation of new tracker for MinGW/MinGW64
Campbell Barton [Mon, 11 Jun 2012 12:13:41 +0000 (12:13 +0000)]
minor fixes
- new compositor could use uninitialized var
- profile conversion could use uninitialized var
- set better warnings for clang+cmake.
- remove picky warnings from sphinx doc gen shell script.
Sergey Sharybin [Mon, 11 Jun 2012 11:54:16 +0000 (11:54 +0000)]
Draw grease pencil after masks
Looks like drawing grease pencil before masks was affecting projection matrix
somehow which made masks invisible
Anyway, drawing GP actually shall happen after masks to match how it works
in other areas.
Sergey Sharybin [Mon, 11 Jun 2012 11:40:54 +0000 (11:40 +0000)]
Scale search area when doing planar tracking
Helps keeping features tracked when there's large scale happens
without need to manually re-adjust search area.
Currently using factor of pattern's boundbox scale, but probably
could be done in more accurate way?
Sergey Sharybin [Mon, 11 Jun 2012 11:40:36 +0000 (11:40 +0000)]
Fixed issue with disappearing Clip/Track menu from GP panel in Clip Editor
caused by switching to Track GP without having active track.
Joshua Leung [Mon, 11 Jun 2012 11:11:11 +0000 (11:11 +0000)]
Cosmetic fixes
* PoseBone struct didn't have an icon
* Comment fixes (stil referenced IPO's)
Nicholas Bishop [Mon, 11 Jun 2012 11:00:58 +0000 (11:00 +0000)]
Fix invalid array index in armature_deform_verts().
Check that the def_nr is non-negative before using as index.
Fixes bug [#31700] Crash when opening .blend file on 64bit environment
Nicholas Bishop [Mon, 11 Jun 2012 10:14:46 +0000 (10:14 +0000)]
Add missing/incorrect selection flushes.
Added selection flush after loop cut, changed select_linked_pick's
flush to use the em selection flag.
Fixes bug [#31715] Cases where verts and edges are selected but not
relevant faces
Campbell Barton [Mon, 11 Jun 2012 10:11:31 +0000 (10:11 +0000)]
template for python node operators
Nicholas Bishop [Mon, 11 Jun 2012 09:41:08 +0000 (09:41 +0000)]
Fix incorrectly deleted elements in array modifier caps.
Add check for merging vertices into vertices that are themselves
marked for merge, was already done for array eleements but not end
caps.
Fixes bug [#31695] Array Modifier: End Cap fails if all vertices are merged
Also corrected some reversed assert arguments.
Campbell Barton [Mon, 11 Jun 2012 09:24:25 +0000 (09:24 +0000)]
updates to context docs and add missing member to node context 'node_context_dir'.
Bastien Montagne [Mon, 11 Jun 2012 09:05:17 +0000 (09:05 +0000)]
UI messages fixes...
Nicholas Bishop [Mon, 11 Jun 2012 08:37:35 +0000 (08:37 +0000)]
Fix applying object transform to multires objects.
Bug [#31785] Applying a transform to an object with multires weird result
Was reading interleaved coord/mask data incorrectly since paint mask
merge. Fixed by using two separate CCGKeys.
Some additional code cleanup: deduplicate multires tangent matrix
calculation.
Jeroen Bakker [Mon, 11 Jun 2012 08:28:04 +0000 (08:28 +0000)]
* Blur node had some irregularities at the edge of the screen
only visible when doing large size blurs.
also solved the catcom/mitch filter that didn't work at low/medium quality
PS never use BokehBlur Gausian filter as it is 99%+ identicat as non bokeh <= top for sergey- :)
Campbell Barton [Mon, 11 Jun 2012 08:15:37 +0000 (08:15 +0000)]
fix for crashes in smooth-curves and clean-curves fcurve operators - missing NULL checks.
Sergey Sharybin [Mon, 11 Jun 2012 08:06:42 +0000 (08:06 +0000)]
Move all marker placement into a single omp critical section
Could give small speadup.
Campbell Barton [Mon, 11 Jun 2012 06:51:01 +0000 (06:51 +0000)]
quiet 'unused' warning.
Joshua Leung [Mon, 11 Jun 2012 05:05:05 +0000 (05:05 +0000)]
Bugfix [#27886] Transform constraint maps wrongly with negative scale
AFAIK, it is impossible to determine exactly which axes may have negative
scaling values from a 4x4 matrix (which is the underlying cause of this bug).
However, we can figure out if there is some negative scaling going on in that
matrix (i.e. one of the axes has negative scale). So, the fix here is to
negatively scale everything if we detect this happening.
WARNING: do not rely on being able to accurately detecting positive/negative
values for more than a single axis per bone controller. Weird results may occur.
You have been warned.
Joshua Leung [Mon, 11 Jun 2012 04:34:59 +0000 (04:34 +0000)]
Bugfix [#31766] Mouseover Label reads 'Alt Left Arrow' when over the right
arrow.
Patch by Philipp Oeser
Joshua Leung [Mon, 11 Jun 2012 04:13:39 +0000 (04:13 +0000)]
Bugfix [#28962] Changing actions via undo/delete all keyframes lacks UI refresh
Slightly hacky fix to get updates working for Action Editor header when there
are changes of the active action (via undo and/or deleting all keyframes at
once). Since the action referenced by the editor only gets updated when anim
channel filtering (e.g. as a result of the channel syncing operation) is
invoked. Added comments noting where these updates actually occur
Joshua Leung [Mon, 11 Jun 2012 03:03:36 +0000 (03:03 +0000)]
Bugfix: Crash in Sequencer when trying to undo after using Grease Pencil
Grease Pencil data was not getting correctly relinked after file reload (for
undo)
Guillermo S. Romero [Mon, 11 Jun 2012 02:29:25 +0000 (02:29 +0000)]
SVN maintenance.
Joshua Leung [Mon, 11 Jun 2012 02:23:26 +0000 (02:23 +0000)]
Commented out expand_bones(), as this wasn't actually doing anything other than
wasting time traversing the list of bones in the Armature
Joshua Leung [Mon, 11 Jun 2012 02:01:48 +0000 (02:01 +0000)]
Build-system fix (for r.47710)
Need add blenfont to list of include directories for sequence editor buildfiles.
Was causing build errors on OSX. Thanks Zavigny (IRC report)
Joshua Leung [Mon, 11 Jun 2012 01:27:56 +0000 (01:27 +0000)]
Grease Pencil Eraser - Numpad +/- and Scrollwheel Up/Down to change radius of
brush while erasing
This makes it easier to change the size of the brush without having to jump out
to the User Preferences and back
Joshua Leung [Mon, 11 Jun 2012 01:09:25 +0000 (01:09 +0000)]
Grease Pencil - Eraser is drawn with the circle/brush indicator again
Joshua Leung [Mon, 11 Jun 2012 00:46:22 +0000 (00:46 +0000)]
Code cleanup - Removing/commenting out various bits of legacy cruft related to
old Grease Pencil stuff
Joshua Leung [Mon, 11 Jun 2012 00:21:50 +0000 (00:21 +0000)]
Grease Pencil - Support for Grease Pencil in the Sequence Editor preview/image
space works again
This commit restores the support for using Grease Pencil in the Sequence Editor
image preview region, making it possible to scribble on footage for review
purposes again. Due to internal changes in how the Sequencer handles the image
drawing for this stuff (i.e. it is now fully based on View2D instead of trying
to implement its own little crazy offset+zoom stuff), a lot of the old code for
handling those offsets is no longer needed. Instead, one of the "standard" cases
is now used, and works quite well.
Bugfixes:
* View-space Grease Pencil drawing was done in wrong place (before view2d
restore)
* Grease Pencil entry in RNA had wrong/missing type
Credits:
* DingTo - initial patch/attempt at restoring support
* Aligorith - solved the "offset problems"
Dan Eicher [Sun, 10 Jun 2012 22:22:26 +0000 (22:22 +0000)]
OUTLINER_OT_material_drop -- Drag & Drop materials onto objects in the outliner
Adds the material at materials + 1 unlike the DnD view3d one which replaces the first one
Campbell Barton [Sun, 10 Jun 2012 22:13:17 +0000 (22:13 +0000)]
style cleanup
Campbell Barton [Sun, 10 Jun 2012 21:38:24 +0000 (21:38 +0000)]
fix [#31712] User prefs Input: Filter searches for names starting with entered phrase only
Campbell Barton [Sun, 10 Jun 2012 20:31:01 +0000 (20:31 +0000)]
correct float vector sizes
Campbell Barton [Sun, 10 Jun 2012 20:20:37 +0000 (20:20 +0000)]
quiet warning
Campbell Barton [Sun, 10 Jun 2012 20:14:15 +0000 (20:14 +0000)]
correct freeing C++ arrays.
Campbell Barton [Sun, 10 Jun 2012 19:59:02 +0000 (19:59 +0000)]
style cleanup
Mitchell Stokes [Sun, 10 Jun 2012 19:32:57 +0000 (19:32 +0000)]
Committing patch [#31704] "Patch to fix keyboard sensor from blocking quit game key binding" by Jay Parker. This patch fixes [#31671] "Keyboard Sensor blocks Quit Game Key Binding"
Sergey Sharybin [Sun, 10 Jun 2012 17:24:05 +0000 (17:24 +0000)]
Also fix cache line in clip editor which didn't take start frame into account.
Sergey Sharybin [Sun, 10 Jun 2012 17:09:35 +0000 (17:09 +0000)]
Fixed curves and dopeseet views of motion tracking data not taking clip's
start frame into account.
Nicholas Bishop [Sun, 10 Jun 2012 17:06:26 +0000 (17:06 +0000)]
Force multires update when changing subdivision type.
Fixes bug [#31050] Changing multires subdivision algorithm can ruin mesh
Nicholas Bishop [Sun, 10 Jun 2012 16:37:22 +0000 (16:37 +0000)]
Code cleanups for the PBVH, no functional changes.
* Use the PBVHType consistently in pbvh_update_draw_buffers().
* Split the raycast function up, mesh and grid raycast get their own
functions now.
* Replace duplicated code in BLI_pbvh_node_add_proxy() with call to
BLI_pbvh_node_num_verts().
Nicholas Bishop [Sun, 10 Jun 2012 16:22:58 +0000 (16:22 +0000)]
Bugfix for autosmooth in sculpt mode.
This option was broken for non-multires meshes (not sure for how
long), as the pmap was not getting calculated.
Added a more general check for whether the pmap is needed, also added
an assert to warn about this in future.
Sergey Sharybin [Sun, 10 Jun 2012 16:16:02 +0000 (16:16 +0000)]
Fix compilation without libmv
Sergey Sharybin [Sun, 10 Jun 2012 15:28:37 +0000 (15:28 +0000)]
Bump subversion so iteration through all markers would happen
only for old files which actually needs to be ported to 4 corners
representation.
Sergey Sharybin [Sun, 10 Jun 2012 15:28:29 +0000 (15:28 +0000)]
Commit patch from Stephan Kassemeyer sent to ML
This patch aims to solve unaligned operation assert
happens in Eigen library.
This is short-term solution which in fact shall be reverted
as soon as real solution would be added to Ceres. Meanwhile
this should be acceptable to have for a while.
Sergey Sharybin [Sun, 10 Jun 2012 15:28:19 +0000 (15:28 +0000)]
Planar tracking support for motion tracking
===========================================
Major list of changes done in tomato branch:
- Add a planar tracking implementation to libmv
This adds a new planar tracking implementation to libmv. The
tracker is based on Ceres[1], the new nonlinear minimizer that
myself and Sameer released from Google as open source. Since
the motion model is more involved, the interface is
different than the RegionTracker interface used previously
in Blender.
The start of a C API in libmv-capi.{cpp,h} is also included.
- Migrate from pat_{min,max} for markers to 4 corners representation
Convert markers in the movie clip editor / 2D tracker from using
pat_min and pat_max notation to using the a more general, 4-corner
representation.
There is still considerable porting work to do; in particular
sliding from preview widget does not work correct for rotated
markers.
All other areas should be ported to new representation:
* Added support of sliding individual corners. LMB slide + Ctrl
would scale the whole pattern
* S would scale the whole marker, S-S would scale pattern only
* Added support of marker's rotation which is currently rotates
only patterns around their centers or all markers around median,
Rotation or other non-translation/scaling transformation of search
area doesn't make sense.
* Track Preview widget would display transformed pattern which
libmv actually operates with.
- "Efficient Second-order Minimization" for the planar tracker
This implements the "Efficient Second-order Minimization"
scheme, as supported by the existing translation tracker.
This increases the amount of per-iteration work, but
decreases the number of iterations required to converge and
also increases the size of the basin of attraction for the
optimization.
- Remove the use of the legacy RegionTracker API from Blender,
and replaces it with the new TrackRegion API. This also
adds several features to the planar tracker in libmv:
* Do a brute-force initialization of tracking similar to "Hybrid"
mode in the stable release, but using all floats. This is slower
but more accurate. It is still necessary to evaluate if the
performance loss is worth it. In particular, this change is
necessary to support high bit depth imagery.
* Add support for masks over the search window. This is a step
towards supporting user-defined tracker masks. The tracker masks
will make it easy for users to make a mask for e.g. a ball.
Not exposed into interface yet/
* Add Pearson product moment correlation coefficient checking (aka
"Correlation" in the UI. This causes tracking failure if the
tracked patch is not linearly related to the template.
* Add support for warping a few points in addition to the supplied
points. This is useful because the tracking code deliberately
does not expose the underlying warp representation. Instead,
warps are specified in an aparametric way via the correspondences.
- Replace the old style tracker configuration panel with the
new planar tracking panel. From a users perspective, this means:
* The old "tracking algorithm" picker is gone. There is only 1
algorithm now. We may revisit this later, but I would much
prefer to have only 1 algorithm. So far no optimization work
has been done so the speed is not there yet.
* There is now a dropdown to select the motion model. Choices:
* Translation
* Translation, rotation
* Translation, scale
* Translation, rotation, scale
* Affine
* Perspective
* The old "Hybrid" mode is gone; instead there is a toggle to
enable or disable translation-only tracker initialization. This
is the equivalent of the hyrbid mode before, but rewritten to work
with the new planar tracking modes.
* The pyramid levels setting is gone. At a future date, the planar
tracker will decide to use pyramids or not automatically. The
pyramid setting was ultimately a mistake; with the brute force
initialization it is unnecessary.
- Add light-normalized tracking
Added the ability to normalize patterns by their average value while
tracking, to make them invariant to global illumination changes.
Additional details could be found at wiki page [2]
[1] http://code.google.com/p/ceres-solver
[2] http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Motion_Tracker
Sergey Sharybin [Sun, 10 Jun 2012 15:27:41 +0000 (15:27 +0000)]
Initial Ceres integration into Blender
Currently only put sources of Ceres library into extern/libmv/third_party and
setup CMake and SCons building systems.
Integration details:
- Even CMake build files are not re-used from Ceres's trunk: they're using some
automatic stuff detection like glog, pthreads, protobuf and so and it's not
so clear how to re-use that files without modifications.
And IMO it's easier if build files are getting re-generated automatically to
match Blender-specific setup rather than keeping changes made locally in
Blender in sync when re-bundling Ceres library. Especially in case when it's
already needed to support SCons build system.
- Integrated only actual sources, all tests were stripped. Probably it'll be nice
to have them, but they'll need clear integration with current module test stuff
in Blender.
- Suitesparse was disabled. It'll help a lot having it, but there are some difficulties
making cholmod working fine on windows. Would be added in future
- collections_port.cc was also stripped. It's not used by Ceres's upstream and
it gives compilation error (undefined uint32 -- looks like namespace issue).
- Currently all schur eliminators are included. Not sure if it makes sense,
also not sure if it makes sense having them switchable on and off -- IMO better
to have single configuration which works and does not require special tweaks
after everything was set up.
To bundle updated version of Ceres:
- Go to extern/libmv/third_party/ceres folder
- Run ./bundle.sh
This will checkout fresh Ceres snapshot of Windows branch (which is currently
most interesting from integration into Blender POV), apply all patches listed
in patches/series and copy needed files into Blender's working copy. This will
also re-generate CMake/SCons build rules.
If you'll need extra files from Ceres repository which are not present in
Blender, you'll need to copy them manually and then run ./mkfiles.sh from
extern/libmv/third_party/ceres folder which will update list of files used
by Blender.
Thanks to Leir Mierle and Sameer Agarwal (and all others who helped developing
Ceres) this library and thanks to Keir Mierle with help integrating it into Blender!