Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2012-07-27Added utility function to return marker's subframe positionSergey Sharybin
Used in mask parenting stuff.
2012-06-15Internal refactoring of tracking module, should be no functional changesSergey Sharybin
- Re-arrange functions in headers and implementation file to make them more grouped by entity they're operating with. Also order of functions in implementation file should match order of functions in header for easier navigation. - Rename some functions to match conventions of naming public functions. - Some code de-duplication, still some room for improvements tho. - Split main 2D tracking functions into smaller steps to make it more clear. Accidentally OpenMP was disabled in some of previous commits, re-enable it.
2012-06-12Make dopesheet settings per-tracking dataSergey Sharybin
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.
2012-06-12Masking support for motion tracksSergey Sharybin
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.
2012-06-11Scale search area when doing planar trackingSergey Sharybin
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?
2012-06-10style cleanupCampbell Barton
2012-06-10Planar tracking support for motion trackingSergey Sharybin
=========================================== 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
2012-06-08Added sorting by average reprojection error to motion tracking dopesheet.Sergey Sharybin
2012-05-04Camera tracking: show disabled active track even if Show Disabled is ↵Sergey Sharybin
switched off
2012-05-04Camera tracking: switch dopesheet information to lazy calculationSergey Sharybin
All operators which changes tracking data now just tags dopsheet as outdated, actual re-calculaiton of happens only when this information is actually needed (like on dopesheet draw). This makes things a bit faster when there's no dopesheet visible in current screen and also makes it much easier to update dopesheet using dependency graph. Also renamed dopesheet_sort_order to dopesheet_sort_method in rna and internal stuff which makes much more sense and also correlated with naming in file browser.
2012-05-03Clip editor: sort order for dopesheet channelsSergey Sharybin
Supported sorting by name, longest tracked segment and total tracked frames. Internally tracks are stored in Tracking datablock, but sort order is a clip editor space property and sorting happens on clip editor draw. If there's no dopesheet opened with different sort orders it's not a problem due to re-sorting wouldn't happen. Also fixed draw issue of tracked segments introduced in previous commit.
2012-04-30Camera tracking: initial commit of dopesheet view for clip editorSergey Sharybin
- Displays dopesheet information for selected tracks, and currently does not support any kind of editing. - Changed regions to use the whole main region for such views as curves and dopesheet. This allows to have own panels with tools/properties in this area. - Active clip is getting synchronized between different clip editor editors in the same screen, so updating of curve/dopesheet views happens automatically when one changes current clip in one of this editors. - Panels in toolbox and properties panels are now separated to rely on current view mode, but some operators and poll functions still need to be updated. - Added new screen called "Movie Tracking" where layout is configured to display timeline, main clip window, curves and dopesheet.
2012-03-26Code style cleaup for motion-tracking modules.Sergey Sharybin
Should be no functional changes.
2012-03-16Allow merging two tracks in cases when they've got overlapping tracked/keyframedSergey Sharybin
frame ranges using average position of both tracks as position/
2012-02-28move bmesh wiki docs into bmesh header and update doxygen.Campbell Barton
also have doxygen ignore *.py files and fix some warnings.
2012-02-26Fixed for selected bundles drawing in 3D viewport:Sergey Sharybin
- If track was hidded in clip editor it wasn't highlighted in 3d viewport even if it's selected. - If two tracks has got the same bundle coordinate and one of them is selected it might not be highlighted in 3d viewport because of draw order.
2012-02-17unify include guard defines, __$FILENAME__Campbell Barton
without the underscores these clogged up the namespace for autocompleation which was annoying.
2012-02-17Camera tracking: run aspect correction before stabilizing shotSergey Sharybin
This commit fixes image stopped being an orthogonal rectangle because of horizontal scaling caused by pixel aspect ratio happening after rotating image which used to make orthogonal angles from footage not actually orthogonal. -- svn merge -r44150:44151 ^/branches/soc-2011-tomato
2012-01-25Various fixes for camera tracking stuffSergey Sharybin
- Fixed tooltip displaying for track sequence forwards in clip editor - Corrected detection of 8 tracks so it wouldn't count tracks disabled on keyframes. - Scale track preview to actual track widget size instead of scaling the whole preview image with given zoom ratio, so no extra memory needed to store zoomed margin would be used. - Track's statistics text will fit pattern position instead of search if marker is disabled on current frame. - Fixed toggle selection operator if selected track is hidden due to "Hide Disabled" policy.
2012-01-15Color channels now can be disabled for the whole frame in clip editorSergey Sharybin
2012-01-10Camera tracking: tracks copy/paste operatorSergey Sharybin
This commit implements basic clipboard support for movie tracking data int clip editor. Used own implementation of clipboard like it's done for sequencer. Ideally it needed to be switched to more general clipboard system, but currently this system is designed for text data only and it need to be re-designed itself. But this feature is quite useful since object tracking is implemented, so it should be OK to live with such own implementation for a while.
2012-01-10Camera tracking: improvements of python apiSergey Sharybin
- marker_find_frame moved to MovieTrack.markers and called find_frame - Added MovieTrack.markers.insert_frame to insert marker at specified frame - Added MovieTrack.markers.delete_frame to delete marker from specified frame
2011-12-30Disable markers when doing frame-by-frame tracking and tracker library ↵Sergey Sharybin
returns failure
2011-12-30Object tracking integrationSergey Sharybin
This commits merges object tracking implementation from tomato branch. Summarized changes from branch: - Added list of objects to be tracked. Default there's only one object called "Camera" which is used for solving camera motion. Other objects can be added and each of them will have it;s own list of tracks. Only one object can be used for camera solving at this moment. - Added new constraint called "Object Tracking" which makes oriented object be moving in the save way as solved object motion. - Scene orientation tools can be used for orienting object to bundles. - Object has got scale to define "depth" in camera space. - All tools which works with list of tracks or reconstruction data now gets that lists from active editing object. - All objects and their tracking data are available via python api. - Improvements in witness cameras workflow,
2011-12-15Object tracking: various fixes and improvementsSergey Sharybin
- Bundles selection is now available for object's bundles - If bundles selection wasn't changed in 3D viewport, fallback to regular object selection, so objects behind bundles can be selected - Snap cursor to selection now respects object's bundle selection - Object and rack name now can be selected from list in constraint settings - Added preset for tracks used for object tracking
2011-12-14Merging r42602 through r42620 from trunk into soc-2011-tomatoSergey Sharybin
2011-12-13Do not switch to safe malloc if tracking sequenceSergey Sharybin
Malloc is getting to be safe on sequence tracking by the jobs system, so no additional set up are necessary. This hopefully fixes crash on OSX with OpenMP enabled when compiling by older gcc
2011-12-07Disable markers when doing frame-by-frame tracking and tracker library ↵Sergey Sharybin
returns failure
2011-12-05Object tracking; initial commitSergey Sharybin
This commit implements basis stuff needed for object tracking, use case isn't perfect now, interface also should be cleaned a bit. - Added list of objects to be tracked. Default there's only one object called "Camera" which is used for solving camera motion. Other objects can be added and each of them will have it;s own list of tracks. Only one object can be used for camera solving at this moment. - Added new constraint called "Object Tracking" which makes oriented object be moving in the save way as solved object motion. - Scene orientation tools can be used for orienting object to bundles. - All tools which works with list of tracks or reconstruction data now gets that lists from active editing object. - All objects and their tracking data are available via python api.
2011-11-28Camera tracking: moved camera solver into it's own jobSergey Sharybin
In some cases solving can take a while (especially when refining is used) and keeping interface locked is a bit annoying. Now camera solver is moved to job system and interface isn't locking. Reporting progress isn't really accurate, but trying to make it more linear can lead to spending more effort on it than having benefit. Also, changing status in the information line helps to understand that blender isn't hang up and solving is till working nicely. Main changes in code: - libmv_solveReconstruction now accepts additional parameters: * progress_update_callback - a function which is getting called from solver algorithm to report progress back to Blender. * callback_customdata - a user-defined context which is passing to progress_update_callback so progress can be updated in needed blender-side data structures. This parameters are optional. - Added structure MovieTrackingStats which is placed in MovieTracking structure. It's supposed to be used for displaying information about different operations (currently it's only camera solver, but can be easily used for something else in the future) in clip editor. This statistics structure is getting allocated for time operator is working and not saving into .blend file. - Clip Editor now displays statistics stored in MovieTrackingStats structure like it's done for rendering.
2011-11-28Camera tracking: merging tracking presets stuff from tomato branchSergey Sharybin
This commit implements: - Configurable settings for newly creating tracks Now it's possible to set tracking algorithm and it's settings for all newly creating tracks including manual tracks creation and tracks creation by "Detect Features" operator. - Moves margin, frames limit and adjust frame inside per-track settings. Was request from Francois for this. - Adjust Frames replaced with menu called Pattern Match where it's possible to choose between matching pattern from keyframe frame or from previously tracked frame. Didn't see somebody used adjust frames values differ from 0 and 1, and this menu should make things more clear here/
2011-11-27Camera tracking: refactor of tracks synchronization stuffSergey Sharybin
Currently this stuff is used for 2d tracking job only, but the same thing would necessary for camera solver job, so moved it into more general utility stuff.
2011-11-27Camera tracking: presets for default tracking settingsSergey Sharybin
Internal changes are almost finished, changes in the interface need to be discussed.
2011-11-22Camera tracking: expose progress and status from camera solver into interfaceSergey Sharybin
Reporting progress isn't really accurate, but trying to make it more linear can lead to spending more effort on it than having benefit. Also, changing status in the information line helps to understand that blender isn't hang up and solving is till working nicely. Main changes in code: - libmv_solveReconstruction now accepts additional parameters: * progress_update_callback - a function which is getting called from solver algorithm to report progress back to Blender. * callback_customdata - a user-defined context which is passing to progress_update_callback so progress can be updated in needed blender-side data structures. This parameters are optional. - Added structure MovieTrackingStats which is placed in MovieTracking structure. It's supposed to be used for displaying information about different operations (currently it's only camera solver, but can be easily used for something else in the future) in clip editor. This statistics structure is getting allocated for time operator is working and not saving into .blend file. - Clip Editor now displays statistics stored in MovieTrackingStats structure like it's done for rendering.
2011-11-22Camera tracking: moved camera solver into it's own jobSergey Sharybin
In some cases solving can take a while (especially when refining is used) and keeping interface locked is a bit annoying. Now camera solver is moved to job system and interface isn't locking. Currently, no progress is displaying in the interface and solving can't be canceled. It'll be implemented separately (need some changes in libmv).
2011-11-22Camera tracking: refactor of tracks synchronization stuffSergey Sharybin
Currently this stuff is used for 2d tracking job only, but the same thing would necessary for camera solver job, so moved it into more general utility stuff.
2011-11-14Assorted camera tracker improvementsSergey Sharybin
- Add support for refining the camera's intrinsic parameters during a solve. Currently, refining supports only the following combinations of intrinsic parameters: f f, cx, cy f, cx, cy, k1, k2 f, k1 f, k1, k2 This is not the same as autocalibration, since the user must still make a reasonable initial guess about the focal length and other parameters, whereas true autocalibration would eliminate the need for the user specify intrinsic parameters at all. However, the solver works well with only rough guesses for the focal length, so perhaps full autocalibation is not that important. Adding support for the last two combinations, (f, k1) and (f, k1, k2) required changes to the library libmv depends on for bundle adjustment, SSBA. These changes should get ported upstream not just to libmv but to SSBA as well. - Improved the region of convergence for bundle adjustment by increasing the number of Levenberg-Marquardt iterations from 50 to 500. This way, the solver is able to crawl out of the bad local minima it gets stuck in when changing from, for example, bundling k1 and k2 to just k1 and resetting k2 to 0. - Add several new region tracker implementations. A region tracker is a libmv concept, which refers to tracking a template image pattern through frames. The impact to end users is that tracking should "just work better". I am reserving a more detailed writeup, and maybe a paper, for later. - Other libmv tweaks, such as detecting that a tracker is headed outside of the image bounds. This includes several changes made directly to the libmv extern code rather expecting to get those changes through normal libmv channels, because I, the libmv BDFL, decided it was faster to work on libmv directly in Blender, then later reverse-port the libmv changes from Blender back into libmv trunk. The interesting part is that I added a full Levenberg-Marquardt loop to the region tracking code, which should lead to a more stable solutions. I also added a hacky implementation of "Efficient Second-Order Minimization" for tracking, which works nicely. A more detailed quantitative evaluation will follow. Original patch by Keir, cleaned a bit by myself.
2011-11-10Camera tracking integration: cleanup and finish some parts of recent commitSergey Sharybin
- Replace set of booleans with menu, so now you'll simply be unable to choose unsupported refine combination - Some internal code cleanup and minor refactor
2011-11-07Camera tracking integrationSergey Sharybin
=========================== Commiting camera tracking integration gsoc project into trunk. This commit includes: - Bundled version of libmv library (with some changes against official repo, re-sync with libmv repo a bit later) - New datatype ID called MovieClip which is optimized to work with movie clips (both of movie files and image sequences) and doing camera/motion tracking operations. - New editor called Clip Editor which is currently used for motion/tracking stuff only, but which can be easily extended to work with masks too. This editor supports: * Loading movie files/image sequences * Build proxies with different size for loaded movie clip, also supports building undistorted proxies to increase speed of playback in undistorted mode. * Manual lens distortion mode calibration using grid and grease pencil * Supervised 2D tracking using two different algorithms KLT and SAD. * Basic algorithm for feature detection * Camera motion solving. scene orientation - New constraints to "link" scene objects with solved motions from clip: * Follow Track (make object follow 2D motion of track with given name or parent object to reconstructed 3D position of track) * Camera Solver to make camera moving in the same way as reconstructed camera This commit NOT includes changes from tomato branch: - New nodes (they'll be commited as separated patch) - Automatic image offset guessing for image input node and image editor (need to do more tests and gather more feedback) - Code cleanup in libmv-capi. It's not so critical cleanup, just increasing readability and understanadability of code. Better to make this chaneg when Keir will finish his current patch. More details about this project can be found on this page: http://wiki.blender.org/index.php/User:Nazg-gul/GSoC-2011 Further development of small features would be done in trunk, bigger/experimental features would first be implemented in tomato branch.
2011-11-05Camera tracking integrationSergey Sharybin
=========================== Code cleanup and minor refactor. Moved some functions from movieclip.c to tracking.c due to they're operating on tracking data only.
2011-11-05Camera tracking integrationSergey Sharybin
=========================== - Set as Background button will enable displaying background images in 3d space. - Move options in Display panel to column. Saves some space. - Camera solving now should deal fine with non-centered principal.
2011-10-31Camera tracking integrationSergey Sharybin
=========================== Remove moravec detector. It doesn't work really fine and it's times slower than fast detector.
2011-10-31Camera tracking integrationSergey Sharybin
=========================== - Changed 3D viewport reconstruction settings to more usable defaults - Some code clean-up - Option to place markers for detected features across the whole frame, inside grease pencil areas or outside of grease pencil areas.
2011-10-30Improve the KLT tracking behaviour and UIKeir Mierle
- Remove the overly-conservative use of libmv's re-track tracker. The re-track tracker would take a normal tracker such as TRKLT or KLT or pyramid KLT, and track from frame 1 to 2, then back from the position found in 2 back to 1. Then, when the reverse-track doesn't match the original track with high precision, the track is considered "failed". This is a good approach for fully automatic reconstruction, but is too conservative for supervised tracking. The retrack-tracker will return when fully automatic tracking is added. - Always solve for (dx, dy) in the TRKLT loop even if the linear system is ill-conditioned. The client (Blender in this case) can still use the solved position, even though it is less reliable. - Expose the pyramid level setting to the tracking UI when in KLT tracking mode. While it was tempting to hide this detail from the user, in reality it does more harm than good, since the way tracking fails depends on the pyramid level. For now, exposing the pyramid details is a good compromise. - Move the settings for the tracking algorithm, including search window, tracking algorithm, pyramid levels, etc, into the track object instead of a global movie clip object.
2011-10-25Camera tracking integrationSergey Sharybin
=========================== More fixes for reports from codereview.
2011-10-24Camera tracking integrationSergey Sharybin
=========================== Remove $Id$
2011-10-20Camera tracking integrationSergey Sharybin
=========================== 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.
2011-10-15Camera tracking integrationSergey Sharybin
=========================== Some improvements for feature detectors: - Sort features by score when filtering features by distance using FAST library. - Added option to place markers only in areas outlined by grease pencil.
2011-10-13Camera tracking integrationSergey Sharybin
=========================== Added option to choose which method to use for feature detector: FAST or Moravec Moravec was supposed to be more "stable", but it collected worse feedback. before returning back to FAST detector added option to easier toggle between different detector to compare it's result and find out if we can leave only FAST.
2011-10-10Camera tracking integrationSergey Sharybin
=========================== 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.