Commit Graph

69 Commits

Author SHA1 Message Date
Sergey Sharybin
cf148edb26 Followup to Ceres changes -- need to update bundling script 2014-03-25 15:08:22 +06:00
Lukas Tönne
ddc959691a Fix for own commit: mixed up ceres build defines when replacing cmake
check with a generalized macro.

rBbbfcb0b1e44636b73b8c46f1cb800fa53dda5277
2014-03-25 09:49:39 +01:00
Lukas Tönne
bbfcb0b1e4 Build file macro for testing unordered_map C++ container support.
Using unordered_map and unordered_set C++ container types currently
requires careful testing or usage of boost, due to the various confusing
C++ version differences in include paths and namespaces.

Libmv defines tests for these cases in cmake and scons, such that ceres
can use any available implementation, or fall back too std::map/std::set
if none can be found.

This patch generalizes this buildfile code by providing a Blender macro.
* cmake: defines both the variables used by libmv at them moment as well
as 2 variables UNORDERED_MAP_INCLUDE_PREFIX and UNORDERED_MAP_NAMESPACE,
which can later be used in other C++ parts for convenience.
* scons: adds a tool script returning the include prefix and namespace.
Libmv checks these to define the appropriate definitions for ceres.

Differential Revision: https://developer.blender.org/D425
2014-03-25 09:25:00 +01:00
Sergey Sharybin
356ec42bda Attempt to fix compilation error with msvc2013 2014-03-21 16:06:30 +06:00
Sergey Sharybin
6ba5c0c268 Update Libmv to latest upstream
This is mainly a maintaince commit which syncs changes
between Blender and Libmv upstream also bringing new
GLog version.

This GLog version is presumably have better support of
MinGW from "the box".

This commit is also aimed to make further 3d part libs
update easier.
2014-03-20 23:26:25 +06:00
Sergey Sharybin
cefa733803 Followup for 90a86fe: libmv/ceres cmake/scons files are automatically generated
So don't forget to update generator scripts as well.
2014-02-24 20:13:33 +06:00
90a86fecee Fix T38684: cmake OS X build problem when changing deployment target.
Don't cache these variables as they are not cleared on such changes.
2014-02-18 19:38:43 +01:00
Sergey Sharybin
5cbddd4ca4 Bye-bye FAST!
FAST detector has been replaced with fancier Harris,
so no need to keep FAST library in the sources now.
2014-02-06 18:13:12 +06:00
Sergey Sharybin
ef67b9eec4 Ceres: more warnings cleanup 2014-01-14 01:18:09 +06:00
Sergey Sharybin
a6ceb4a498 Re-bundle new Ceres library
- Fixes some harmless issues (in cases blender doesn't use Ceres yet)
- Fixes some compilation warnings
2014-01-13 19:17:28 +06:00
Sergey Sharybin
5933b2455c Update Ceres to the latest upstream
Summary:
This brings up much easier termination type usage,
which for us means we might use:

  ceres::Summary::IsSolutionUsable()

instead of doing manual funky enum values check.

Reviewers: keir

Differential Revision: https://developer.blender.org/D153
2014-01-01 22:32:47 +06:00
Campbell Barton
a7ac6481ef CMake: report messages as status (else ccmake treats like an error) 2013-12-10 13:18:46 +11:00
Alexandr Kuznetsov
e2429d6492 Woo Hoo. First git commit.
Changes for VC2013

Now, I can build Blender with VC2013 with Cycles, Collada, OpenExr,OpenImageIO disabled. Also, you need VC2008 sp1 installed to make old libs compatible.
2013-11-29 15:13:12 -05:00
Sergey Sharybin
28a2d5e264 Code cleanup: spelling fixes and verbosity prints 2013-11-29 01:46:08 +06:00
Sergey Sharybin
b7bca8663a Made collections port compatible with MSVC2008
The issue was caused by the fact that in this version
of MSVC unordered_map class is defined in <unordered_map>
header file, but this file declares the class int std::tr1
namespace.

This confused existing assumption that if there's an
existing <unordered_map> file then class is declared
in std namespace.

Added an extra check to CMake which detects whether
it's std or std::tr1 which actually contains class
of unordered_map.

This might be changed/cleaned in the future, for
now committing to our repository to solve compilation
error on windows.

Details of the patch in upstream can be found there:

  https://ceres-solver-review.googlesource.com/#/c/4371/
2013-11-28 23:28:11 +06:00
Sergey Sharybin
de6c1c9287 Update Ceres to latest upstream version
- A richer Problem API.
- DynamicNumericDiffCostFunction.
- Faster ITERATIVE_SCHUR solver.
- Faster SCHUR_JACOBI preconditioner.
- Faster Jacobian evaluation.
- Faster visibility based preconditioning using single linkage clustering.

Also re-wrote rules for unordered collections detection,
should work on all platforms and compilers now :)
2013-11-28 19:46:23 +06:00
Jens Verwiebe
a3ec6edc05 OSX/scons: make MACOSX_SDK_CHECK a local var is sconstruct and remove from env, also fix a longstanding misuse of MACOSX_SDK_CHECK in ceres, use MACOSX_SDK instead 2013-11-08 13:44:10 +00:00
Sergey Sharybin
ccd2e4375a Fix compilation error after recent libmv change
- Tweaked typedefs in stdint so they match
  what we've got in BLI_sys_types (needed to
  explicitly tell sign to MSVC).

  Not so much harmful to be more explicit here,
  but we really better to have single stdint
  int blender.

- Tweaked allocations macros so MSVC is happy
  with structures allocation.
2013-10-09 19:49:09 +00:00
Sergey Sharybin
4228463caa Update Ceres to 1.7.0 release
For Blender this release is interesting because of:

- Covariance estimation (not used in Blender yet, but now we
  might use it for keyframe selection instead of havingown
  implementation).

- Significant performance improvements to loss function and
  dense linear solvers and automatic differentiation.

  Unfortunately, didn't notice speedup of tracking itself,
  but camera reconstruction now happens around 2 times faster
  on my laptop,

- Better inner iteration step acceptance and stopping.
2013-09-05 10:48:44 +00:00
Sergey Sharybin
5637b0d39b Update bundled version of libmv
- Ensures fix for msvc2012 is applying correct.
- Some code cleanup to match libmv's code style.
- Do not include points which were intersect
  behind the camera to a reconstruction.
- Includes changes needed for keyframe selection.
2013-05-12 17:06:00 +00:00
Brecht Van Lommel
309db8032c Fix libmv build with visual studio 2012.
Patch #35158 by Jurgen Herrmann.
2013-05-11 13:10:39 +00:00
Sergey Sharybin
d05f5da111 Update Ceres to current upstream version
This brings a fixes for threading issue in BLAS
making BA step more robust (there were some in-detemrinacy
caused by this threading issue).

Also brings some optimizations, which does not directly
affect on blender.
2013-04-22 09:25:37 +00:00
Sergey Sharybin
8e8823be12 Update ceres to current upstream version
Brings fixes for BLAS.
2013-04-08 17:05:48 +00:00
Sergey Sharybin
898ba93a12 Update libmv to current upstream version
- Solves some strict compilation warning
- Style/code cleanup
2013-04-05 09:23:20 +00:00
Sergey Sharybin
43b61fb8bd Bundle current master of ceres-solver
Thins brings up some speed improvements:

SPARSE_SCHUR is approx 1.3-1.5x times faster
ITERATIVE_SCHUR is approx 1.2x times faster

For blender this means camera solution go a bit
faster now. Would not have affect on tracking
speed.
2013-04-05 09:22:54 +00:00
Sergey Sharybin
729b76eb79 Update ceres to current git version.
Mainly to support msvc2010, bit also includes some minor fixes.
2013-03-21 18:07:03 +00:00
Sergey Sharybin
3a0d62f4f4 Update Ceres to 1.5RC3
It brings optimization of DENSE_QR and DENSE_SCHUR solvers.
2013-03-05 09:38:43 +00:00
Sergey Sharybin
1d20f2496a Use threaded cost function and jacobian computation
Also made it theraded linear solver, seems it makes
sense for iterative schur with inner iterations
enabled.

Use OpenMO's max therads called from bundler code
to detect how many threads to use. Could be changed
in a way that number of threads is passing in options
from blender side in the future.

Also removed redundant V3D definition from compiler's
flags.
2013-02-26 17:52:10 +00:00
Sergey Sharybin
b7af3207cc Bye-bye, SSBA!
With new bundle adjustment based on Ceres we don't need
SSBA library anymore. This also means we don't need ldl
library and libmv is no longer depends on colamd as well.
2013-02-25 20:15:42 +00:00
Sergey Sharybin
66cca267b1 Upgrade Ceres library to current master which is current 1.5RC
This is helpful because it brings CHOLMOB-free ITERATIVE_SCHUR and
SCHUR_JACOBI which is really nice for new upcoming bundle adjustment.

If also includes all the local fixes we made locally.

There're lots of other improvements/fixed which are not currently
would be so much visible in Blender, but which opens doors for some
great improvements in future.
2013-02-25 08:59:26 +00:00
Sergey Sharybin
4cf9034f6d Remove extern_ssba workaround
SSBA seemed to be working OK last time i've checked it
with MSVC and optimization enabled.

Also, we'll likely replace it with own BA soon, which
works fine with MSVC anyway.
2013-02-22 10:06:54 +00:00
Sergey Sharybin
ea99b9a392 Made ldl code a part of extern_ssba library, otherwise gcc fails to
find ldl symbols because order of libraries seems to be critical
for gcc linker.

A bit stupid, but that's how linker works..

Both CMake and SCons shall work fine on linux now.
2013-02-20 12:07:27 +00:00
Sergey Sharybin
1f88ee6213 Fix #34299: Motion Tracking 20x slower under Windows
Root of the issue goes to SSBA library which didn't work
properly when using optimization in MSVC. It was worked
around by disabling optimization for libmv, which is in
fact shame and shouldn't have been done.

It seems after some changes optimization does not affect
on SSBA code, but enabling optimization could be risky so
close to release.

For now solved by splitting SSBA to separate CMake/SCons
library, disabling optimization only for this particular
library and enabling optimization for rest of libmv.

Tested on all files which used to fail with optimization
enabled in SSBA and all of them works the same as before.
Tracking speed is significantly higher now.

After release we'll enable optimization for SSBA as well,
so there'll be no crappy build setup. Later we'll replace
old SSBA library with new BA code based on Ceres.

Bundle script would be broken for until then, so better
not to use it.
2013-02-20 11:29:43 +00:00
Sergey Sharybin
de23a9bfd5 Correction to previous commit, needed to tweak some include
directories after shuffling order of subdirectories and
compiler flags tweaks.
2013-02-18 11:50:03 +00:00
Sergey Sharybin
0d7e4f3229 Camera tracking: synchronize changes with own branch
Should be no functional changes.
2012-12-20 11:03:39 +00:00
Campbell Barton
536d9fec80 code cleanup:
- move object_iterators.c --> view3d_iterators. (ED_object.h had to include ED_view3d.h which isn't so nice)
- move projection functions from view3d_view.c --> view3d_project.c (view3d_view was becoming a mishmash of utility functions and operators).
- some some cmake includes as system-includes.
2012-10-17 04:13:03 +00:00
Campbell Barton
3a947cf537 code cleanup: remove redundant casts 2012-10-14 08:49:01 +00:00
Sergey Sharybin
60e43ebf9c Ceres: resolve no previous declarations warnings
Currently done as patch applied on bundling, would forward it to Ceres developers.
2012-09-18 11:01:51 +00:00
Campbell Barton
00c37e1ff6 code cleanup: correct include paths and comment 2012-09-17 04:08:36 +00:00
Sergey Sharybin
eacf3054aa Real fix for OSX CMake -- was a typo in build file generation file
Now Ceres re-bundling should go smooth :)
2012-09-16 14:43:44 +00:00
Jens Verwiebe
de72707b7d Fix OSX compile 2012-09-16 14:31:25 +00:00
Sergey Sharybin
3d84172bc8 Fix typo in one of previous commits 2012-09-16 13:58:15 +00:00
Sergey Sharybin
a4992871d6 Ceres: tweak namespace for hash classes for MSVC2010
Not sure if it'll solve all issues, but at least it should reduce
amount of errors.

Also added missed patch from previous commit.
2012-09-16 12:24:54 +00:00
Sergey Sharybin
02ef4cc33d Ceres: reshuffle include order to solve compilation error with MSVC
Not sure why exactly this happens, would need extra investigation
and should probably be also fixed in upstream.
2012-09-16 12:24:48 +00:00
Sergey Sharybin
a737bc49af Ceres: upgrade to version 1.3.0
This should contain real fixes for Windows, making it more robost and hopefully
faster (due to proper collection port) on that platform.

Also hack to fix Eigen alignment shouldn't be needed anymore.

Also on platforms which have got broken TR1 collections it's better to define
CERES_NO_TR1 instead of using Boost hacks. Made changes to Scons and CMake,
but can not check if this indeed works since i don't have OSX here.
2012-09-16 12:24:37 +00:00
Sergey Sharybin
d066ce9533 Ceres: remove debug-only code from bundling script, also move osx workaround to template 2012-09-16 12:23:00 +00:00
Brecht Van Lommel
becd442a36 Fix libmv build on OS X with 10.5 SDK. The tr1::unordered_map implementation
is broken in this SDK, now it uses the boost implementation instead.
2012-09-11 11:54:10 +00:00
Daniel Genrich
24a00f14af Fix compile errors on VC++ 2012 RC1.
Note: Compile still fails during ceres compile (namespace tr1 problems).
2012-07-27 18:18:13 +00:00
Sergey Sharybin
554107b6a1 Disable fixed-sized specializations for schur solver
As far as i remember Keir, this should be safe for our usages of ceres
and it should save noticeable amount of time and used memory when
compiling blender with libmv support.

Quick tests with tracking went smooth after this.
2012-06-14 13:33:37 +00:00
Antony Riakiotakis
5f1eec564f Fix compilation of new tracker for MinGW/MinGW64 2012-06-11 13:00:35 +00:00