コード例 #1
0
static void slide_plane_marker_update_homographies(SpaceClip *sc,
                                                   SlidePlaneMarkerData *data)
{
	int framenr = ED_space_clip_get_clip_frame_number(sc);

	BKE_tracking_track_plane_from_existing_motion(data->plane_track, framenr);
}
コード例 #2
0
ファイル: tracking_ops_plane.c プロジェクト: dfelinto/blender
static int create_plane_track_tracks_exec(bContext *C, wmOperator *op)
{
  SpaceClip *sc = CTX_wm_space_clip(C);
  MovieClip *clip = ED_space_clip_get_clip(sc);
  MovieTracking *tracking = &clip->tracking;
  MovieTrackingPlaneTrack *plane_track;
  ListBase *tracks_base = BKE_tracking_get_active_tracks(tracking);
  ListBase *plane_tracks_base = BKE_tracking_get_active_plane_tracks(tracking);
  int framenr = ED_space_clip_get_clip_frame_number(sc);

  plane_track = BKE_tracking_plane_track_add(tracking, plane_tracks_base, tracks_base, framenr);

  if (plane_track == NULL) {
    BKE_report(op->reports, RPT_ERROR, "Need at least 4 selected point tracks to create a plane");
    return OPERATOR_CANCELLED;
  }
  else {
    BKE_tracking_tracks_deselect_all(tracks_base);

    plane_track->flag |= SELECT;
    clip->tracking.act_track = NULL;
    clip->tracking.act_plane_track = plane_track;

    /* Compute homoraphies and apply them on marker's corner, so we've got
     * quite nice motion from the very beginning.
     */
    BKE_tracking_track_plane_from_existing_motion(plane_track, framenr);
  }

  WM_event_add_notifier(C, NC_MOVIECLIP | NA_EDITED, clip);

  return OPERATOR_FINISHED;
}