70 for (coord = 0; coord < 2; coord++) {
84 segment_end(userdata, value_source);
96 segment_start(userdata, track, value_source,
true);
105 prevval = marker->
pos[coord];
109 val = (marker->
pos[coord] - prevval) * ((coord == 0) ? (
width) : (
height));
110 val /= marker->
framenr - prevfra;
115 func(userdata, track, marker, value_source, scene_framenr, val);
118 prevval = marker->
pos[coord];
124 segment_end(userdata, value_source);
135 const int clip_width,
136 const int clip_height,
137 const int scene_framenr)
139 float reprojected_position[4], bundle_position[4], marker_position[2], delta[2];
143 float projection_matrix[4][4];
145 tracking, tracking_object, scene_framenr, clip_width, clip_height, projection_matrix);
148 bundle_position[3] = 1;
150 mul_v4_m4v4(reprojected_position, projection_matrix, bundle_position);
151 reprojected_position[0] = (reprojected_position[0] / (reprojected_position[3] * 2.0f) + 0.5f) *
153 reprojected_position[1] = (reprojected_position[1] / (reprojected_position[3] * 2.0f) + 0.5f) *
157 tracking, clip_width, clip_height, reprojected_position, reprojected_position);
159 marker_position[0] = (marker->
pos[0] + track->
offset[0]) * clip_width;
160 marker_position[1] = (marker->
pos[1] + track->
offset[1]) * clip_height * aspy;
162 sub_v2_v2v2(delta, reprojected_position, marker_position);
163 return len_v2(delta) * weight;
183 int clip_width, clip_height;
187 bool is_segment_open =
false;
188 for (
int marker_index = 0; marker_index < track->
markersnr; marker_index++) {
194 if (is_segment_open) {
195 if (segment_end !=
NULL) {
198 is_segment_open =
false;
204 if (!is_segment_open) {
205 if (segment_start !=
NULL) {
206 if ((marker_index + 1) == track->
markersnr) {
210 segment_start(userdata,
216 is_segment_open =
true;
222 clip, tracking, tracking_object, track, marker, clip_width, clip_height, scene_framenr);
232 if (is_segment_open && segment_end !=
NULL) {
245 sc, track, userdata, func, segment_start, segment_end);
248 sc, track, userdata, func, segment_start, segment_end);
264 for (track = tracksbase->
first; track; track = track->
next) {
274 sc, track, userdata, func, segment_start, segment_end);
289 if (!include_hidden && (track->flag &
TRACK_HIDDEN) != 0) {
297 for (
int i = 0; i < track->markersnr; i++) {
305 func(userdata, marker);
316 bool has_bundle =
false;
317 const bool used_for_stabilization = (track->
flag &
319 if (track == act_track) {
340 if (used_for_stabilization) {
386 SpaceClip *sc,
const float x,
const float y,
float *r_offset_x,
float *r_offset_y)
394 *r_offset_x = (
x - 0.5f) *
width * aspx;
395 *r_offset_y = (
y - 0.5f) *
height * aspy;
416 track = tracksbase->
first;
462 if (marker !=
NULL) {
482 for (
int i = 0; i < spline->tot_point; i++) {
512 bool handles_as_control_point)
535 const bContext *
C,
bool fit,
float *r_offset_x,
float *r_offset_y,
float *r_zoom)
539 int frame_width, frame_height;
542 if ((frame_width == 0) || (frame_height == 0) || (sc->
clip ==
NULL)) {
560 (
max[0] +
min[0]) / (2 * frame_width),
561 (
max[1] +
min[1]) / (2 * frame_height),
566 const int h =
max[1] -
min[1];
570 if (
w > 0 && h > 0) {
574 float zoomx, zoomy, newzoom, aspx, aspy;
typedef float(TangentPoint)[2]
bool BKE_animdata_fix_paths_remove(struct ID *id, const char *path)
struct SpaceClip * CTX_wm_space_clip(const bContext *C)
struct Mask * CTX_data_edit_mask(const bContext *C)
struct ARegion * CTX_wm_region(const bContext *C)
struct Main * CTX_data_main(const bContext *C)
#define MASKPOINT_ISSEL_ANY(p)
void BKE_mask_coord_to_movieclip(struct MovieClip *clip, struct MovieClipUser *user, float r_co[2], const float co[2])
eMaskhandleMode BKE_mask_point_handles_mode_get(const struct MaskSplinePoint *point)
void BKE_movieclip_get_size(struct MovieClip *clip, struct MovieClipUser *user, int *width, int *height)
float BKE_movieclip_remap_clip_to_scene_frame(const struct MovieClip *clip, float framenr)
void BKE_tracking_plane_tracks_remove_point_track(struct MovieTracking *tracking, struct MovieTrackingTrack *track)
void BKE_tracking_plane_track_free(struct MovieTrackingPlaneTrack *plane_track)
struct ListBase * BKE_tracking_get_active_tracks(struct MovieTracking *tracking)
void BKE_tracking_get_rna_path_for_track(const struct MovieTracking *tracking, const struct MovieTrackingTrack *track, char *rna_path, size_t rna_path_len)
#define TRACK_SELECTED(track)
float BKE_tracking_track_get_weight_for_marker(struct MovieClip *clip, struct MovieTrackingTrack *track, struct MovieTrackingMarker *marker)
struct MovieTrackingTrack * BKE_tracking_track_get_active(struct MovieTracking *tracking)
void BKE_tracking_track_free(struct MovieTrackingTrack *track)
struct ListBase * BKE_tracking_get_active_plane_tracks(struct MovieTracking *tracking)
void BKE_tracking_distort_v2(struct MovieTracking *tracking, int image_width, int image_height, const float co[2], float r_co[2])
void BKE_tracking_get_rna_path_for_plane_track(const struct MovieTracking *tracking, const struct MovieTrackingPlaneTrack *plane_track, char *rna_path, size_t rna_path_len)
#define TRACK_VIEW_SELECTED(sc, track)
void BKE_tracking_get_projection_matrix(struct MovieTracking *tracking, struct MovieTrackingObject *object, int framenr, int winx, int winy, float mat[4][4])
struct MovieTrackingMarker * BKE_tracking_marker_get(struct MovieTrackingTrack *track, int framenr)
struct MovieTrackingObject * BKE_tracking_object_get_active(struct MovieTracking *tracking)
void BKE_tracking_marker_delete(struct MovieTrackingTrack *track, int framenr)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
MINLINE float min_ff(float a, float b)
MINLINE float power_of_2(float f)
void mul_v4_m4v4(float r[4], const float M[4][4], const float v[4])
void mul_v3_m4v3(float r[3], const float M[4][4], const float v[3])
MINLINE void copy_v3_v3(float r[3], const float a[3])
void minmax_v2v2_v2(float min[2], float max[2], const float vec[2])
MINLINE void sub_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE float len_v2(const float a[2]) ATTR_WARN_UNUSED_RESULT
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
#define INIT_MINMAX2(min, max)
void DEG_id_tag_update(struct ID *id, int flag)
void DEG_relations_tag_update(struct Main *bmain)
@ MCLIP_PROXY_RENDER_UNDISTORT
@ SC_SHOW_GRAPH_TRACKS_MOTION
@ SC_SHOW_GRAPH_TRACKS_ERROR
int ED_space_clip_get_clip_frame_number(struct SpaceClip *sc)
void ED_clip_point_undistorted_pos(struct SpaceClip *sc, const float co[2], float r_co[2])
void ED_space_clip_get_aspect(struct SpaceClip *sc, float *aspx, float *aspy)
void ED_space_clip_get_size(struct SpaceClip *sc, int *width, int *height)
struct MovieClip * ED_space_clip_get_clip(struct SpaceClip *sc)
bool ED_mask_selected_minmax(const struct bContext *C, float min[2], float max[2], bool handles_as_control_point)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei height
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei width
@ GPU_SHADER_2D_UNIFORM_COLOR
void GPU_blend(eGPUBlend blend)
void GPU_line_width(float width)
Read Guarded memory(de)allocation.
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a point
void UI_view2d_view_ortho(const struct View2D *v2d)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
void(* ClipTrackValueSegmentStartCallback)(void *userdata, struct MovieTrackingTrack *track, eClipCurveValueSource value_source, bool is_point)
void(* ClipTrackValueSegmentEndCallback)(void *userdata, eClipCurveValueSource value_source)
@ CLIP_VALUE_SOURCE_REPROJECTION_ERROR
@ CLIP_VALUE_SOURCE_SPEED_Y
@ CLIP_VALUE_SOURCE_SPEED_X
void(* ClipTrackValueCallback)(void *userdata, struct MovieTrackingTrack *track, struct MovieTrackingMarker *marker, eClipCurveValueSource value_source, int scene_framenr, float val)
static bool mask_has_selection(const bContext *C)
void clip_graph_tracking_values_iterate_track(SpaceClip *sc, MovieTrackingTrack *track, void *userdata, ClipTrackValueCallback func, ClipTrackValueSegmentStartCallback segment_start, ClipTrackValueSegmentEndCallback segment_end)
bool clip_graph_value_visible(SpaceClip *sc, eClipCurveValueSource value_source)
static float calculate_reprojection_error_at_marker(MovieClip *clip, MovieTracking *tracking, MovieTrackingObject *tracking_object, MovieTrackingTrack *track, MovieTrackingMarker *marker, const int clip_width, const int clip_height, const int scene_framenr)
void clip_delete_marker(bContext *C, MovieClip *clip, MovieTrackingTrack *track, MovieTrackingMarker *marker)
static bool tracking_has_selection(SpaceClip *space_clip)
void clip_delete_plane_track(bContext *C, MovieClip *clip, MovieTrackingPlaneTrack *plane_track)
void clip_view_center_to_point(SpaceClip *sc, float x, float y)
static bool selected_tracking_boundbox(SpaceClip *sc, float min[2], float max[2])
void clip_draw_sfra_efra(View2D *v2d, Scene *scene)
static void clip_graph_tracking_values_iterate_track_reprojection_error_values(SpaceClip *sc, MovieTrackingTrack *track, void *userdata, ClipTrackValueCallback func, ClipTrackValueSegmentStartCallback segment_start, ClipTrackValueSegmentEndCallback segment_end)
bool clip_view_calculate_view_selection(const bContext *C, bool fit, float *r_offset_x, float *r_offset_y, float *r_zoom)
bool clip_view_has_locked_selection(const bContext *C)
void clip_graph_tracking_values_iterate(SpaceClip *sc, bool selected_only, bool include_hidden, void *userdata, ClipTrackValueCallback func, ClipTrackValueSegmentStartCallback segment_start, ClipTrackValueSegmentEndCallback segment_end)
void clip_graph_tracking_iterate(SpaceClip *sc, bool selected_only, bool include_hidden, void *userdata, void(*func)(void *userdata, MovieTrackingMarker *marker))
static void clip_graph_tracking_values_iterate_track_speed_values(SpaceClip *sc, MovieTrackingTrack *track, void *userdata, ClipTrackValueCallback func, ClipTrackValueSegmentStartCallback segment_start, ClipTrackValueSegmentEndCallback segment_end)
void clip_delete_track(bContext *C, MovieClip *clip, MovieTrackingTrack *track)
void clip_view_offset_for_center_to_point(SpaceClip *sc, const float x, const float y, float *r_offset_x, float *r_offset_y)
static bool selected_boundbox(const bContext *C, float min[2], float max[2], bool handles_as_control_point)
SyclQueue void void size_t num_bytes void
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
struct MovieTracking tracking
MovieTrackingMarker * markers
struct MovieTrackingTrack * next
MovieTrackingTrack * act_track
MovieTrackingCamera camera
struct MovieClipUser user
void WM_event_add_notifier(const bContext *C, uint type, void *reference)