From 9355cc5c399a9d7cd49815c68eeeac788022ba1a Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Mon, 5 Dec 2011 18:57:17 +0000 Subject: Object tracking; initial commit This commit implements basis stuff needed for object tracking, use case isn't perfect now, interface also should be cleaned a bit. - Added list of objects to be tracked. Default there's only one object called "Camera" which is used for solving camera motion. Other objects can be added and each of them will have it;s own list of tracks. Only one object can be used for camera solving at this moment. - Added new constraint called "Object Tracking" which makes oriented object be moving in the save way as solved object motion. - Scene orientation tools can be used for orienting object to bundles. - All tools which works with list of tracks or reconstruction data now gets that lists from active editing object. - All objects and their tracking data are available via python api. --- source/blender/makesdna/DNA_constraint_types.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'source/blender/makesdna/DNA_constraint_types.h') diff --git a/source/blender/makesdna/DNA_constraint_types.h b/source/blender/makesdna/DNA_constraint_types.h index 4aff540a948..10c4153702d 100644 --- a/source/blender/makesdna/DNA_constraint_types.h +++ b/source/blender/makesdna/DNA_constraint_types.h @@ -412,6 +412,7 @@ typedef struct bFollowTrackConstraint { struct MovieClip *clip; char track[24]; int flag, pad; + char object[24]; } bFollowTrackConstraint; /* Camera Solver constraints */ @@ -420,6 +421,13 @@ typedef struct bCameraSolverConstraint { int flag, pad; } bCameraSolverConstraint; +/* Camera Solver constraints */ +typedef struct bObjectSolverConstraint { + struct MovieClip *clip; + int flag, pad; + char object[24]; +} bObjectSolverConstraint; + /* ------------------------------------------ */ /* bConstraint->type @@ -455,6 +463,7 @@ typedef enum eBConstraint_Types { CONSTRAINT_TYPE_PIVOT, /* Pivot Constraint */ CONSTRAINT_TYPE_FOLLOWTRACK, /* Follow Track Constraint */ CONSTRAINT_TYPE_CAMERASOLVER, /* Camera Solver Constraint */ + CONSTRAINT_TYPE_OBJECTSOLVER, /* Object Solver Constraint */ /* NOTE: no constraints are allowed to be added after this */ NUM_CONSTRAINT_TYPES @@ -762,6 +771,11 @@ typedef enum eCameraSolver_Flags { CAMERASOLVER_ACTIVECLIP = (1<<0) } eCameraSolver_Flags; +/* ObjectSolver Constraint -> flag */ +typedef enum eObjectSolver_Flags { + OBJECTSOLVER_ACTIVECLIP = (1<<0) +} eObjectSolver_Flags; + /* Rigid-Body Constraint */ #define CONSTRAINT_DRAW_PIVOT 0x40 #define CONSTRAINT_DISABLE_LINKED_COLLISION 0x80 -- cgit v1.2.3 From ba16e7d631ad0fa5ae7add9bc5f0590c3d23e778 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Thu, 15 Dec 2011 16:09:57 +0000 Subject: Object tracking: object with object solver constraint is now parented to scene's camera Made Object Solver operator parent object to scene's camera. Behavior is pretty much familiar to Child Of constraint -- it stores inverted transformation matrix which gives constant offset in parent's space. Current files would open incorrect, to make object aligned well again, just press "Set Inverse" button in Object Solver constraint. Fixed orientation operators so now they should work in all cases. Also changed behavior of Set Origin operator which now sets origin to the median point of all selected tracks/ --- source/blender/makesdna/DNA_constraint_types.h | 1 + 1 file changed, 1 insertion(+) (limited to 'source/blender/makesdna/DNA_constraint_types.h') diff --git a/source/blender/makesdna/DNA_constraint_types.h b/source/blender/makesdna/DNA_constraint_types.h index 10c4153702d..5403bf26da0 100644 --- a/source/blender/makesdna/DNA_constraint_types.h +++ b/source/blender/makesdna/DNA_constraint_types.h @@ -426,6 +426,7 @@ typedef struct bObjectSolverConstraint { struct MovieClip *clip; int flag, pad; char object[24]; + float invmat[4][4]; /* parent-inverse matrix to use */ } bObjectSolverConstraint; /* ------------------------------------------ */ -- cgit v1.2.3 From 8a9d901c81b0357bca833f3ccb2d4f674873e58d Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Thu, 15 Dec 2011 20:38:23 +0000 Subject: Camera tracking: add camera to follow track and object solver constraint Object used to be parented to active camera which isn't very convenient when working with witness cameras. Now parent camera can be specified in constraint (if it's not specified, active camera is used) --- source/blender/makesdna/DNA_constraint_types.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'source/blender/makesdna/DNA_constraint_types.h') diff --git a/source/blender/makesdna/DNA_constraint_types.h b/source/blender/makesdna/DNA_constraint_types.h index 5403bf26da0..50c1779960d 100644 --- a/source/blender/makesdna/DNA_constraint_types.h +++ b/source/blender/makesdna/DNA_constraint_types.h @@ -413,6 +413,7 @@ typedef struct bFollowTrackConstraint { char track[24]; int flag, pad; char object[24]; + struct Object *camera; } bFollowTrackConstraint; /* Camera Solver constraints */ @@ -427,6 +428,7 @@ typedef struct bObjectSolverConstraint { int flag, pad; char object[24]; float invmat[4][4]; /* parent-inverse matrix to use */ + struct Object *camera; } bObjectSolverConstraint; /* ------------------------------------------ */ -- cgit v1.2.3