[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47937] trunk/blender/source/blender: Garbage mate input for keying node
Sergey Sharybin
sergey.vfx at gmail.com
Fri Jun 15 10:27:00 CEST 2012
Revision: 47937
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47937
Author: nazgul
Date: 2012-06-15 08:26:49 +0000 (Fri, 15 Jun 2012)
Log Message:
-----------
Garbage mate input for keying node
This adds garbage matte input to new keying node which is used to
force occluding things which can not be eliminated by color operations.
White areas defines areas which should be removed from final result.
Modified Paths:
--------------
trunk/blender/source/blender/compositor/nodes/COM_KeyingNode.cpp
trunk/blender/source/blender/compositor/operations/COM_KeyingOperation.cpp
trunk/blender/source/blender/compositor/operations/COM_KeyingOperation.h
trunk/blender/source/blender/nodes/composite/nodes/node_composite_keying.c
Modified: trunk/blender/source/blender/compositor/nodes/COM_KeyingNode.cpp
===================================================================
--- trunk/blender/source/blender/compositor/nodes/COM_KeyingNode.cpp 2012-06-15 08:01:41 UTC (rev 47936)
+++ trunk/blender/source/blender/compositor/nodes/COM_KeyingNode.cpp 2012-06-15 08:26:49 UTC (rev 47937)
@@ -156,6 +156,7 @@
{
InputSocket *inputImage = this->getInputSocket(0);
InputSocket *inputScreen = this->getInputSocket(1);
+ InputSocket *inputGarbageMatte = this->getInputSocket(2);
OutputSocket *outputImage = this->getOutputSocket(0);
OutputSocket *outputMatte = this->getOutputSocket(1);
OutputSocket *outputEdges = this->getOutputSocket(2);
@@ -170,6 +171,7 @@
keyingOperation->setScreenBalance(keying_data->screen_balance);
inputScreen->relinkConnections(keyingOperation->getInputSocket(1), 1, graph);
+ inputGarbageMatte->relinkConnections(keyingOperation->getInputSocket(2), 2, graph);
if (keying_data->blur_pre) {
/* chroma preblur operation for input of keying operation */
Modified: trunk/blender/source/blender/compositor/operations/COM_KeyingOperation.cpp
===================================================================
--- trunk/blender/source/blender/compositor/operations/COM_KeyingOperation.cpp 2012-06-15 08:01:41 UTC (rev 47936)
+++ trunk/blender/source/blender/compositor/operations/COM_KeyingOperation.cpp 2012-06-15 08:26:49 UTC (rev 47937)
@@ -56,33 +56,39 @@
{
this->addInputSocket(COM_DT_COLOR);
this->addInputSocket(COM_DT_COLOR);
+ this->addInputSocket(COM_DT_VALUE);
this->addOutputSocket(COM_DT_VALUE);
this->screenBalance = 0.5f;
this->pixelReader = NULL;
this->screenReader = NULL;
+ this->garbageReader = NULL;
}
void KeyingOperation::initExecution()
{
this->pixelReader = this->getInputSocketReader(0);
this->screenReader = this->getInputSocketReader(1);
+ this->garbageReader = this->getInputSocketReader(2);
}
void KeyingOperation::deinitExecution()
{
this->pixelReader = NULL;
this->screenReader = NULL;
+ this->garbageReader = NULL;
}
void KeyingOperation::executePixel(float *color, float x, float y, PixelSampler sampler, MemoryBuffer *inputBuffers[])
{
float pixelColor[4];
float screenColor[4];
+ float garbageValue[4];
this->pixelReader->read(pixelColor, x, y, sampler, inputBuffers);
this->screenReader->read(screenColor, x, y, sampler, inputBuffers);
+ this->garbageReader->read(garbageValue, x, y, sampler, inputBuffers);
int primary_channel = get_pixel_primary_channel(screenColor);
@@ -100,6 +106,8 @@
color[0] = distance;
}
+
+ color[0] *= (1.0f - garbageValue[0]);
}
bool KeyingOperation::determineDependingAreaOfInterest(rcti *input, ReadBufferOperation *readOperation, rcti *output)
Modified: trunk/blender/source/blender/compositor/operations/COM_KeyingOperation.h
===================================================================
--- trunk/blender/source/blender/compositor/operations/COM_KeyingOperation.h 2012-06-15 08:01:41 UTC (rev 47936)
+++ trunk/blender/source/blender/compositor/operations/COM_KeyingOperation.h 2012-06-15 08:26:49 UTC (rev 47937)
@@ -38,6 +38,8 @@
protected:
SocketReader *pixelReader;
SocketReader *screenReader;
+ SocketReader *garbageReader;
+
float screenBalance;
public:
Modified: trunk/blender/source/blender/nodes/composite/nodes/node_composite_keying.c
===================================================================
--- trunk/blender/source/blender/nodes/composite/nodes/node_composite_keying.c 2012-06-15 08:01:41 UTC (rev 47936)
+++ trunk/blender/source/blender/nodes/composite/nodes/node_composite_keying.c 2012-06-15 08:26:49 UTC (rev 47937)
@@ -46,8 +46,9 @@
/* **************** Translate ******************** */
static bNodeSocketTemplate cmp_node_keying_in[] = {
- { SOCK_RGBA, 1, "Image", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f},
- { SOCK_RGBA, 1, "Key Color", 1.0f, 1.0f, 1.0f, 1.0f},
+ { SOCK_RGBA, 1, "Image", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f},
+ { SOCK_RGBA, 1, "Key Color", 1.0f, 1.0f, 1.0f, 1.0f},
+ { SOCK_FLOAT, 1, "Garbage Matte", 0.0f, 1.0f, 1.0f, 1.0f},
{ -1, 0, "" }
};
More information about the Bf-blender-cvs
mailing list