Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2012-07-27 15:07:09 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2012-07-27 15:07:09 +0400
commitd0b387a0dfcb259a36d7bff3c6bdd63ee0e5a1d9 (patch)
tree3c3544ba06a8d2b5d7c0632b938d86bc4c4f5241 /source/blender/compositor/operations/COM_TrackPositionOperation.cpp
parent9a2d862123913ad015eac287d245efed5072ff48 (diff)
Track input node: move all initializaiton to initExecution function
Diffstat (limited to 'source/blender/compositor/operations/COM_TrackPositionOperation.cpp')
-rw-r--r--source/blender/compositor/operations/COM_TrackPositionOperation.cpp73
1 files changed, 42 insertions, 31 deletions
diff --git a/source/blender/compositor/operations/COM_TrackPositionOperation.cpp b/source/blender/compositor/operations/COM_TrackPositionOperation.cpp
index 3137092ee19..d61bfd4b235 100644
--- a/source/blender/compositor/operations/COM_TrackPositionOperation.cpp
+++ b/source/blender/compositor/operations/COM_TrackPositionOperation.cpp
@@ -39,58 +39,69 @@ extern "C" {
TrackPositionOperation::TrackPositionOperation() : NodeOperation()
{
this->addOutputSocket(COM_DT_VALUE);
- this->movieClip = NULL;
- this->framenumber = 0;
- this->trackingObject[0] = 0;
- this->trackName[0] = 0;
- this->axis = 0;
- this->relative = false;
+ this->m_movieClip = NULL;
+ this->m_framenumber = 0;
+ this->m_trackingObjectName[0] = 0;
+ this->m_trackName[0] = 0;
+ this->m_axis = 0;
+ this->m_relative = false;
}
-void TrackPositionOperation::executePixel(float *outputValue, float x, float y, PixelSampler sampler)
+void TrackPositionOperation::initExecution()
{
+ MovieTracking *tracking = NULL;
MovieClipUser user = {0};
- MovieTracking *tracking = &movieClip->tracking;
- MovieTrackingObject *object = BKE_tracking_object_get_named(tracking, this->trackingObject);
- MovieTrackingTrack *track;
- MovieTrackingMarker *marker;
- int width, height;
+ MovieTrackingObject *object;
- outputValue[0] = 0.0f;
+ zero_v2(this->m_markerPos);
+ zero_v2(this->m_relativePos);
- if (!object)
+ if (!this->m_movieClip)
return;
- track = BKE_tracking_track_get_named(tracking, object, this->trackName);
+ tracking = &this->m_movieClip->tracking;
- if (!track)
- return;
+ BKE_movieclip_user_set_frame(&user, this->m_framenumber);
+ BKE_movieclip_get_size(this->m_movieClip, &user, &this->m_width, &this->m_height);
+
+ object = BKE_tracking_object_get_named(tracking, this->m_trackingObjectName);
+ if (object) {
+ MovieTrackingTrack *track;
+
+ track = BKE_tracking_track_get_named(tracking, object, this->m_trackName);
- BKE_movieclip_user_set_frame(&user, this->framenumber);
- BKE_movieclip_get_size(this->movieClip, &user, &width, &height);
+ if (track) {
+ MovieTrackingMarker *marker;
- marker = BKE_tracking_marker_get(track, this->framenumber);
+ marker = BKE_tracking_marker_get(track, this->m_framenumber);
- outputValue[0] = marker->pos[this->axis];
+ copy_v2_v2(this->m_markerPos, marker->pos);
- if (this->relative) {
- int i;
+ if (this->m_relative) {
+ int i;
- for (i = 0; i < track->markersnr; i++) {
- marker = &track->markers[i];
+ for (i = 0; i < track->markersnr; i++) {
+ marker = &track->markers[i];
- if ((marker->flag & MARKER_DISABLED) == 0) {
- outputValue[0] -= marker->pos[this->axis];
+ if ((marker->flag & MARKER_DISABLED) == 0) {
+ copy_v2_v2(this->m_relativePos, marker->pos);
- break;
+ break;
+ }
+ }
}
}
}
+}
+
+void TrackPositionOperation::executePixel(float *outputValue, float x, float y, PixelSampler sampler)
+{
+ outputValue[0] = this->m_markerPos[this->m_axis] - this->m_relativePos[this->m_axis];
- if (this->axis == 0)
- outputValue[0] *= width;
+ if (this->m_axis == 0)
+ outputValue[0] *= this->m_width;
else
- outputValue[0] *= height;
+ outputValue[0] *= this->m_height;
}
void TrackPositionOperation::determineResolution(unsigned int resolution[], unsigned int preferredResolution[])