From fb3f24020126afe843e509f53c985c327a324a23 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 29 Nov 2013 23:26:57 +0600 Subject: Image wrapping for plane track in clip editor Summary: Now it's possible to assign an image to plane tracks in clip editor. This image is only used for display in clip editor and this image is being warped into the plane track rectangle. Main purpose of this is to get early feedback about how good image warping matches the footage, before clip goes to the compositor. Pretty much straightforward change: just compute homography from undeformed normalized frame corner coordinates (unity square) to plane marker corners and apply this matrix to opengl stack. Still could improve behavior when perspective plane transform is degenerate, but that's not so much critical for now i'd say. Reviewers: brecht, campbellbarton Reviewed By: brecht CC: sebastian_k Differential Revision: http://developer.blender.org/D57 --- source/blender/blenloader/intern/readfile.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'source/blender/blenloader/intern/readfile.c') diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index d0eb0ed0be0..cb1d2a0b98f 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -6777,6 +6777,15 @@ static void lib_link_movieTracks(FileData *fd, MovieClip *clip, ListBase *tracks } } +static void lib_link_moviePlaneTracks(FileData *fd, MovieClip *clip, ListBase *tracksbase) +{ + MovieTrackingPlaneTrack *plane_track; + + for (plane_track = tracksbase->first; plane_track; plane_track = plane_track->next) { + plane_track->image = newlibadr_us(fd, clip->id.lib, plane_track->image); + } +} + static void lib_link_movieclip(FileData *fd, Main *main) { MovieClip *clip; @@ -6792,6 +6801,7 @@ static void lib_link_movieclip(FileData *fd, Main *main) clip->gpd = newlibadr_us(fd, clip->id.lib, clip->gpd); lib_link_movieTracks(fd, clip, &tracking->tracks); + lib_link_moviePlaneTracks(fd, clip, &tracking->plane_tracks); for (object = tracking->objects.first; object; object = object->next) { lib_link_movieTracks(fd, clip, &object->tracks); -- cgit v1.2.3