53 if (!tracking_object) {
112 MarkerPoint &marker_point = (*marker_points)[track_index];
117 for (
int j = 0; j < pattern_ibuf->
x * pattern_ibuf->
y; j++) {
130 marker_point.
color /= pattern_ibuf->
x * pattern_ibuf->
y;
137 return marker_points;
151 r_area = preferred_area;
173 float sum_of_weights = 0.0f;
175 const float2 difference = normalized_pixel_location - marker_point.position;
176 const float squared_distance =
math::dot(difference, difference);
177 const float gaussian =
math::exp(-squared_distance * squared_shape_parameter);
178 weighted_sum += marker_point.color * gaussian;
179 sum_of_weights += gaussian;
181 weighted_sum /= sum_of_weights;
float BKE_movieclip_remap_scene_to_clip_frame(const struct MovieClip *clip, float framenr)
void BKE_movieclip_user_set_frame(struct MovieClipUser *user, int framenr)
void BKE_movieclip_get_size(struct MovieClip *clip, const struct MovieClipUser *user, int *r_width, int *r_height)
struct ImBuf * BKE_movieclip_get_ibuf(struct MovieClip *clip, const struct MovieClipUser *user)
struct MovieTrackingObject * BKE_tracking_object_get_named(struct MovieTracking *tracking, const char *name)
struct MovieTrackingMarker * BKE_tracking_marker_get(struct MovieTrackingTrack *track, int framenr)
struct MovieTrackingObject * BKE_tracking_object_get_active(const struct MovieTracking *tracking)
struct ImBuf * BKE_tracking_get_pattern_imbuf(const struct ImBuf *ibuf, const struct MovieTrackingTrack *track, const struct MovieTrackingMarker *marker, bool anchored, bool disable_channels)
#define LISTBASE_FOREACH(type, var, list)
#define LISTBASE_FOREACH_INDEX(type, var, list, index_var)
float srgb_to_linearrgb(float c)
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE void add_v2_v2v2(float r[2], const float a[2], const float b[2])
#define IN_RANGE_INCL(a, b, c)
#define DNA_struct_default_get(struct_name)
Contains defines and structs used throughout the imbuf module.
Array< MarkerPoint > * cached_marker_points_
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
Array< MarkerPoint > * compute_marker_points()
void deinit_execution() override
void init_execution() override
char tracking_object_[64]
void determine_canvas(const rcti &preferred_area, rcti &r_area) override
a MemoryBuffer contains access to the data
unsigned int get_height() const
void add_output_socket(DataType datatype)
unsigned int get_width() const
void IMB_freeImBuf(ImBuf *)
constexpr rcti COM_AREA_NONE
constexpr float COM_COLOR_TRANSPARENT[4]
typename BuffersIteratorBuilder< T >::Iterator BuffersIterator
T dot(const QuaternionBase< T > &a, const QuaternionBase< T > &b)
VecBase< float, 4 > float4
VecBase< int32_t, 2 > int2
VecBase< float, 2 > float2
ImBufFloatBuffer float_buffer
ImBufByteBuffer byte_buffer
struct MovieTracking tracking