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>2015-10-27 17:59:17 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2015-10-27 18:01:10 +0300
commitea67f55b87e362e4e46097d88236639e6c2ea472 (patch)
treebf173a2d962f46c96c8d723f1becb441b0258221 /source/blender/compositor/nodes
parentb2f57190d9f2cc3ece678ef788b42eefb5631a2e (diff)
Compositor: Add Invert option to the movie clip stabilization node
This appears to be really common workflow when you stabilize shot to make compo easier (roto, some effects and so) and then re-introduce the motion back. Surely it's doable with some magic nodes and manual network for transforming but such workflow is too common in VFX to resist adding one small option in single node for this.
Diffstat (limited to 'source/blender/compositor/nodes')
-rw-r--r--source/blender/compositor/nodes/COM_Stabilize2dNode.cpp22
1 files changed, 14 insertions, 8 deletions
diff --git a/source/blender/compositor/nodes/COM_Stabilize2dNode.cpp b/source/blender/compositor/nodes/COM_Stabilize2dNode.cpp
index d1babcc8103..f25c7b3fc2d 100644
--- a/source/blender/compositor/nodes/COM_Stabilize2dNode.cpp
+++ b/source/blender/compositor/nodes/COM_Stabilize2dNode.cpp
@@ -40,11 +40,13 @@ Stabilize2dNode::Stabilize2dNode(bNode *editorNode) : Node(editorNode)
void Stabilize2dNode::convertToOperations(NodeConverter &converter, const CompositorContext &context) const
{
+ bNode *editorNode = this->getbNode();
NodeInput *imageInput = this->getInputSocket(0);
- MovieClip *clip = (MovieClip *)getbNode()->id;
+ MovieClip *clip = (MovieClip *)editorNode->id;
+ bool invert = (editorNode->custom2 & CMP_NODEFLAG_STABILIZE_INVERSE) != 0;
ScaleOperation *scaleOperation = new ScaleOperation();
- scaleOperation->setSampler((PixelSampler)this->getbNode()->custom1);
+ scaleOperation->setSampler((PixelSampler)editorNode->custom1);
RotateOperation *rotateOperation = new RotateOperation();
rotateOperation->setDoDegree2RadConversion(false);
TranslateOperation *translateOperation = new TranslateOperation();
@@ -53,24 +55,28 @@ void Stabilize2dNode::convertToOperations(NodeConverter &converter, const Compos
MovieClipAttributeOperation *xAttribute = new MovieClipAttributeOperation();
MovieClipAttributeOperation *yAttribute = new MovieClipAttributeOperation();
SetSamplerOperation *psoperation = new SetSamplerOperation();
- psoperation->setSampler((PixelSampler)this->getbNode()->custom1);
-
+ psoperation->setSampler((PixelSampler)editorNode->custom1);
+
scaleAttribute->setAttribute(MCA_SCALE);
scaleAttribute->setFramenumber(context.getFramenumber());
scaleAttribute->setMovieClip(clip);
-
+ scaleAttribute->setInvert(invert);
+
angleAttribute->setAttribute(MCA_ANGLE);
angleAttribute->setFramenumber(context.getFramenumber());
angleAttribute->setMovieClip(clip);
-
+ angleAttribute->setInvert(invert);
+
xAttribute->setAttribute(MCA_X);
xAttribute->setFramenumber(context.getFramenumber());
xAttribute->setMovieClip(clip);
-
+ xAttribute->setInvert(invert);
+
yAttribute->setAttribute(MCA_Y);
yAttribute->setFramenumber(context.getFramenumber());
yAttribute->setMovieClip(clip);
-
+ yAttribute->setInvert(invert);
+
converter.addOperation(scaleAttribute);
converter.addOperation(angleAttribute);
converter.addOperation(xAttribute);