Based on my testing, I think that the DeltaKeyer is working with CleanPlate on blue-screen keys. However, it requires an extra step compared to green-screen keying: you must also pick the Background Color in the DK node, choosing the blue background. Then it will key out the blue, and having the CleanPlate connected will improve the quality of the key.
First, here's a demonstration of the issue I think the OP is talking about. In the comp pasted below I generated these two example images:
I then passed each image to a CleanPlate node, used the colour picker to pick the background colour, eroded it a bit, then filled it. Then I passed the image to a DeltaKeyer, and the CleanPlate to the DK's CleanPlate input.
This is the result:
The green-screen background has been keyed out by the CleanPlate. The blue-screen background has not.
- Code: Select all
{
Tools = ordered() {
DeltaKeyer1_1 = DeltaKeyer {
CtrlWZoom = false,
Inputs = {
TuningRanges = Input {
Value = ColorCurves {
Curves = {
{
Points = {
{ 0, 1 },
{ 0.4, 0.2 },
{ 0.6, 0 },
{ 1, 0 }
}
},
{
Points = {
{ 0, 0 },
{ 0.4, 0 },
{ 0.6, 0.2 },
{ 1, 1 }
}
}
}
},
},
Clean = Input {
SourceOp = "CleanPlate1_1",
Source = "Output",
},
Input = Input {
SourceOp = "Merge1_1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 508.667, 705.546 } },
},
CleanPlate1_1 = CleanPLate {
Inputs = {
BackgroundRed = Input { Value = 0, },
BackgroundGreen = Input { Value = 1, },
BackgroundBlue = Input { Value = 0.159912109375, },
Erode = Input { Value = 0.00204, },
GrowEdges = Input { Value = 0.2, },
Input = Input {
SourceOp = "Merge1_1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 508.667, 640.364 } },
},
Background1_1_1 = Background {
Inputs = {
EffectMask = Input {
SourceOp = "Ellipse1_1",
Source = "Mask",
},
Width = Input { Value = 1920, },
Height = Input { Value = 1080, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
TopLeftRed = Input { Value = 1, },
TopLeftGreen = Input { Value = 0.0479999999999999, },
},
ViewInfo = OperatorInfo { Pos = { 368, 593.425 } },
},
Merge1_1 = Merge {
Inputs = {
Background = Input {
SourceOp = "Background1_2",
Source = "Output",
},
Foreground = Input {
SourceOp = "Background1_1_1",
Source = "Output",
},
PerformDepthMerge = Input { Value = 0, },
},
ViewInfo = OperatorInfo { Pos = { 368, 640.364 } },
},
Ellipse1_1 = EllipseMask {
Inputs = {
Filter = Input { Value = FuID { "Fast Gaussian" }, },
MaskWidth = Input { Value = 1920, },
MaskHeight = Input { Value = 1080, },
PixelAspect = Input { Value = { 1, 1 }, },
ClippingMode = Input { Value = FuID { "None" }, },
},
ViewInfo = OperatorInfo { Pos = { 368, 560.425 } },
},
DeltaKeyer1 = DeltaKeyer {
Inputs = {
TuningRanges = Input {
Value = ColorCurves {
Curves = {
{
Points = {
{ 0, 1 },
{ 0.4, 0.2 },
{ 0.6, 0 },
{ 1, 0 }
}
},
{
Points = {
{ 0, 0 },
{ 0.4, 0 },
{ 0.6, 0.2 },
{ 1, 1 }
}
}
}
},
},
Clean = Input {
SourceOp = "CleanPlate1",
Source = "Output",
},
Input = Input {
SourceOp = "Merge1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 502.667, 531.606 } },
},
Background1_2 = Background {
Inputs = {
Width = Input { Value = 1920, },
Height = Input { Value = 1080, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
TopLeftGreen = Input { Value = 1, },
TopLeftBlue = Input { Value = 0.16, },
},
ViewInfo = OperatorInfo { Pos = { 258, 640.364 } },
},
Merge1 = Merge {
Inputs = {
Background = Input {
SourceOp = "Background1",
Source = "Output",
},
Foreground = Input {
SourceOp = "Background1_1",
Source = "Output",
},
PerformDepthMerge = Input { Value = 0, },
},
ViewInfo = OperatorInfo { Pos = { 362, 466.424 } },
},
Background1 = Background {
Inputs = {
Width = Input { Value = 1920, },
Height = Input { Value = 1080, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
TopLeftGreen = Input { Value = 0.016, },
TopLeftBlue = Input { Value = 1, },
},
ViewInfo = OperatorInfo { Pos = { 252.667, 466.424 } },
},
CleanPlate1 = CleanPLate {
Inputs = {
BackgroundRed = Input { Value = 0, },
BackgroundGreen = Input { Value = 0.0159912109375, },
BackgroundBlue = Input { Value = 1, },
Erode = Input { Value = 0.00152, },
GrowEdges = Input { Value = 0.2, },
Input = Input {
SourceOp = "Merge1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 502.667, 466.424 } },
},
Background1_1 = Background {
Inputs = {
Width = Input { Value = 1920, },
Height = Input { Value = 1080, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
TopLeftRed = Input { Value = 1, },
TopLeftGreen = Input { Value = 0.0479999999999999, },
EffectMask = Input {
SourceOp = "Ellipse1",
Source = "Mask",
}
},
ViewInfo = OperatorInfo { Pos = { 362, 419.485 } },
},
Ellipse1 = EllipseMask {
Inputs = {
Filter = Input { Value = FuID { "Fast Gaussian" }, },
MaskWidth = Input { Value = 1920, },
MaskHeight = Input { Value = 1080, },
PixelAspect = Input { Value = { 1, 1 }, },
ClippingMode = Input { Value = FuID { "None" }, },
},
ViewInfo = OperatorInfo { Pos = { 362, 386.485 } },
}
}
}
However, if you now use the Background Color selector in the DeltaKeyer, it will key out the blue. So the question is, is the CleanPlate making any difference?
I tried a real-life example, using a
random blue-screen image I found on the net. I configured the CleanPlate and passed it to the DK, then also used the colour picker in the DK to choose the blue Background Color. I then compared the key with and without Clean Plate connected.
Here's an A/B comparison with Gamma raised to 2.0. Left: with CleanPlate; Right: without CleanPlate
The with-CleanPlate key is definitely cleaner than without CleanPlate.
So could the issue be that the DK assumes green screen with a CleanPlate input, and therefore does nothing until it is told to key on blue? But then when a blue key is chosen, it does then use the CleanPlate as normal?
It would be interesting to see a real-life example of using the DK on blue-screen footage, and comparing the key quality with and without the CleanPlate connected. I think you will find there is some improvement with CleanPlate.