[Bf-blender-cvs] [b97a90468a2] temp_cryptomatte: Compositor: Added image in/out features to Cryptomatte node

Stefan Werner noreply at git.blender.org
Fri Nov 3 21:09:42 CET 2017


Commit: b97a90468a2392a758c55e74a65341245fb3d641
Author: Stefan Werner
Date:   Fri Apr 7 10:56:46 2017 +0200
Branches: temp_cryptomatte
https://developer.blender.org/rBb97a90468a2392a758c55e74a65341245fb3d641

Compositor: Added image in/out features to Cryptomatte node

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

M	source/blender/compositor/nodes/COM_CryptomatteNode.cpp
M	source/blender/nodes/composite/nodes/node_composite_cryptomatte.c

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

diff --git a/source/blender/compositor/nodes/COM_CryptomatteNode.cpp b/source/blender/compositor/nodes/COM_CryptomatteNode.cpp
index ab3cfbc7562..d97dbb70365 100644
--- a/source/blender/compositor/nodes/COM_CryptomatteNode.cpp
+++ b/source/blender/compositor/nodes/COM_CryptomatteNode.cpp
@@ -22,6 +22,8 @@
 
 #include "COM_CryptomatteNode.h"
 #include "COM_CryptomatteOperation.h"
+#include "COM_SetAlphaOperation.h"
+#include "COM_ConvertOperation.h"
 #include <iterator>
 
 CryptomatteNode::CryptomatteNode(bNode *editorNode) : Node(editorNode)
@@ -255,9 +257,13 @@ extern "C" void cryptomatte_remove(NodeCryptomatte*n, float f)
 
 void CryptomatteNode::convertToOperations(NodeConverter &converter, const CompositorContext &/*context*/) const
 {
-	CryptomatteOperation *operation = new CryptomatteOperation();
+	NodeInput *inputSocketImage = this->getInputSocket(0);
+	NodeOutput *outputSocketImage = this->getOutputSocket(0);
+	NodeOutput *outputSocketMatte = this->getOutputSocket(1);
+	NodeOutput *outputCryptoPick = this->getOutputSocket(2);
 	
 	bNode *node = this->getbNode();
+	CryptomatteOperation *operation = new CryptomatteOperation();
 	NodeCryptomatte *cryptoMatteSettings = (NodeCryptomatte *)node->storage;
 	if(cryptoMatteSettings) {
 		std::string input = cryptoMatteSettings->matte_id;
@@ -283,9 +289,22 @@ void CryptomatteNode::convertToOperations(NodeConverter &converter, const Compos
 	}
 	
 	converter.addOperation(operation);
-	NodeOutput *outputSocket = this->getOutputSocket(0);
 	
 	for(int i = 0; i < 6; i++)
-		converter.mapInputSocket(this->getInputSocket(i), operation->getInputSocket(i));
-	converter.mapOutputSocket(outputSocket, operation->getOutputSocket(0));
+		converter.mapInputSocket(this->getInputSocket(i+1), operation->getInputSocket(i));
+	
+	SeparateChannelOperation *separateOperation = new SeparateChannelOperation;
+	separateOperation->setChannel(3);
+	converter.addOperation(separateOperation);
+	
+	SetAlphaOperation *operationAlpha = new SetAlphaOperation();
+	converter.addOperation(operationAlpha);
+	
+	converter.mapInputSocket(inputSocketImage, operationAlpha->getInputSocket(0));
+	converter.mapOutputSocket(outputSocketMatte, separateOperation->getOutputSocket(0));
+	converter.mapOutputSocket(outputSocketImage, operationAlpha->getOutputSocket(0));
+	converter.mapOutputSocket(outputCryptoPick, operation->getOutputSocket(0));
+	
+	converter.addLink(operation->getOutputSocket(0), separateOperation->getInputSocket(0));
+	converter.addLink(separateOperation->getOutputSocket(0), operationAlpha->getInputSocket(1));
 }
diff --git a/source/blender/nodes/composite/nodes/node_composite_cryptomatte.c b/source/blender/nodes/composite/nodes/node_composite_cryptomatte.c
index 653480cdef3..bd4df0104ee 100644
--- a/source/blender/nodes/composite/nodes/node_composite_cryptomatte.c
+++ b/source/blender/nodes/composite/nodes/node_composite_cryptomatte.c
@@ -36,6 +36,7 @@ extern void cryptomatte_add(NodeCryptomatte* n, float f);
 extern void cryptomatte_remove(NodeCryptomatte*n, float f);
 
 static bNodeSocketTemplate inputs[] = {
+	{	SOCK_RGBA, 1, N_("Image"),			1.0f, 1.0f, 1.0f, 1.0f},
 	{	SOCK_RGBA, 1, N_("Pass 1"),			0.0f, 0.0f, 0.0f, 1.0f},
 	{	SOCK_RGBA, 1, N_("Pass 2"),			0.0f, 0.0f, 0.0f, 1.0f},
 	{	SOCK_RGBA, 1, N_("Pass 3"),			0.0f, 0.0f, 0.0f, 1.0f},
@@ -45,7 +46,9 @@ static bNodeSocketTemplate inputs[] = {
 	{	-1, 0, ""	}
 };
 static bNodeSocketTemplate outputs[] = {
-	{	SOCK_RGBA, 0, N_("Mask")},
+	{	SOCK_RGBA,	0, N_("Image")},
+	{	SOCK_FLOAT, 0, N_("Matte")},
+	{	SOCK_RGBA,	0, N_("CryptoPick")},
 	{	-1, 0, ""	}
 };



More information about the Bf-blender-cvs mailing list