Commit: eca062b9cbea5b5e30345ae5de1cf5a089003a19
Author: Sergey Sharybin
Date:   Mon Aug 10 16:12:54 2020 +0200
Branches: blender-v2.90-release
https://developer.blender.org/rBeca062b9cbea5b5e30345ae5de1cf5a089003a19

Fix T79563: Compositor's Stabilize 2D in invert mode does not work correctly

Is not only the values of translation/scale/rotation which are to be inverted,
but also the order of operations.

Differential Revision: https://developer.blender.org/D8518

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

M       source/blender/compositor/nodes/COM_Stabilize2dNode.cpp

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

diff --git a/source/blender/compositor/nodes/COM_Stabilize2dNode.cpp 
b/source/blender/compositor/nodes/COM_Stabilize2dNode.cpp
index 7a308ac47b9..38db080a154 100644
--- a/source/blender/compositor/nodes/COM_Stabilize2dNode.cpp
+++ b/source/blender/compositor/nodes/COM_Stabilize2dNode.cpp
@@ -82,17 +82,32 @@ void Stabilize2dNode::convertToOperations(NodeConverter 
&converter,
   converter.addOperation(rotateOperation);
   converter.addOperation(psoperation);
 
-  converter.mapInputSocket(imageInput, scaleOperation->getInputSocket(0));
   converter.addLink(scaleAttribute->getOutputSocket(), 
scaleOperation->getInputSocket(1));
   converter.addLink(scaleAttribute->getOutputSocket(), 
scaleOperation->getInputSocket(2));
 
-  converter.addLink(scaleOperation->getOutputSocket(), 
rotateOperation->getInputSocket(0));
   converter.addLink(angleAttribute->getOutputSocket(), 
rotateOperation->getInputSocket(1));
 
-  converter.addLink(rotateOperation->getOutputSocket(), 
translateOperation->getInputSocket(0));
   converter.addLink(xAttribute->getOutputSocket(), 
translateOperation->getInputSocket(1));
   converter.addLink(yAttribute->getOutputSocket(), 
translateOperation->getInputSocket(2));
 
-  converter.addLink(translateOperation->getOutputSocket(), 
psoperation->getInputSocket(0));
   converter.mapOutputSocket(getOutputSocket(), psoperation->getOutputSocket());
+
+  if (invert) {
+    // Translate -> Rotate -> Scale.
+    converter.mapInputSocket(imageInput, 
translateOperation->getInputSocket(0));
+
+    converter.addLink(translateOperation->getOutputSocket(), 
rotateOperation->getInputSocket(0));
+    converter.addLink(rotateOperation->getOutputSocket(), 
scaleOperation->getInputSocket(0));
+
+    converter.addLink(scaleOperation->getOutputSocket(), 
psoperation->getInputSocket(0));
+  }
+  else {
+    // Scale  -> Rotate -> Translate.
+    converter.mapInputSocket(imageInput, scaleOperation->getInputSocket(0));
+
+    converter.addLink(scaleOperation->getOutputSocket(), 
rotateOperation->getInputSocket(0));
+    converter.addLink(rotateOperation->getOutputSocket(), 
translateOperation->getInputSocket(0));
+
+    converter.addLink(translateOperation->getOutputSocket(), 
psoperation->getInputSocket(0));
+  }
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to