diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-11-18 17:29:03 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-11-18 17:29:32 +0300 |
commit | 8e16c5294bf2b6b6c72ec9c6a2b8dcc9b79c4acd (patch) | |
tree | 41385a9d90d712bdc720e6d7b145027f134617d5 /source/blender/blenkernel/intern/tracking.c | |
parent | 729dc98be167a77e418489d19042168863085845 (diff) |
Fix T42585: Mask motion blur is wrong when parented to plane track
it wasn't wrong, it wasn't implemented.
Diffstat (limited to 'source/blender/blenkernel/intern/tracking.c')
-rw-r--r-- | source/blender/blenkernel/intern/tracking.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/tracking.c b/source/blender/blenkernel/intern/tracking.c index 1613b0c5a78..d580c184a8b 100644 --- a/source/blender/blenkernel/intern/tracking.c +++ b/source/blender/blenkernel/intern/tracking.c @@ -1456,6 +1456,35 @@ MovieTrackingPlaneMarker *BKE_tracking_plane_marker_ensure(MovieTrackingPlaneTra return plane_marker; } +void BKE_tracking_plane_marker_get_subframe_corners(MovieTrackingPlaneTrack *plane_track, + float framenr, + float corners[4][2]) +{ + MovieTrackingPlaneMarker *marker = BKE_tracking_plane_marker_get(plane_track, (int)framenr); + MovieTrackingPlaneMarker *marker_last = plane_track->markers + (plane_track->markersnr - 1); + int i; + if (marker != marker_last) { + MovieTrackingPlaneMarker *marker_next = marker + 1; + if (marker_next->framenr == marker->framenr + 1) { + float fac = (framenr - (int) framenr) / (marker_next->framenr - marker->framenr); + for (i = 0; i < 4; ++i) { + interp_v2_v2v2(corners[i], marker->corners[i], + marker_next->corners[i], fac); + } + } + else { + for (i = 0; i < 4; ++i) { + copy_v2_v2(corners[i], marker->corners[i]); + } + } + } + else { + for (i = 0; i < 4; ++i) { + copy_v2_v2(corners[i], marker->corners[i]); + } + } +} + /*********************** Object *************************/ MovieTrackingObject *BKE_tracking_object_add(MovieTracking *tracking, const char *name) |