code cleanup: naming - BKE_mesh_*
[blender.git] / extern / libmv / ChangeLog
1 commit a44312a7beb2963b8e3bf8015c516d2eff40cc3d
2 Author: Sergey Sharybin <sergey.vfx@gmail.com>
3 Date:   Thu Apr 12 13:56:02 2012 +0600
4
5     Added solver for modal camera motion, currently supports only tripod solving
6     
7     This solver is intended to deal with such camera motions as tripod and panning,
8     where it's impossible to reconstruct exact position of markers in 3d view.
9     
10     It projects markers onto sphere and uses rigid registration of rotation to
11     find rotation angles which makes bundles from previous and current frame be
12     as closest as it's possible.
13
14 commit fa3842e472e3b9c789e47bf6d8f592aa40a84f16
15 Author: Sergey Sharybin <sergey.vfx@gmail.com>
16 Date:   Thu Apr 12 12:32:48 2012 +0600
17
18     implementation of some basic algorithms for point cloud orientation:
19     
20     - Implementation of rigid registration algorithm which searches transformation
21       form one point cloud to another assuming that points in this clouds are
22       already paired (points with the same index in different clouds belongs to
23       the same pair) which minimizes average distance between points in pairs.
24     
25       Algorithm uses Levenberg-Marquardt solver to find such transformation.
26     
27       Supports registration of rotation-scale-transform (which is probably most
28       common usage) and rotation only (which might be useful for basic modal
29       tripod solver).
30     
31     - Implementation of Iterative-Point-Clouds algorithm which searches
32       transformation from one arbitrary point cloud to another  making
33       points as closest to each other as possible.
34     
35       This algorithm doesn't require points be initially paired, but for
36       good result clouds should have rough initial orientation. If they're
37       arbitrary oriented from the very beginning, algorithm might fail
38       producing good resold.
39     
40       Iteration is based on building pairs of closest to each other points
41       and registering rigid transformation between them which incrementally
42       constructs final result.
43     
44     TODO: building pairs might be speedup a lot using data structures like
45           AABB trees, K-D trees or so.
46
47 commit 9618d9a1d48bb3c28da605d9027f57a74f462785
48 Author: Sergey Sharybin <sergey.vfx@gmail.com>
49 Date:   Wed Apr 11 14:17:14 2012 +0600
50
51     Added configuration file for glog to compile smooth on Hurd platform.
52     
53     Patch by Pino Toscano <pino@debian.org>, thanks!
54
55 commit 63b2bd20237c8599fa73ce42556e4fb99b9f7cca
56 Author: Sergey Sharybin <sergey.vfx@gmail.com>
57 Date:   Thu Mar 22 17:03:34 2012 +0600
58
59     Trackers refactoring:
60     - Deduplicate pattern sampling used in esm and lmicklt trackers
61       and move SamplePattern to image/sample.h
62     - Move computation of Pearson product-moment correlation into
63       own function in new file image/correlation.h so all trackers
64       can use it to check final correlation.
65     - Remove SAD tracker. It's almost the same as brute tracker,
66       with only two differences:
67       1. It does brute search of affine transformation which in some cases
68          helps to track rotating features
69       2. It didn't use common tracker api which probably gave some speed
70          advantage, but lead to a real headache to use it together with
71          other trackers leading to duplicated code in 3d-party software.
72
73 commit 9fe49c32e990f28c83f2bbb1d18057aed8879af7
74 Author: Sergey Sharybin <sergey.vfx@gmail.com>
75 Date:   Mon Mar 12 09:36:15 2012 +0600
76
77     Code cleanup: convert line endings to Unix style (native on my platform) so it
78     wouldn't confuse other versioning systems used for project where libmv is bundled to,
79     
80     Also change mode to +x for glog's windows-related script.
81
82 commit fe74ae2b53769389b0ed9d7e604c8e60be81077d
83 Author: Sergey I. Sharybin <g.ulairi@gmail.com>
84 Date:   Sun Mar 11 20:34:15 2012 +0600
85
86     Replace "third_party/glog/src/glog/logging.h" with <glog/logging.h>
87     
88     It was needed because of how build systems is setup in Blender but think
89     this will be helpful change for other applications too because it makes
90     it's easier to move libraries around and even use libraries installed
91     on the operation system.
92
93 commit 37fc726701479f2d321d6af878fa93f3176278d5
94 Author: Sergey I. Sharybin <g.ulairi@gmail.com>
95 Date:   Sun Mar 11 19:27:41 2012 +0600
96
97     Upgrade gflags and glog libraries - stage 2 (final)
98     
99     Changes to upstream code which are needed to make libmv compile smooth on all platforms
100     
101     * Replace <gflags/gflags.h> with "third_party/gflags/gflags/gflags.h" which is easier
102       to setup things in libmv and also helps with setting up building libmv into
103       external applications.
104     * Replace "glog/logging.h" and  "glog/logging.h" with <glog/logging.h> and  <glog/logging.h>
105       which is needed on Windows platform because otherwise files like logging.cc will be using
106       relative path which points to headers used by linux instead of headers need to be used
107       on Windows.
108     * Replace _asm int 3 with __debugbreak(). Such assembler code is obsolete and doesn't work
109       with 64bit versions of MSVC compilers.
110     * Do not use stacktrace for MinGW and FreeBSD because it leads into issues accessing
111       some specific data on this platforms.
112     * Define HAVE_LIB_GFLAGS for Windows builds.
113     * Do not define __declspec(dllimport) for MinGW platforms.
114     * Setup proper includes and datatypes for int32, uint32, int64 and uint64 for MinGW
115     * Do not define va_copy for MinGW platforms (it's already defined there).
116     * Patch localtime_r to be working fine with MinGW, disable strerror_r for MinGW because
117       of lack of needed functions.
118
119 commit 8ed07abfa49d1e0511752021c972e0715e5a1383
120 Author: Sergey I. Sharybin <g.ulairi@gmail.com>
121 Date:   Sun Mar 11 19:06:33 2012 +0600
122
123     Upgrade gflags and glog libraries - stage 1
124     
125     This commit copies sources from latest original release of gflags and glog
126     over currently bundled versions of this libraries without any modifications.
127     
128     This revision can't b compiled, all needed changes to make new libraries working
129     fine will be done with next commit to make it clear which changes were necessary
130     for easier bundling further newer version and extract patches and put them to
131     gflags/glog upstream repo.
132     
133     Such upgrade of libraries is needed to make it able to compile libmv
134     with clang compilers. Currently used versions:
135     
136     - gflags is version 2.0
137     - glog is version 0.3.2
138
139 commit 75b9af405964ff2c7d3f0a44500e27e63b37c91b
140 Author: Sergey Sharybin <sergey.vfx@gmail.com>
141 Date:   Fri Feb 17 23:29:11 2012 +0600
142
143     _USE_MATH_DEFINES is needed to define constants like M_E when building with msvc
144     Occasionally was removed, but now added comment about this so hopefully it
145     wouldn't removed again.
146
147 commit f85b1232a9b929f69443b5eed6e7a39908cd6551
148 Author: Sergey Sharybin <sergey.vfx@gmail.com>
149 Date:   Fri Feb 17 21:34:40 2012 +0600
150
151     Picky edit: corrected mode for ssba readme file.
152
153 commit f8c2b223f01551fd81a85f6d5221646165147035
154 Author: Sergey Sharybin <sergey.vfx@gmail.com>
155 Date:   Fri Feb 17 21:32:05 2012 +0600
156
157     Picky edits: corrected EOL
158
159 commit 3f2a4205ec5adadcdfa306b161c705c868a7be93
160 Author: Sergey Sharybin <sergey.vfx@gmail.com>
161 Date:   Fri Feb 17 21:30:07 2012 +0600
162
163     Fixed incorrect access to ucontext on linux. Caused by incorrect merge conflict resolve.
164
165 commit d360a21a5aa125cf9e83dd26b302508688ff7007
166 Author: Sergey Sharybin <sergey.vfx@gmail.com>
167 Date:   Fri Feb 17 20:54:13 2012 +0600
168
169     More Windows -> Unix EOL conversions
170
171 commit 18aeda58bec9556140ba617724e31ada6f5b67c0
172 Author: Sergey Sharybin <sergey.vfx@gmail.com>
173 Date:   Fri Feb 17 20:15:42 2012 +0600
174
175     Looks like this debug output was removed accidentally.
176
177 commit 189dc0cacdee3c1eab68c43263ecb038ed244c09
178 Author: Sergey Sharybin <sergey.vfx@gmail.com>
179 Date:   Fri Feb 17 20:11:56 2012 +0600
180
181     Made V3D verbose again by default
182
183 commit 8b3422d3eec5e450d76243886bf07fb0a3e83a81
184 Author: Sergey Sharybin <sergey.vfx@gmail.com>
185 Date:   Fri Feb 17 20:08:01 2012 +0600
186
187     SAD tracker now can deal with pattern size any size,
188     Very quick implementation came from Blender before Hybrid tracker was added.
189     Better to be replaced with brute tracker.
190
191 commit d547c9cfe37d5d3397d33c8b0e58471e1e1c1634
192 Author: Sergey Sharybin <sergey.vfx@gmail.com>
193 Date:   Fri Feb 17 20:03:52 2012 +0600
194
195     Just convert end of lines to unix style.
196
197 commit eb73ddbaec5b9e1ad30331bbf858a6ebc266c4aa
198 Author: Sergey Sharybin <sergey.vfx@gmail.com>
199 Date:   Fri Feb 17 20:02:20 2012 +0600
200
201     Made some function static. Resolves possible linking issues when building with MinGW.
202
203 commit 2930681fafd86e4f4a958054b1db8bfff29623d1
204 Author: Sergey Sharybin <sergey.vfx@gmail.com>
205 Date:   Fri Feb 17 19:59:45 2012 +0600
206
207     Missed this in commit with improvements in camera intrinsics.
208
209 commit 8d31bc767019b05c5bf8c9f309f9545b3428afa1
210 Author: Sergey Sharybin <sergey.vfx@gmail.com>
211 Date:   Fri Feb 17 19:57:51 2012 +0600
212
213     Another step of syncing codebase with Blender.
214     Mainly fixes for freebsd/osx compilation and aligned memory allocation.
215
216 commit 3214a2df5bfd98021f25d0f1a626a86318bb245f
217 Author: Sergey Sharybin <sergey.vfx@gmail.com>
218 Date:   Fri Feb 17 19:48:02 2012 +0600
219
220     Support compilation on FreeBSD platform
221
222 commit 0e5abe96f543687ccfb3a923ec639cb8f45d54f8
223 Author: Sergey Sharybin <sergey.vfx@gmail.com>
224 Date:   Fri Feb 17 19:44:18 2012 +0600
225
226     Implementation of basic system for progress reporting into callee stuff
227     
228     Implemented by using simple callbacks classes which are getting invoked from
229     places where lots of calculation happens, so applications which are using
230     libmv may display nice progress bar.
231
232 commit c5e18fe35464618055e0e9761be8d22fae56db49
233 Author: Keir Mierle <mierle@gmail.com>
234 Date:   Fri Feb 17 19:25:45 2012 +0600
235
236     Add support for detecting tracking failure in the ESM tracker component of
237     libmv. Since both KLT and Hybrid rely on ESM underneath, KLT and Hybrid now
238     have a minimum correlation setting to match. With this fix, track failures
239     should get detected quicker, with the issue that sometimes the tracker will
240     give up too easily. That is fixable by reducing the required correlation (in
241     the track properties).
242
243 commit ea0fed736ecdcc8c020227aeef8ef4cd3be5e63d
244 Author: Keir Mierle <mierle@gmail.com>
245 Date:   Fri Feb 17 19:23:50 2012 +0600
246
247     Add a new hybrid region tracker for motion tracking to libmv, and
248     add it as an option (under "Hybrid") in the tracking settings. The
249     region tracker is a combination of brute force tracking for coarse
250     alignment, then refinement with the ESM/KLT algorithm already in
251     libmv that gives excellent subpixel precision (typically 1/50'th
252     of a pixel)
253     
254     This also adds a new "brute force" region tracker which does a
255     brute force search through every pixel position in the destination
256     for the pattern in the first frame. It leverages SSE if available,
257     similar to the SAD tracker, to do this quickly. Currently it does
258     some unnecessary conversions to/from floating point that will get
259     fixed later.
260     
261     The hybrid tracker glues the two trackers (brute & ESM) together
262     to get an overall better tracker. The algorithm is simple:
263     
264     1. Track from frame 1 to frame 2 with the brute force tracker.
265         This tries every possible pixel position for the pattern from
266         frame 1 in frame 2. The position with the smallest
267         sum-of-absolute-differences is chosen. By definition, this
268         position is only accurate up to 1 pixel or so.
269     2. Using the result from 1, initialize a track with ESM. This does
270         a least-squares fit with subpixel precision.
271     3. If the ESM shift was more than 2 pixels, report failure.
272     4. If the ESM track shifted less than 2 pixels, then the track is
273         good and we're done. The rationale here is that if the
274         refinement stage shifts more than 1 pixel, then the brute force
275         result likely found some random position that's not a good fit.
276
277 commit a07fff8431621c01d81ae52595d8dd91a295a776
278 Author: Keir Mierle <mierle@gmail.com>
279 Date:   Fri Feb 17 19:19:58 2012 +0600
280
281     Assorted camera tracker improvements
282     
283     - Add support for refining the camera's intrinsic parameters
284       during a solve. Currently, refining supports only the following
285       combinations of intrinsic parameters:
286     
287         f
288         f, cx, cy
289         f, cx, cy, k1, k2
290         f, k1
291         f, k1, k2
292     
293       This is not the same as autocalibration, since the user must
294       still make a reasonable initial guess about the focal length and
295       other parameters, whereas true autocalibration would eliminate
296       the need for the user specify intrinsic parameters at all.
297     
298       However, the solver works well with only rough guesses for the
299       focal length, so perhaps full autocalibation is not that
300       important.
301     
302       Adding support for the last two combinations, (f, k1) and (f,
303       k1, k2) required changes to the library libmv depends on for
304       bundle adjustment, SSBA. These changes should get ported
305       upstream not just to libmv but to SSBA as well.
306     
307     - Improved the region of convergence for bundle adjustment by
308       increasing the number of Levenberg-Marquardt iterations from 50
309       to 500. This way, the solver is able to crawl out of the bad
310       local minima it gets stuck in when changing from, for example,
311       bundling k1 and k2 to just k1 and resetting k2 to 0.
312     
313     - Add several new region tracker implementations. A region tracker
314       is a libmv concept, which refers to tracking a template image
315       pattern through frames. The impact to end users is that tracking
316       should "just work better". I am reserving a more detailed
317       writeup, and maybe a paper, for later.
318     
319     - Other libmv tweaks, such as detecting that a tracker is headed
320       outside of the image bounds.
321     
322     This includes several changes made directly to the libmv extern
323     code rather expecting to get those changes through normal libmv
324     channels, because I, the libmv BDFL, decided it was faster to work
325     on libmv directly in Blender, then later reverse-port the libmv
326     changes from Blender back into libmv trunk. The interesting part
327     is that I added a full Levenberg-Marquardt loop to the region
328     tracking code, which should lead to a more stable solutions. I
329     also added a hacky implementation of "Efficient Second-Order
330     Minimization" for tracking, which works nicely. A more detailed
331     quantitative evaluation will follow.
332
333 commit 0bf66c009d5022eacfc473d247884a73ffeefa8f
334 Author: Sergey Sharybin <sergey.vfx@gmail.com>
335 Date:   Fri Feb 17 19:13:49 2012 +0600
336
337     Rest of compilation fix with FAST library.
338
339 commit 71b578ca2ba34c528363c514cd1fcc85791d01f3
340 Author: Keir Mierle <mierle@gmail.com>
341 Date:   Fri Feb 17 19:00:28 2012 +0600
342
343     Improve the KLT tracking behaviour and UI
344     
345     - Remove the overly-conservative use of libmv's re-track tracker. The re-track
346       tracker would take a normal tracker such as TRKLT or KLT or pyramid KLT, and
347       track from frame 1 to 2, then back from the position found in 2 back to 1.
348       Then, when the reverse-track doesn't match the original track with high
349       precision, the track is considered "failed". This is a good approach for
350       fully automatic reconstruction, but is too conservative for supervised
351       tracking.
352     
353       The retrack-tracker will return when fully automatic tracking is added.
354     
355     - Always solve for (dx, dy) in the TRKLT loop even if the linear system is
356       ill-conditioned. The client (Blender in this case) can still use the solved
357       position, even though it is less reliable.
358
359 commit 7d8a8762f2bc2e36f95b0b6f4fb4ca996f9f0db7
360 Author: Sergey Sharybin <sergey.vfx@gmail.com>
361 Date:   Fri Feb 17 18:46:24 2012 +0600
362
363     Changes in camera intrinsics distortion/undistortion:
364     
365     - Distortion/undistortion of scaled images wasn't happening right,
366       because camera intrinsics are calibrated on an original frame which
367       has got some particular resolution and trying to apply this model on
368       an image with another resolution gives totally wrong result.
369       This is needed to be able to do post-prccessing of render, running
370       distortion on a scene which might be rendered with higher resolution
371       than footage itself and then be scaled down.
372     - Fixed incorrect calculation/applying of precomputed grid when
373       distortion is high high enough and produces pixel offset higher
374       than 127 pixels. This might be still not very distorted image,
375       but if it's a 4K footage "normal" camera will easily give such
376       a distortion.
377     - Added support of overscan distortion/undistortion.
378
379 commit ed080785d63bb8e3a13dde51a2dc94fe59b059bb
380 Author: Sergey Sharybin <sergey.vfx@gmail.com>
381 Date:   Fri Feb 17 18:38:51 2012 +0600
382
383     Fast headers now can be included from C++ sources.
384     Was needed to make it working fine when bundling in Blender but might also
385     be needed to bundle into another applications.
386
387 commit 5f5a7aa46a2d87b96c8098dfc8682f4d01b5cd40
388 Author: Sergey Sharybin <sergey.vfx@gmail.com>
389 Date:   Fri Feb 17 18:36:16 2012 +0600
390
391     Bring back FAST detector which seems to be working much nicer than Morravec.
392     Both of them are available in API.
393
394 commit 2cab13c18216fb684b270cec077f7300262584af
395 Author: Sergey Sharybin <sergey.vfx@gmail.com>
396 Date:   Fri Feb 17 18:27:36 2012 +0600
397
398     Revert "Make CameraIntrinsics (and thus Qt tracker) compilable without linking libmv."
399     
400     This reverts commit 81613ee0cc94b315f333c9632b18b95d426aad05.
401     
402     That commit made inverting intrinsics totally unworkable, so reverted this and
403     made needed tweaks to qt-tracker project file to make it compilable (was needed
404     to make it linking together with glog).
405     
406     Conflicts:
407     
408         src/ui/tracker/tracker.cc
409         src/ui/tracker/tracker.pro
410
411 commit ec46cae041401b17afb4fe4d9c9343d10797090f
412 Author: Sergey Sharybin <sergey.vfx@gmail.com>
413 Date:   Fri Feb 17 17:59:55 2012 +0600
414
415     Fix compilation error using official MinGW
416
417 commit 6fbc370e922c47cfa35381662b6c439f4891ed74
418 Author: Sergey Sharybin <sergey.vfx@gmail.com>
419 Date:   Fri Feb 17 17:38:20 2012 +0600
420
421     Fix compilation error with MSVC 2010 which is more picky for "missed" STL headers
422
423 commit be9e6b63691d83b551a085f0766878bd84220767
424 Author: Sergey Sharybin <sergey.vfx@gmail.com>
425 Date:   Fri Feb 17 17:36:18 2012 +0600
426
427     Fix compilation with MSVC where snprintf function is declared as unsafe and _snprintf should be used instead.
428     
429     Better to switch to own implementation will ensure string is correctly NULL-terminated.
430
431 commit 1847d9e414ed763cd80668775d7d9f79575fc8ca
432 Author: Sergey Sharybin <sergey.vfx@gmail.com>
433 Date:   Fri Feb 17 17:34:45 2012 +0600
434
435     Fix compilation error on OSX caused by incorrect access to ucontext
436
437 commit 90579b6ffad07672172a1c240499615b30b25549
438 Merge: b9aac30 531c79b
439 Author: Sergey Sharybin <sergey.vfx@gmail.com>
440 Date:   Fri Feb 17 18:32:52 2012 +0600
441
442     Merge remote-tracking branch 'Matthias-Fauconneau/master' into devel
443     
444     Conflicts:
445         src/libmv/tracking/CMakeLists.txt
446
447 commit b9aac30a9ca6bc8362c09a0e191040964f7c6de2
448 Merge: 198894e 6969e1a
449 Author: Keir Mierle <mierle@gmail.com>
450 Date:   Sat Nov 5 17:38:30 2011 -0700
451
452     Merge pull request #3 from nathanwiegand/master
453     
454     Just a few tiny cleanups
455
456 commit 6969e1a9534291a982749baa5a3672c97bfa506d
457 Author: Nathan Wiegand <nathanwiegand@gmail.com>
458 Date:   Sat Nov 5 14:26:54 2011 -0700
459
460     I've added cleaned up a few style issues here an there. Also, I've updated the CMakeLists.txt file so that it can build the image_io library. Note, it's only been tested on OSX 10.6
461
462 commit 4763f851299050140757bfaa069107a0cf639e56
463 Author: Nathan Wiegand <nathanwiegand@gmail.com>
464 Date:   Fri Nov 4 23:59:08 2011 -0700
465
466     Removed a superfulous comment
467
468 commit a44577c0162e273681e4a9a3cc5f5b37d4315b67
469 Author: Nathan Wiegand <nathanwiegand@gmail.com>
470 Date:   Fri Nov 4 23:55:52 2011 -0700
471
472     Removed a duplicate entry for an author.
473
474 commit 198894e4c4f51c2c1784ad7c02eb45d2d1ada9bc
475 Merge: c4c67db 6e797d6
476 Author: Keir Mierle <mierle@gmail.com>
477 Date:   Fri Nov 4 21:47:05 2011 -0700
478
479     Merge pull request #2 from nathanwiegand/master
480     
481     CMake changes for OSX
482
483 commit 6e797d678c4c19f6a9e21657d66183f412cc995b
484 Author: Nathan Wiegand <nathanwiegand@gmail.com>
485 Date:   Fri Nov 4 21:43:28 2011 -0700
486
487     Uncomment the GUI part of the CMake file
488
489 commit 33ef88a33860345d8906f3c9dd22d8dbce3df53e
490 Author: Nathan Wiegand <nathanwiegand@gmail.com>
491 Date:   Fri Nov 4 21:31:22 2011 -0700
492
493     Fixed build error on OSX by adding 'glog' to the dependencies in the tracker CMake
494
495 commit 531c79bf95fddaaa70707d1abcd4fdafda16bbf0
496 Author: Matthias Fauconneau <matthias.fauconneau@gmail.com>
497 Date:   Sat Aug 20 00:00:42 2011 +0200
498
499     Display warped pattern in marker preview.
500
501 commit bb5c27e671b6f8eb56ddf490f0795d59bede591b
502 Author: Matthias Fauconneau <matthias.fauconneau@gmail.com>
503 Date:   Fri Aug 19 18:37:48 2011 +0200
504
505     Fix CMake build.
506
507 commit 2ac7281ff6b9545b425dd84fb03bf9c5c98b4de2
508 Author: Matthias Fauconneau <matthias.fauconneau@gmail.com>
509 Date:   Fri Aug 19 17:34:45 2011 +0200
510
511     Avoid symbol shadowing.
512
513 commit 2a7c3de4acc60e0433b4952f69e30528dbafe0d2
514 Author: Matthias Fauconneau <matthias.fauconneau@gmail.com>
515 Date:   Fri Aug 19 17:22:47 2011 +0200
516
517     Better dragging behavior when hitting borders.
518
519 commit a14eb3953c9521b2e08ff9ddd45b33ff1f8aeafb
520 Author: Matthias Fauconneau <matthias.fauconneau@gmail.com>
521 Date:   Fri Aug 19 17:12:12 2011 +0200
522
523     Update marker preview to new affine tracking.
524
525 commit 5299ea67043459eda147950e589c2d327a8fbced
526 Author: Matthias Fauconneau <matthias.fauconneau@gmail.com>
527 Date:   Fri Aug 19 16:05:54 2011 +0200
528
529     sqrt takes double precision.
530
531 commit 9f9221ce151d788c49b48f6f293ab2e2f8813978
532 Author: Matthias Fauconneau <matthias.fauconneau@gmail.com>
533 Date:   Fri Aug 19 16:04:37 2011 +0200
534
535     MSVC compatibility: heap allocate pattern, explicit float cast.