void PlaneTrackCommonOperation::initExecution() { MovieTracking *tracking; MovieTrackingObject *object; memset(this->m_corners, 0, sizeof(this->m_corners)); memset(this->m_frameSpaceCorners, 0, sizeof(this->m_frameSpaceCorners)); if (!this->m_movieClip) return; tracking = &this->m_movieClip->tracking; object = BKE_tracking_object_get_named(tracking, this->m_trackingObjectName); if (object) { MovieTrackingPlaneTrack *plane_track; plane_track = BKE_tracking_plane_track_get_named(tracking, object, this->m_planeTrackName); if (plane_track) { MovieTrackingPlaneMarker *plane_marker; int clip_framenr = BKE_movieclip_remap_scene_to_clip_frame(this->m_movieClip, this->m_framenumber); plane_marker = BKE_tracking_plane_marker_get(plane_track, clip_framenr); memcpy(this->m_corners, plane_marker->corners, sizeof(this->m_corners)); } } for (int i = 0; i < 4; i++) { this->m_frameSpaceCorners[i][0] = this->m_corners[i][0] * this->getWidth(); this->m_frameSpaceCorners[i][1] = this->m_corners[i][1] * this->getHeight(); } }
static void rna_Mask_update_parent(Main *bmain, Scene *scene, PointerRNA *ptr) { MaskParent *parent = ptr->data; if (parent->id) { if (GS(parent->id->name) == ID_MC) { MovieClip *clip = (MovieClip *) parent->id; MovieTracking *tracking = &clip->tracking; MovieTrackingObject *object = BKE_tracking_object_get_named(tracking, parent->parent); if (object) { int clip_framenr = BKE_movieclip_remap_scene_to_clip_frame(clip, scene->r.cfra); if (parent->type == MASK_PARENT_POINT_TRACK) { MovieTrackingTrack *track = BKE_tracking_track_get_named(tracking, object, parent->sub_parent); if (track) { MovieTrackingMarker *marker = BKE_tracking_marker_get(track, clip_framenr); float marker_pos_ofs[2], parmask_pos[2]; MovieClipUser user = {0}; BKE_movieclip_user_set_frame(&user, scene->r.cfra); add_v2_v2v2(marker_pos_ofs, marker->pos, track->offset); BKE_mask_coord_from_movieclip(clip, &user, parmask_pos, marker_pos_ofs); copy_v2_v2(parent->parent_orig, parmask_pos); } } else /* if (parent->type == MASK_PARENT_PLANE_TRACK) */ { MovieTrackingPlaneTrack *plane_track = BKE_tracking_plane_track_get_named(tracking, object, parent->sub_parent); if (plane_track) { MovieTrackingPlaneMarker *plane_marker = BKE_tracking_plane_marker_get(plane_track, clip_framenr); memcpy(parent->parent_corners_orig, plane_marker->corners, sizeof(parent->parent_corners_orig)); zero_v2(parent->parent_orig); } } } } } rna_Mask_update_data(bmain, scene, ptr); }