[Bf-blender-cvs] [4569d9c0c3b] master: Compositor: Fix Movie Distortion node rendering an empty image

Manuel Castilla noreply at git.blender.org
Fri Oct 1 00:10:45 CEST 2021


Commit: 4569d9c0c3b046a412d54cc008d9d2a4be909ee1
Author: Manuel Castilla
Date:   Wed Sep 29 21:27:26 2021 +0200
Branches: master
https://developer.blender.org/rB4569d9c0c3b046a412d54cc008d9d2a4be909ee1

Compositor: Fix Movie Distortion node rendering an empty image

Input area of interest calculation was incorrect because `m_margin`
was uninitialized.
Only "Full Frame" mode was affected.

===================================================================

M	source/blender/compositor/operations/COM_MovieDistortionOperation.cc
M	source/blender/compositor/operations/COM_MovieDistortionOperation.h

===================================================================

diff --git a/source/blender/compositor/operations/COM_MovieDistortionOperation.cc b/source/blender/compositor/operations/COM_MovieDistortionOperation.cc
index 72162ffb110..49f43d2c1a7 100644
--- a/source/blender/compositor/operations/COM_MovieDistortionOperation.cc
+++ b/source/blender/compositor/operations/COM_MovieDistortionOperation.cc
@@ -35,9 +35,8 @@ MovieDistortionOperation::MovieDistortionOperation(bool distortion)
   this->m_apply = distortion;
 }
 
-void MovieDistortionOperation::initExecution()
+void MovieDistortionOperation::init_data()
 {
-  this->m_inputOperation = this->getInputSocketReader(0);
   if (this->m_movieClip) {
     MovieTracking *tracking = &this->m_movieClip->tracking;
     MovieClipUser clipUser = {0};
@@ -60,15 +59,25 @@ void MovieDistortionOperation::initExecution()
     m_margin[0] = delta[0] + 5;
     m_margin[1] = delta[1] + 5;
 
-    this->m_distortion = BKE_tracking_distortion_new(
-        tracking, calibration_width, calibration_height);
     this->m_calibration_width = calibration_width;
     this->m_calibration_height = calibration_height;
     this->m_pixel_aspect = tracking->camera.pixel_aspect;
   }
   else {
     m_margin[0] = m_margin[1] = 0;
-    this->m_distortion = nullptr;
+  }
+}
+
+void MovieDistortionOperation::initExecution()
+{
+  m_inputOperation = this->getInputSocketReader(0);
+  if (m_movieClip) {
+    MovieTracking *tracking = &m_movieClip->tracking;
+    m_distortion = BKE_tracking_distortion_new(
+        tracking, m_calibration_width, m_calibration_height);
+  }
+  else {
+    m_distortion = nullptr;
   }
 }
 
diff --git a/source/blender/compositor/operations/COM_MovieDistortionOperation.h b/source/blender/compositor/operations/COM_MovieDistortionOperation.h
index 69c2f9c269c..abf0553b75b 100644
--- a/source/blender/compositor/operations/COM_MovieDistortionOperation.h
+++ b/source/blender/compositor/operations/COM_MovieDistortionOperation.h
@@ -44,6 +44,7 @@ class MovieDistortionOperation : public MultiThreadedOperation {
   MovieDistortionOperation(bool distortion);
   void executePixelSampled(float output[4], float x, float y, PixelSampler sampler) override;
 
+  void init_data() override;
   void initExecution() override;
   void deinitExecution() override;



More information about the Bf-blender-cvs mailing list