diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2011-11-28 17:49:42 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2011-11-28 17:49:42 +0400 |
commit | 9f3c921957124d65aa0d2cbc4ad2aacb56411670 (patch) | |
tree | 1aa3e3eb139ce638afba27cc129dbfd167446728 /source/blender/blenkernel/BKE_tracking.h | |
parent | 24cc4a6c2188f8143282851b19c11f0b61d41475 (diff) |
Camera tracking: moved camera solver into it's own job
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.
Diffstat (limited to 'source/blender/blenkernel/BKE_tracking.h')
-rw-r--r-- | source/blender/blenkernel/BKE_tracking.h | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/source/blender/blenkernel/BKE_tracking.h b/source/blender/blenkernel/BKE_tracking.h index 530d8c7a1db..e55d40ebfe5 100644 --- a/source/blender/blenkernel/BKE_tracking.h +++ b/source/blender/blenkernel/BKE_tracking.h @@ -34,6 +34,7 @@ struct bGPDlayer; struct ImBuf; +struct MovieReconstructContext; struct MovieTrackingTrack; struct MovieTrackingMarker; struct MovieTracking; @@ -91,9 +92,14 @@ void BKE_tracking_sync_user(struct MovieClipUser *user, struct MovieTrackingCont int BKE_tracking_next(struct MovieTrackingContext *context); /* Camera solving */ -int BKE_tracking_can_solve(struct MovieTracking *tracking, char *error_msg, int error_size); - -float BKE_tracking_solve_reconstruction(struct MovieTracking *tracking, int width, int height); +int BKE_tracking_can_reconstruct(struct MovieTracking *tracking, char *error_msg, int error_size); + +struct MovieReconstructContext* BKE_tracking_reconstruction_context_new(struct MovieTracking *tracking, + int keyframe1, int keyframe2, int width, int height); +void BKE_tracking_reconstruction_context_free(struct MovieReconstructContext *context); +void BKE_tracking_solve_reconstruction(struct MovieReconstructContext *context, + short *stop, short *do_update, float *progress, char *stats_message, int message_size); +int BKE_tracking_finish_reconstruction(struct MovieReconstructContext *context, struct MovieTracking *tracking); struct MovieReconstructedCamera *BKE_tracking_get_reconstructed_camera(struct MovieTracking *tracking, int framenr); void BKE_tracking_get_interpolated_camera(struct MovieTracking *tracking, int framenr, float mat[4][4]); |