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:
Diffstat (limited to 'source/blender/compositor/nodes/COM_TransformNode.cc')
-rw-r--r--source/blender/compositor/nodes/COM_TransformNode.cc37
1 files changed, 27 insertions, 10 deletions
diff --git a/source/blender/compositor/nodes/COM_TransformNode.cc b/source/blender/compositor/nodes/COM_TransformNode.cc
index d2fb7b54633..b38aad78d90 100644
--- a/source/blender/compositor/nodes/COM_TransformNode.cc
+++ b/source/blender/compositor/nodes/COM_TransformNode.cc
@@ -73,16 +73,33 @@ void TransformNode::convertToOperations(NodeConverter &converter,
break;
}
case eExecutionModel::FullFrame: {
- TransformOperation *op = new TransformOperation();
- op->set_sampler((PixelSampler)this->getbNode()->custom1);
- converter.addOperation(op);
-
- converter.mapInputSocket(imageInput, op->getInputSocket(0));
- converter.mapInputSocket(xInput, op->getInputSocket(1));
- converter.mapInputSocket(yInput, op->getInputSocket(2));
- converter.mapInputSocket(angleInput, op->getInputSocket(3));
- converter.mapInputSocket(scaleInput, op->getInputSocket(4));
- converter.mapOutputSocket(getOutputSocket(), op->getOutputSocket());
+ ScaleRelativeOperation *scaleOperation = new ScaleRelativeOperation();
+ converter.addOperation(scaleOperation);
+
+ RotateOperation *rotateOperation = new RotateOperation();
+ rotateOperation->setDoDegree2RadConversion(false);
+ converter.addOperation(rotateOperation);
+
+ TranslateOperation *translateOperation = new TranslateCanvasOperation();
+ converter.addOperation(translateOperation);
+
+ PixelSampler sampler = (PixelSampler)this->getbNode()->custom1;
+ scaleOperation->setSampler(sampler);
+ rotateOperation->set_sampler(sampler);
+ scaleOperation->set_scale_canvas_max_size(context.get_render_size());
+
+ converter.mapInputSocket(imageInput, scaleOperation->getInputSocket(0));
+ converter.mapInputSocket(scaleInput, scaleOperation->getInputSocket(1));
+ converter.mapInputSocket(scaleInput, scaleOperation->getInputSocket(2)); // xscale = yscale
+
+ converter.addLink(scaleOperation->getOutputSocket(), rotateOperation->getInputSocket(0));
+ converter.mapInputSocket(angleInput, rotateOperation->getInputSocket(1));
+
+ converter.addLink(rotateOperation->getOutputSocket(), translateOperation->getInputSocket(0));
+ converter.mapInputSocket(xInput, translateOperation->getInputSocket(1));
+ converter.mapInputSocket(yInput, translateOperation->getInputSocket(2));
+
+ converter.mapOutputSocket(getOutputSocket(), translateOperation->getOutputSocket());
break;
}
}