===========================
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.
106 lines
3.7 KiB
C
106 lines
3.7 KiB
C
/*
|
|
* ***** BEGIN GPL LICENSE BLOCK *****
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
|
|
* All rights reserved.
|
|
*
|
|
* The Original Code is: all of this file.
|
|
*
|
|
* Contributor(s): none yet.
|
|
*
|
|
* ***** END GPL LICENSE BLOCK *****
|
|
*/
|
|
#ifndef BKE_LIBRARY_TYPES_H
|
|
#define BKE_LIBRARY_TYPES_H
|
|
|
|
/** \file BKE_library.h
|
|
* \ingroup bke
|
|
* \since March 2001
|
|
* \author nzc
|
|
*/
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
struct ListBase;
|
|
struct ID;
|
|
struct Main;
|
|
struct Library;
|
|
struct wmWindowManager;
|
|
struct bContext;
|
|
struct PointerRNA;
|
|
struct PropertyRNA;
|
|
|
|
void *alloc_libblock(struct ListBase *lb, short type, const char *name);
|
|
void *copy_libblock(struct ID *id);
|
|
void copy_libblock_data(struct ID *id, const struct ID *id_from, const short do_action);
|
|
|
|
void BKE_id_lib_local_paths(struct Main *bmain, struct ID *id);
|
|
void id_lib_extern(struct ID *id);
|
|
void BKE_library_filepath_set(struct Library *lib, const char *filepath);
|
|
void id_us_plus(struct ID *id);
|
|
void id_us_min(struct ID *id);
|
|
int id_make_local(struct ID *id, int test);
|
|
int id_single_user(struct bContext *C, struct ID *id, struct PointerRNA *ptr, struct PropertyRNA *prop);
|
|
int id_copy(struct ID *id, struct ID **newid, int test);
|
|
int id_unlink(struct ID *id, int test);
|
|
|
|
int new_id(struct ListBase *lb, struct ID *id, const char *name);
|
|
void id_clear_lib_data(struct Main *bmain, struct ID *id);
|
|
|
|
struct ListBase *which_libbase(struct Main *mainlib, short type);
|
|
|
|
#define MAX_LIBARRAY 40
|
|
int set_listbasepointers(struct Main *main, struct ListBase **lb);
|
|
|
|
void free_libblock(struct ListBase *lb, void *idv);
|
|
void free_libblock_us(struct ListBase *lb, void *idv);
|
|
void free_main(struct Main *mainvar);
|
|
|
|
void tag_main_idcode(struct Main *mainvar, const short type, const short tag);
|
|
void tag_main_lb(struct ListBase *lb, const short tag);
|
|
void tag_main(struct Main *mainvar, const short tag);
|
|
|
|
void rename_id(struct ID *id, const char *name);
|
|
void name_uiprefix_id(char *name, struct ID *id);
|
|
void test_idbutton(char *name);
|
|
void text_idbutton(struct ID *id, char *text);
|
|
void BKE_library_make_local(struct Main *bmain, struct Library *lib, int untagged_only);
|
|
struct ID *find_id(const char *type, const char *name);
|
|
void clear_id_newpoins(void);
|
|
|
|
void IDnames_to_pupstring(const char **str, const char *title, const char *extraops, struct ListBase *lb,struct ID* link, short *nr);
|
|
void IMAnames_to_pupstring(const char **str, const char *title, const char *extraops, struct ListBase *lb, struct ID *link, short *nr);
|
|
void IPOnames_to_pupstring(const char **str, const char *title, const char *extraops, struct ListBase *lb, struct ID* link, short *nr, int blocktype);
|
|
|
|
void flag_listbase_ids(ListBase *lb, short flag, short value);
|
|
void flag_all_listbases_ids(short flag, short value);
|
|
void recalc_all_library_objects(struct Main *main);
|
|
|
|
void set_free_windowmanager_cb(void (*func)(struct bContext *, struct wmWindowManager *) );
|
|
|
|
/* use when "" is given to new_id() */
|
|
#define ID_FALLBACK_NAME "Untitled"
|
|
|
|
#define IS_TAGGED(_id) ((_id) && (((ID *)_id)->flag & LIB_DOIT))
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|