Commit Graph

574 Commits

Author SHA1 Message Date
Sergey Sharybin
d30987fd59 Camera tracking integration: more code cleanup 2011-11-10 11:16:40 +00:00
Sergey Sharybin
55d0cb04aa Camera tracking integration: cleanup and finish some parts of recent commit
- 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-10 11:16:33 +00:00
Keir Mierle
d4fec9f19f Assorted camera tracker improvements
- 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.
2011-11-09 10:07:43 +00:00
Sergey Sharybin
af5526e58c Camera tracking integration: Final pre-merge code clean-up 2011-11-07 12:50:26 +00:00
Keir Mierle
db86c6bcf8 Improve the KLT tracking behaviour and UI
- 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-30 12:42:56 +00:00
Sergey Sharybin
a19b0d358a Camera tracing integration
==========================

Fix for SAD tracking sliding marker.
2011-10-29 09:46:53 +00:00
Sergey Sharybin
9d2caba92e Camera tracking integration
===========================

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
2011-10-29 07:14:31 +00:00
Sergey Sharybin
d4be67f501 Camera tracking integration
===========================

Remove $Id$
2011-10-24 15:24:53 +00:00
Sergey Sharybin
7320f6a90a Merging trunk up to revision 41245. 2011-10-24 14:52:04 +00:00
Campbell Barton
4a04f72069 remove $Id: tags after discussion on the mailign list: http://markmail.org/message/fp7ozcywxum3ar7n 2011-10-23 17:52:20 +00:00
Sergey Sharybin
3d3a449d95 Camera tracking integration
===========================

Initial implementation of graph view for movie tracking data.
Used the same UI-side approach as preview region for sequencer:
create region for graph-related information inside clip editor.

It's easier and nicer than trying to hack graph editor which is
currently designed to work with AnimData only. Trying to make it
more abstract to deal with any kind of data doesn't seem be real
benefit for now.

Currently supported displaying per-frame average error and
selected tracks' movement speed (pixels per frame).

Additional changes:
- Collect per-frame average error after solving.
- Split space clip drawing code into different files.
- Added per-frame average solving error.
2011-10-19 12:46:30 +00:00
Sergey Sharybin
8fb37629cd Camera tracking integration
===========================

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-15 19:30:51 +00:00
Sergey Sharybin
594e9e0689 Camera tracking integration
===========================

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-13 17:54:05 +00:00
Sergey Sharybin
6f42be1e70 Camera tracking integration
===========================

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.
2011-10-09 20:28:29 +00:00
Sergey Sharybin
92ddc03126 Camera tracking integration
===========================

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.
2011-10-07 19:21:29 +00:00
Sergey Sharybin
f8b081153b Merging r40653 through r40847 from trunk into soc-2011-tomato 2011-10-07 18:57:26 +00:00
Sergey Sharybin
8182a017d9 Whitespace clean-up 2011-09-30 12:24:17 +00:00
Benoit Bolsee
e6a9b68c79 Recast: upgrade library.
- Upgrade Recast library to latest portable version
- Implement recast_qsort based on FreeBSD qsort.c to have 
  portable thread safe quick sort for use in conversion routine.
- Better default value for the Build Navigation Mesh operator
2011-09-29 21:38:57 +00:00
Sergey Sharybin
424f6463c1 Camera tracking integration
===========================

MSVC should work fine now.
2011-09-28 16:46:16 +00:00
Sergey Sharybin
a36dd050ed Camera tracking integration
===========================

- 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/
2011-09-28 13:31:32 +00:00
Sergey Sharybin
03f3e7b3fc Merging r40572 through r40597 from trunk into soc-2011-tomato 2011-09-27 09:26:46 +00:00
Sergey Sharybin
a25c7f647e navmesh: convert object_navmesh.cpp to plain c. 2011-09-27 09:09:43 +00:00
Sergey Sharybin
13e63a82d2 Camera tracking integration
===========================

Fix for msvc2010 compilaiton. Patch by Nico Blends, thanks!
2011-09-26 20:16:43 +00:00
Sergey Sharybin
7505de5c59 Camera tracking integration
===========================

Attempt to fix MinGW compilaiton.
2011-09-26 20:03:07 +00:00
Sergey Sharybin
4bd96adbcf Camera tracking integration
===========================

Lookup grids used for image distortion/undistortion are now
caching and re-building if distortion settings are changing.

This speedups compositor node for cases distortion model isn't
changing, but first run and runs after changing distortion
coefficients is still slow.
2011-09-26 19:00:12 +00:00
Sergey Sharybin
8615218d57 Camera tracking integration
===========================

- If render size is set to "Full Render" and undistorted render
  is enabled, do on-fly undistortion so distortion coefficients
  can be visually verifed before baking.
- Made slight change in libmv-side to survive with large distortion
  coefficients. Hope this change is fine.
2011-09-26 15:07:06 +00:00
Sergey Sharybin
07e57233e2 Merging r40265 through r40492 from trunk into soc-2011-tomato 2011-09-23 13:20:21 +00:00
Sergey Sharybin
9d1b4b63b3 Fix for recent commit:
- Some declarations after statement left.
- Do not use static inline functions in MOD_navmesh. It produces errors
  with msvc and not sure it's actually helps -- optimizer should
  make it inlined itself.
2011-09-20 17:06:17 +00:00
Sergey Sharybin
0169079bd1 Get rid of c++ in blenkernel and modifiers
Also use guarded allocations for navmesh stuff.
2011-09-20 16:24:50 +00:00
Campbell Barton
425a81a29b remove WITH_* defines from image formats, instead just dont build the files at all. 2011-09-19 06:32:19 +00:00
Campbell Barton
049838fe0c update glew from 1.6 to 1.7:
from their site:
  adds support for OpenGL 4.2, new extensions, fixes bugs

remove ChangeLog, its missing from the 1.7 bundle, also remove html doc dir.
2011-09-18 15:37:36 +00:00
Sergey Sharybin
5a1665d64e Camera tracking integration
===========================

- Do not disable track when tracking frame-by-frame and tracking
  threshold became bad.
- Show anchored image in track preview widget.
- Do not show search area for non-selected and disabled markers.
- Keep anchor constant position when sliding offset parameters in panel.
- Re-enabled occasionally disabled openmp for tracking.
- Renamed clearing operator so now buttons are more clear.
- Updated eigen to the very recent version.

NOTE: I had to enable static aligning again due to it gave crashes
      when tracking on my new laptop. I'm not sure it'll work fine
      on another systems.
2011-09-15 19:01:32 +00:00
Sergey Sharybin
bd05d5565a Merging trunk into soc-2011-tomato up to revision 40241 2011-09-15 18:59:30 +00:00
Sergey Sharybin
41e5040e2f Use static context trick for all platforms.
Should be safe until modifier stack is not threaded.
Solves issues with mingw and older glibc version (like used in release environment).
2011-09-15 15:29:40 +00:00
Antony Riakiotakis
8a977cbcc9 fix compilation for MinGW by substituting qsort_r with qsort. What aversion do MinGW guys have for including '_r' variants of functions anyway?
Warning: a clean build will be needed probably to account for recent merge changes, or link errors will occur.
2011-09-13 19:51:58 +00:00
Sergey Sharybin
7548333b55 Fix typo in own commit for raycast library 2011-09-13 16:54:01 +00:00
Sergey Sharybin
0e3856d506 Fixes for Win+SCons and disable recastnavigationif game engine is disabled in SCons 2011-09-11 15:17:54 +00:00
Sergey Sharybin
4e9381bc35 Fixed for navmesh on FreeBSD. Oatch by sambler, thanks! 2011-09-10 14:55:14 +00:00
Sergey Sharybin
bdd4aa27b0 Another set of fixes for recats: osx uses different order of arguments for sort_r
and it's callback.

Also do not use char constants like 'NAVM' which is casting to int.
And added defautl section to switch in KX_NavMeshObject::DrawNavMesh.
2011-09-10 14:12:15 +00:00
Campbell Barton
01dca44a84 disable navmesh feature when building without the game engine. 2011-09-10 04:21:58 +00:00
Campbell Barton
fb4abf2e41 fixed linking with CMake 2011-09-10 03:42:45 +00:00
Campbell Barton
0128218254 recast and detour patch now builds again with GCC
- rearrange structs to work for 64bit
- define all vars before goto's
- ifdefs for qsort_r/qsort_s
- dont cast pointers to int only for NULL checks
- dont printf STR_String directly, get the char pointer from it

also minor change to gpu py module, no need to pass empty tuple to PyObject_CallObject, can just be NULL
2011-09-10 03:07:26 +00:00
Benoit Bolsee
dbd6658d73 svn merge -r 37306:39975 https://svn.blender.org/svnroot/bf-blender/trunk/blender 2011-09-07 15:34:04 +00:00
Sergey Sharybin
c37a32593b Camera tracking integration
===========================

Fix compilation for 32bit OSX.
2011-09-04 12:56:16 +00:00
Sergey Sharybin
ffaa5d0210 Merging trunk into soc-2011-tomato.
Pardon, lost message about which revisions are going to be merged..
2011-08-22 19:30:05 +00:00
Sergey Sharybin
62f553cc56 Camera tracking integration
===========================

Reverting commit 81613ee0cc94b315f333c9632b18b95d426aad05 from Matthias branch.
It destroyed lens distortion code.
2011-08-21 17:08:05 +00:00
Sergey Sharybin
36f20f162c Fix #28154: linux3-config.py doesn't exist
Change OURPLATFORM from "linux<major_version>" to simple "linux".
Since new policy for linux kernel versions that major version in
platform doesn't make much sense for building rules so the same
rules could be used for both of linux2 and linux3 now/

Tested on both of linux2 and linux3 systems.
2011-08-21 13:31:46 +00:00
Sergey Sharybin
3c9c5b3359 Camera tracking integration
===========================

Another fix for MSVC.
2011-08-19 15:38:11 +00:00
Sergey Sharybin
78a2086415 Camera tracking integration
===========================

Previous fix wasn't checked and it was typo there.
2011-08-19 15:17:26 +00:00
Sergey Sharybin
c15012e568 Camera tracking integration
===========================

Fixes for MSVC.
2011-08-19 14:23:09 +00:00