
- Posts: 450
- Joined: Wed Feb 21, 2024 11:53 pm
- Location: Planet Earth
- Real Name: Sebastian Alvarez
goohoobler1 wrote:What do you need to know?
Chad Capeland wrote:You can change which layer is visible in the 2D viewers by selecting them from the dropdown on the top right.
{
Tools = ordered() {
Loader22_1 = Loader {
Clips = {
Clip {
ID = "Clip1",
Filename = "D:\\Temp\\testshotsbs\\EXRs\\BlenderCartest0000.exr",
FormatID = "OpenEXRFormat",
LengthSetManually = true,
TrimIn = 0,
TrimOut = 0,
ExtendFirst = 0,
ExtendLast = 0,
Loop = 0,
AspectMode = 0,
Depth = 0,
TimeCode = 0,
GlobalStart = 0,
GlobalEnd = 0
}
},
CtrlWZoom = false,
Inputs = {
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
["Clip1.OpenEXRFormat.DeepOutputMode"] = Input { Disabled = true, },
["Clip1.OpenEXRFormat.Channels"] = Input { Value = 1, },
["Clip1.OpenEXRFormat.RedName"] = Input { Value = FuID { "ViewLayer.Noisy Image.R" }, },
["Clip1.OpenEXRFormat.GreenName"] = Input { Value = FuID { "ViewLayer.Noisy Image.G" }, },
["Clip1.OpenEXRFormat.BlueName"] = Input { Value = FuID { "ViewLayer.Noisy Image.B" }, }
},
ViewInfo = OperatorInfo { Pos = { 330, 16.5 } },
},
DiffuseMultiMerge1 = MultiMerge {
NameSet = true,
Inputs = {
Background_LayerSelect = Input { Value = FuID { "ViewLayer.DiffInd" }, },
LayerOrder = Input { Value = ScriptVal { {
[0] = 1,
2
} }, },
Background = Input {
SourceOp = "PipeRouter1",
Source = "Output",
},
["Layer1.Foreground"] = Input {
SourceOp = "PipeRouter1",
Source = "Output",
},
["Layer1.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.DiffDir" }, },
["Layer1.BurnIn"] = Input { Value = 1, },
LayerName1 = Input { Value = "PipeRouter1 Layer", },
["Layer2.Foreground"] = Input {
SourceOp = "PipeRouter1",
Source = "Output",
},
["Layer2.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.DiffCol" }, },
["Layer2.ApplyMode"] = Input { Value = FuID { "Multiply" }, },
LayerName2 = Input { Value = "PipeRouter1 Layer", }
},
ViewInfo = OperatorInfo { Pos = { 440, 82.5 } },
},
GlossMultiMerge2 = MultiMerge {
NameSet = true,
Inputs = {
Background_LayerSelect = Input { Value = FuID { "ViewLayer.GlossInd" }, },
LayerOrder = Input { Value = ScriptVal { {
[0] = 1,
2
} }, },
Background = Input {
SourceOp = "PipeRouter9",
Source = "Output",
},
["Layer1.Foreground"] = Input {
SourceOp = "PipeRouter9",
Source = "Output",
},
["Layer1.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.GlossDir" }, },
["Layer1.BurnIn"] = Input { Value = 1, },
LayerName1 = Input { Value = "PipeRouter1 Layer", },
["Layer2.Foreground"] = Input {
SourceOp = "PipeRouter9",
Source = "Output",
},
["Layer2.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.GlossCol" }, },
["Layer2.ApplyMode"] = Input { Value = FuID { "Multiply" }, },
LayerName2 = Input { Value = "PipeRouter1 Layer", }
},
ViewInfo = OperatorInfo { Pos = { 605, 82.5 } },
},
PipeRouter9 = PipeRouter {
Inputs = {
Input = Input {
SourceOp = "PipeRouter1",
Source = "Output",
}
},
ViewInfo = PipeRouterInfo { Pos = { 605, 16.5 } },
},
PipeRouter1 = PipeRouter {
Inputs = {
Input = Input {
SourceOp = "Loader22_1",
Source = "Output",
}
},
ViewInfo = PipeRouterInfo { Pos = { 440, 16.5 } },
},
TransMultiMerge2_1 = MultiMerge {
NameSet = true,
Inputs = {
Background_LayerSelect = Input { Value = FuID { "ViewLayer.TransInd" }, },
LayerOrder = Input { Value = ScriptVal { {
[0] = 1,
2
} }, },
Background = Input {
SourceOp = "PipeRouter2",
Source = "Output",
},
["Layer1.Foreground"] = Input {
SourceOp = "PipeRouter2",
Source = "Output",
},
["Layer1.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.TransDir" }, },
["Layer1.BurnIn"] = Input { Value = 1, },
LayerName1 = Input { Value = "PipeRouter1 Layer", },
["Layer2.Foreground"] = Input {
SourceOp = "PipeRouter2",
Source = "Output",
},
["Layer2.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.TransCol" }, },
["Layer2.ApplyMode"] = Input { Value = FuID { "Multiply" }, },
LayerName2 = Input { Value = "PipeRouter1 Layer", }
},
ViewInfo = OperatorInfo { Pos = { 770, 82.5 } },
},
PipeRouter2 = PipeRouter {
Inputs = {
Input = Input {
SourceOp = "PipeRouter9",
Source = "Output",
}
},
ViewInfo = PipeRouterInfo { Pos = { 770, 16.5 } },
},
MultiMerge3 = MultiMerge {
Inputs = {
LayerOrder = Input { Value = ScriptVal { {
[0] = 1,
2,
3,
4,
5
} }, },
Background = Input {
SourceOp = "DiffuseMultiMerge1",
Source = "Output",
},
["Layer1.Foreground"] = Input {
SourceOp = "GlossMultiMerge2",
Source = "Output",
},
["Layer1.BurnIn"] = Input { Value = 1, },
LayerName1 = Input { Value = "GlossMultiMerge2 Layer", },
["Layer2.Foreground"] = Input {
SourceOp = "TransMultiMerge2_1",
Source = "Output",
},
["Layer2.BurnIn"] = Input { Value = 1, },
LayerName2 = Input { Value = "TransMultiMerge2_1 Layer", },
["Layer3.Foreground"] = Input {
SourceOp = "EmitPipeRouter10",
Source = "Output",
},
["Layer3.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.Emit" }, },
["Layer3.BurnIn"] = Input { Value = 1, },
LayerName3 = Input { Value = "EmitPipeRouter10 Layer", },
["Layer4.Foreground"] = Input {
SourceOp = "VolPipeRouter11",
Source = "Output",
},
["Layer4.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.VolumeInd" }, },
["Layer4.BurnIn"] = Input { Value = 1, },
LayerName4 = Input { Value = "VolPipeRouter11 Layer", },
["Layer5.Foreground"] = Input {
SourceOp = "VolPipeRouter11",
Source = "Output",
},
["Layer5.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.VolumeDir" }, },
["Layer5.BurnIn"] = Input { Value = 1, },
LayerName5 = Input { Value = "VolPipeRouter11 Layer", }
},
ViewInfo = OperatorInfo { Pos = { 935, 148.5 } },
},
EmitPipeRouter10 = PipeRouter {
NameSet = true,
Inputs = {
Input = Input {
SourceOp = "PipeRouter2",
Source = "Output",
}
},
ViewInfo = PipeRouterInfo { Pos = { 880, 16.5 } },
},
VolPipeRouter11 = PipeRouter {
NameSet = true,
Inputs = {
Input = Input {
SourceOp = "EmitPipeRouter10",
Source = "Output",
}
},
ViewInfo = PipeRouterInfo { Pos = { 990, 16.5 } },
}
}
}
goohoobler1 wrote:OK.. so Layers in Fusion is super flexible but also can be a little brain bending since there are many different concepts to wrap your head round.
First - Layers isn't really "Layers" (like evil AE) it is like having a big pipe where you can add images and masks and they all travel down the same pipe separately.
goohoobler1 wrote:Fifth - You can combine, organize and shuffle Channels and Layers around in almost any configuration using the Swizzler node
goohoobler1 wrote:Here is the version of your workflow above, Utilizing Layers and MultiMerges , that shows how simple it can get - You should be able to sub in a Blender EXR of your choosing with default Viewlayer naming to see the effect:
goohoobler1 wrote:Second - The [Main] (AKA Default image)
Mixolydian wrote:The Swizzler node doesn't provide anything anywhere close to the node tree I use, or at least a different way to achieve the same result. You can create lots of layers in it, then go one by one choosing which layer from the multilayer EXR you want to use, but the one at the top will be the output always. Whatever pass I choose for that layer (as in layer in the swizzler node), is what I will see in the viewer, if I have it set to default, which is always the case.
The Swizzler node doesn't provide anything anywhere close to the node tree I use, or at least a different way to achieve the same result. You can create lots of layers in it, then go one by one choosing which layer from the multilayer EXR you want to use, but the one at the top will be the output always. Whatever pass I choose for that layer (as in layer in the swizzler node), is what I will see in the viewer, if I have it set to default, which is always the case.
but it's too simple, it's missing all the passes separately, which is the great thing about compositing with nodes, I can apply a denoiser to the glossy direct and indirect, usually the passes that show most noise in my experience.
That, and color correctors and so on, all the different things you can do to fine tune the final image to your liking.
But maybe I'm missing something. I know that whether I create the node tree with booleans or merges and multimerges, I need to have all those passes visible, one in each node, to achieve the result I want. Not that I think my NCC1701 video is ILM quality, but I think it looks pretty decent, considering it's my first attempt at multipass compositing.
{
Tools = ordered() {
MultiMerge3_1 = MultiMerge {
Inputs = {
LayerOrder = Input { Value = ScriptVal { {
[0] = 1,
2,
3,
4,
5
} }, },
Background = Input {
SourceOp = "DiffuseMultiMerge1",
Source = "Output",
},
["Layer1.Foreground"] = Input {
SourceOp = "GlossMultiMerge2",
Source = "Output",
},
["Layer1.BurnIn"] = Input { Value = 1, },
LayerName1 = Input { Value = "GlossMultiMerge2 Layer", },
["Layer2.Foreground"] = Input {
SourceOp = "TransMultiMerge2_1",
Source = "Output",
},
["Layer2.BurnIn"] = Input { Value = 1, },
LayerName2 = Input { Value = "TransMultiMerge2_1 Layer", },
["Layer3.Foreground"] = Input {
SourceOp = "EmitPipeRouter10",
Source = "Output",
},
["Layer3.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.Emit" }, },
["Layer3.BurnIn"] = Input { Value = 1, },
LayerName3 = Input { Value = "EmitPipeRouter10 Layer", },
["Layer4.Foreground"] = Input {
SourceOp = "VolPipeRouter11",
Source = "Output",
},
["Layer4.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.VolumeInd" }, },
["Layer4.BurnIn"] = Input { Value = 1, },
LayerName4 = Input { Value = "VolPipeRouter11 Layer", },
["Layer5.Foreground"] = Input {
SourceOp = "VolPipeRouter11",
Source = "Output",
},
["Layer5.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.VolumeDir" }, },
["Layer5.BurnIn"] = Input { Value = 1, },
LayerName5 = Input { Value = "VolPipeRouter11 Layer", }
},
ViewInfo = OperatorInfo { Pos = { -385, 841.5 } },
},
VolPipeRouter11 = PipeRouter {
NameSet = true,
Inputs = {
Input = Input {
SourceOp = "EmitPipeRouter10",
Source = "Output",
}
},
ViewInfo = PipeRouterInfo { Pos = { -330, 709.5 } },
},
EmitPipeRouter10 = PipeRouter {
NameSet = true,
Inputs = {
Input = Input {
SourceOp = "PipeRouter2_1",
Source = "Output",
}
},
ViewInfo = PipeRouterInfo { Pos = { -440, 709.5 } },
},
TransMultiMerge2_1 = MultiMerge {
NameSet = true,
Inputs = {
Background_LayerSelect = Input { Value = FuID { "ViewLayer.TransInd" }, },
LayerOrder = Input { Value = ScriptVal { {
[0] = 1,
2
} }, },
Background = Input {
SourceOp = "PipeRouter2_1",
Source = "Output",
},
["Layer1.Foreground"] = Input {
SourceOp = "PipeRouter2_1",
Source = "Output",
},
["Layer1.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.TransDir" }, },
["Layer1.BurnIn"] = Input { Value = 1, },
LayerName1 = Input { Value = "PipeRouter1 Layer", },
["Layer2.Foreground"] = Input {
SourceOp = "PipeRouter2_1",
Source = "Output",
},
["Layer2.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.TransCol" }, },
["Layer2.ApplyMode"] = Input { Value = FuID { "Multiply" }, },
LayerName2 = Input { Value = "PipeRouter1 Layer", }
},
ViewInfo = OperatorInfo { Pos = { -550, 775.5 } },
},
PipeRouter2_1 = PipeRouter {
Inputs = {
Input = Input {
SourceOp = "PipeRouter9_1",
Source = "Output",
}
},
ViewInfo = PipeRouterInfo { Pos = { -550, 709.5 } },
},
GlossMultiMerge2 = MultiMerge {
NameSet = true,
Inputs = {
Background_LayerSelect = Input { Value = FuID { "ViewLayer.GlossInd" }, },
LayerOrder = Input { Value = ScriptVal { {
[0] = 1,
2
} }, },
Background = Input {
SourceOp = "PipeRouter9_1",
Source = "Output",
},
["Layer1.Foreground"] = Input {
SourceOp = "PipeRouter9_1",
Source = "Output",
},
["Layer1.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.GlossDir" }, },
["Layer1.BurnIn"] = Input { Value = 1, },
LayerName1 = Input { Value = "PipeRouter1 Layer", },
["Layer2.Foreground"] = Input {
SourceOp = "PipeRouter9_1",
Source = "Output",
},
["Layer2.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.GlossCol" }, },
["Layer2.ApplyMode"] = Input { Value = FuID { "Multiply" }, },
LayerName2 = Input { Value = "PipeRouter1 Layer", }
},
ViewInfo = OperatorInfo { Pos = { -715, 775.5 } },
},
PipeRouter9_1 = PipeRouter {
Inputs = {
Input = Input {
SourceOp = "PipeRouter1_1",
Source = "Output",
}
},
ViewInfo = PipeRouterInfo { Pos = { -715, 709.5 } },
},
DiffuseMultiMerge1 = MultiMerge {
NameSet = true,
Inputs = {
Background_LayerSelect = Input { Value = FuID { "ViewLayer.DiffInd" }, },
LayerOrder = Input { Value = ScriptVal { {
[0] = 1,
2
} }, },
Background = Input {
SourceOp = "PipeRouter1_1",
Source = "Output",
},
["Layer1.Foreground"] = Input {
SourceOp = "PipeRouter1_1",
Source = "Output",
},
["Layer1.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.DiffDir" }, },
["Layer1.BurnIn"] = Input { Value = 1, },
LayerName1 = Input { Value = "PipeRouter1 Layer", },
["Layer2.Foreground"] = Input {
SourceOp = "PipeRouter1_1",
Source = "Output",
},
["Layer2.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.DiffCol" }, },
["Layer2.ApplyMode"] = Input { Value = FuID { "Multiply" }, },
LayerName2 = Input { Value = "PipeRouter1 Layer", }
},
ViewInfo = OperatorInfo { Pos = { -880, 775.5 } },
},
PipeRouter1_1 = PipeRouter {
Inputs = {
Input = Input {
SourceOp = "Blur2",
Source = "Output",
}
},
ViewInfo = PipeRouterInfo { Pos = { -880, 709.5 } },
},
Blur2 = Blur {
Inputs = {
ProcessLayers = Input { Value = FuID { ":Custom" }, },
ProcessLayersCustom = Input { Value = ScriptVal { {
[2] = "ViewLayer.Emit"
} }, },
Filter = Input { Value = FuID { "Fast Gaussian" }, },
XBlurSize = Input { Value = 11.8, },
Input = Input {
SourceOp = "ColorCorrector3",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { -990, 709.5 } },
},
ColorCorrector3 = ColorCorrector {
CtrlWZoom = false,
Inputs = {
ProcessLayers = Input { Value = FuID { ":Custom" }, },
ProcessLayersCustom = Input { Value = ScriptVal { {
"ViewLayer.DiffCol",
"ViewLayer.GlossCol",
"ViewLayer.TransCol"
} }, },
WheelTintAngle1 = Input { Value = 0.131915424783331, },
WheelTintLength1 = Input { Value = 1, },
MasterRGBGain = Input { Value = 3.92, },
ColorRanges = 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 }
}
}
}
},
},
HistogramIgnoreTransparent = Input { Value = 1, },
Input = Input {
SourceOp = "RemoveNoise1",
Source = "Output",
},
EffectMask = Input {
SourceOp = "Cryptomatte3",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { -1100, 709.5 } },
},
Cryptomatte3 = Cryptomatte {
Inputs = {
Input = Input {
SourceOp = "Loader22_1_1",
Source = "Output",
},
OutputToAlpha = Input { Value = 1, },
MatteOrder = Input { Value = ScriptVal { {
[0] = 0
} }, },
CLC_MatteName_0 = Input { Value = "scene", }
},
ViewInfo = OperatorInfo { Pos = { -1155, 775.5 } },
},
RemoveNoise1 = RemoveNoise {
Inputs = {
ProcessLayers = Input { Value = FuID { ":Custom" }, },
ProcessLayersCustom = Input { Value = ScriptVal { {
"ViewLayer.DiffDir",
"ViewLayer.DiffInd",
"ViewLayer.Noisy Image",
"ViewLayer.Noisy Shadow Catcher",
"ViewLayer.GlossDir",
"ViewLayer.GlossInd"
} }, },
Lock = Input { Value = 1, },
SoftnessRed = Input { Value = 0.00386, },
Input = Input {
SourceOp = "Loader22_1_1",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { -1210, 709.5 } },
},
Loader22_1_1 = Loader {
Clips = {
Clip {
ID = "Clip1",
Filename = "D:\\Temp\\testshotsbs\\EXRs\\BlenderCartest0000.exr",
FormatID = "OpenEXRFormat",
LengthSetManually = true,
TrimIn = 0,
TrimOut = 0,
ExtendFirst = 0,
ExtendLast = 0,
Loop = 0,
AspectMode = 0,
Depth = 0,
TimeCode = 0,
GlobalStart = 0,
GlobalEnd = 0
}
},
Inputs = {
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
["Clip1.OpenEXRFormat.DeepOutputMode"] = Input { Disabled = true, },
["Clip1.OpenEXRFormat.Channels"] = Input { Value = 1, },
["Clip1.OpenEXRFormat.RedName"] = Input { Value = FuID { "ViewLayer.Noisy Image.R" }, },
["Clip1.OpenEXRFormat.GreenName"] = Input { Value = FuID { "ViewLayer.Noisy Image.G" }, },
["Clip1.OpenEXRFormat.BlueName"] = Input { Value = FuID { "ViewLayer.Noisy Image.B" }, }
},
ViewInfo = OperatorInfo { Pos = { -1320, 709.5 } },
}
}
}
Two different things. [Main] is just what Fusion calls the layer with no name. Ideally, you wouldn't ever see that, as it just means that the layer was unnamed, and best practice would be to reserve that for cases where the layer name is not set because something broke. The default layer is the layer that is first.
goohoobler1 wrote:Here is a revised example - Note that the Default Image does not change on any nodes until the MultiMerges get involved:
You can repath to the tiny EXR Image in one of the posts earlier in the thread or replace with your own render (but would have to redo or remove the Cryptomatte node)
{
Tools = ordered() {
Loader22_1_1 = Loader {
Clips = {
Clip {
ID = "Clip1",
Filename = "D:\\Temp\\testshotsbs\\EXRs\\BlenderCartest0000.exr",
FormatID = "OpenEXRFormat",
LengthSetManually = true,
TrimIn = 0,
TrimOut = 0,
ExtendFirst = 0,
ExtendLast = 0,
Loop = 0,
AspectMode = 0,
Depth = 0,
TimeCode = 0,
GlobalStart = 0,
GlobalEnd = 0
}
},
Inputs = {
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
["Clip1.OpenEXRFormat.DeepOutputMode"] = Input { Disabled = true, },
["Clip1.OpenEXRFormat.Channels"] = Input { Value = 1, },
["Clip1.OpenEXRFormat.RedName"] = Input { Value = FuID { "ViewLayer.Noisy Image.R" }, },
["Clip1.OpenEXRFormat.GreenName"] = Input { Value = FuID { "ViewLayer.Noisy Image.G" }, },
["Clip1.OpenEXRFormat.BlueName"] = Input { Value = FuID { "ViewLayer.Noisy Image.B" }, }
},
ViewInfo = OperatorInfo { Pos = { -1320, 709.5 } },
},
RemoveNoise1 = RemoveNoise {
Inputs = {
ProcessLayers = Input { Value = FuID { ":Custom" }, },
ProcessLayersCustom = Input { Value = ScriptVal { {
"ViewLayer.DiffDir",
"ViewLayer.DiffInd",
[5] = "ViewLayer.GlossDir",
[6] = "ViewLayer.GlossInd",
[5] = "ViewLayer.TransDir",
[6] = "ViewLayer.TransInd"
} }, },
Lock = Input { Value = 1, },
SoftnessRed = Input { Value = 0.00386, },
Input = Input {
SourceOp = "Loader22_1_1",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { -1210, 709.5 } },
},
DiffuseMultiMerge1 = MultiMerge {
NameSet = true,
Inputs = {
Background_LayerSelect = Input { Value = FuID { "ViewLayer.DiffInd" }, },
LayerOrder = Input { Value = ScriptVal { {
[0] = 1,
2
} }, },
Background = Input {
SourceOp = "PipeRouter1_1",
Source = "Output",
},
["Layer1.Foreground"] = Input {
SourceOp = "PipeRouter1_1",
Source = "Output",
},
["Layer1.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.DiffDir" }, },
["Layer1.BurnIn"] = Input { Value = 1, },
LayerName1 = Input { Value = "PipeRouter1 Layer", },
["Layer2.Foreground"] = Input {
SourceOp = "PipeRouter1_1",
Source = "Output",
},
["Layer2.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.DiffCol" }, },
["Layer2.ApplyMode"] = Input { Value = FuID { "Multiply" }, },
LayerName2 = Input { Value = "PipeRouter1 Layer", }
},
ViewInfo = OperatorInfo { Pos = { -880, 775.5 } },
},
Blur2 = Blur {
Inputs = {
ProcessLayers = Input { Value = FuID { ":Custom" }, },
ProcessLayersCustom = Input { Value = ScriptVal { {
[2] = "ViewLayer.Emit"
} }, },
Filter = Input { Value = FuID { "Fast Gaussian" }, },
XBlurSize = Input { Value = 11.8, },
Input = Input {
SourceOp = "ColorCorrector3",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { -990, 709.5 } },
},
ColorCorrector3 = ColorCorrector {
CtrlWZoom = false,
Inputs = {
ProcessLayers = Input { Value = FuID { ":Custom" }, },
ProcessLayersCustom = Input { Value = ScriptVal { {
"ViewLayer.DiffCol",
"ViewLayer.GlossCol",
"ViewLayer.TransCol"
} }, },
WheelTintAngle1 = Input { Value = 0.131915424783331, },
WheelTintLength1 = Input { Value = 1, },
MasterRGBGain = Input { Value = 3.92, },
ColorRanges = 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 }
}
}
}
},
},
HistogramIgnoreTransparent = Input { Value = 1, },
Input = Input {
SourceOp = "RemoveNoise1",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { -1100, 709.5 } },
},
PipeRouter1_1 = PipeRouter {
Inputs = {
Input = Input {
SourceOp = "Blur2",
Source = "Output",
}
},
ViewInfo = PipeRouterInfo { Pos = { -880, 709.5 } },
},
GlossMultiMerge2 = MultiMerge {
NameSet = true,
Inputs = {
Background_LayerSelect = Input { Value = FuID { "ViewLayer.GlossInd" }, },
LayerOrder = Input { Value = ScriptVal { {
[0] = 1,
2
} }, },
Background = Input {
SourceOp = "PipeRouter9_1",
Source = "Output",
},
["Layer1.Foreground"] = Input {
SourceOp = "PipeRouter9_1",
Source = "Output",
},
["Layer1.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.GlossDir" }, },
["Layer1.BurnIn"] = Input { Value = 1, },
LayerName1 = Input { Value = "PipeRouter1 Layer", },
["Layer2.Foreground"] = Input {
SourceOp = "PipeRouter9_1",
Source = "Output",
},
["Layer2.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.GlossCol" }, },
["Layer2.ApplyMode"] = Input { Value = FuID { "Multiply" }, },
LayerName2 = Input { Value = "PipeRouter1 Layer", }
},
ViewInfo = OperatorInfo { Pos = { -715, 775.5 } },
},
PipeRouter9_1 = PipeRouter {
Inputs = {
Input = Input {
SourceOp = "PipeRouter1_1",
Source = "Output",
}
},
ViewInfo = PipeRouterInfo { Pos = { -715, 709.5 } },
},
TransMultiMerge2_1 = MultiMerge {
NameSet = true,
Inputs = {
Background_LayerSelect = Input { Value = FuID { "ViewLayer.TransInd" }, },
LayerOrder = Input { Value = ScriptVal { {
[0] = 1,
2
} }, },
Background = Input {
SourceOp = "PipeRouter2_1",
Source = "Output",
},
["Layer1.Foreground"] = Input {
SourceOp = "PipeRouter2_1",
Source = "Output",
},
["Layer1.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.TransDir" }, },
["Layer1.BurnIn"] = Input { Value = 1, },
LayerName1 = Input { Value = "PipeRouter1 Layer", },
["Layer2.Foreground"] = Input {
SourceOp = "PipeRouter2_1",
Source = "Output",
},
["Layer2.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.TransCol" }, },
["Layer2.ApplyMode"] = Input { Value = FuID { "Multiply" }, },
LayerName2 = Input { Value = "PipeRouter1 Layer", }
},
ViewInfo = OperatorInfo { Pos = { -550, 775.5 } },
},
PipeRouter2_1 = PipeRouter {
Inputs = {
Input = Input {
SourceOp = "PipeRouter9_1",
Source = "Output",
}
},
ViewInfo = PipeRouterInfo { Pos = { -550, 709.5 } },
},
EmitPipeRouter10 = PipeRouter {
NameSet = true,
Inputs = {
Input = Input {
SourceOp = "PipeRouter2_1",
Source = "Output",
}
},
ViewInfo = PipeRouterInfo { Pos = { -440, 709.5 } },
},
MultiMerge3_1 = MultiMerge {
Inputs = {
LayerOrder = Input { Value = ScriptVal { {
[0] = 1,
2,
3,
4,
5
} }, },
Background = Input {
SourceOp = "DiffuseMultiMerge1",
Source = "Output",
},
["Layer1.Foreground"] = Input {
SourceOp = "GlossMultiMerge2",
Source = "Output",
},
["Layer1.BurnIn"] = Input { Value = 1, },
LayerName1 = Input { Value = "GlossMultiMerge2 Layer", },
["Layer2.Foreground"] = Input {
SourceOp = "TransMultiMerge2_1",
Source = "Output",
},
["Layer2.BurnIn"] = Input { Value = 1, },
LayerName2 = Input { Value = "TransMultiMerge2_1 Layer", },
["Layer3.Foreground"] = Input {
SourceOp = "EmitPipeRouter10",
Source = "Output",
},
["Layer3.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.Emit" }, },
["Layer3.BurnIn"] = Input { Value = 1, },
LayerName3 = Input { Value = "EmitPipeRouter10 Layer", },
["Layer4.Foreground"] = Input {
SourceOp = "VolPipeRouter11",
Source = "Output",
},
["Layer4.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.VolumeInd" }, },
["Layer4.BurnIn"] = Input { Value = 1, },
LayerName4 = Input { Value = "VolPipeRouter11 Layer", },
["Layer5.Foreground"] = Input {
SourceOp = "VolPipeRouter11",
Source = "Output",
},
["Layer5.Foreground_LayerSelect"] = Input { Value = FuID { "ViewLayer.VolumeDir" }, },
["Layer5.BurnIn"] = Input { Value = 1, },
LayerName5 = Input { Value = "VolPipeRouter11 Layer", }
},
ViewInfo = OperatorInfo { Pos = { -385, 841.5 } },
},
VolPipeRouter11 = PipeRouter {
NameSet = true,
Inputs = {
Input = Input {
SourceOp = "EmitPipeRouter10",
Source = "Output",
}
},
ViewInfo = PipeRouterInfo { Pos = { -330, 709.5 } },
}
},
ActiveTool = "ColorCorrector3"
}
goohoobler1 wrote:Disappointing....
Did you understand any of the concepts I tried desperately to explain?
I hate flogging dead horses but the addition of Layers to Fusion was one of the biggest and most important additions to the program in many years and I just want to try to get people to see and try the new elegant, efficient workflow.
However the thing about Fusion is that it can do the same thing in many different ways, so use the technique that you understand best...
{
Tools = ordered() {
Loader22_1_1_2 = Loader {
Clips = {
Clip {
ID = "Clip1",
Filename = "D:\\Temp\\testshotsbs\\EXRs\\BlenderCartest0000.exr",
FormatID = "OpenEXRFormat",
LengthSetManually = true,
TrimIn = 0,
TrimOut = 0,
ExtendFirst = 0,
ExtendLast = 0,
Loop = 0,
AspectMode = 0,
Depth = 0,
TimeCode = 0,
GlobalStart = 0,
GlobalEnd = 0
}
},
CtrlWZoom = false,
Inputs = {
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
["Clip1.OpenEXRFormat.DeepOutputMode"] = Input { Disabled = true, },
["Clip1.OpenEXRFormat.Channels"] = Input { Value = 1, },
["Clip1.OpenEXRFormat.RedName"] = Input { Value = FuID { "ViewLayer.Noisy Image.R" }, },
["Clip1.OpenEXRFormat.GreenName"] = Input { Value = FuID { "ViewLayer.Noisy Image.G" }, },
["Clip1.OpenEXRFormat.BlueName"] = Input { Value = FuID { "ViewLayer.Noisy Image.B" }, }
},
ViewInfo = OperatorInfo { Pos = { 384, 25.5455 } },
},
diffind = BrightnessContrast {
NameSet = true,
Inputs = {
Input_LayerSelect = Input { Value = FuID { "ViewLayer.DiffInd" }, },
Input = Input {
SourceOp = "Loader22_1_1_2",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { 549, 25.5455 } },
},
diffdir = BrightnessContrast {
NameSet = true,
Inputs = {
Input_LayerSelect = Input { Value = FuID { "ViewLayer.DiffDir" }, },
Input = Input {
SourceOp = "diffind",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { 659, 25.5455 } },
},
diffcol = BrightnessContrast {
NameSet = true,
Inputs = {
Input_LayerSelect = Input { Value = FuID { "ViewLayer.DiffCol" }, },
Input = Input {
SourceOp = "diffdir",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { 769, 25.5455 } },
},
AO = BrightnessContrast {
NameSet = true,
Inputs = {
Input_LayerSelect = Input { Value = FuID { "ViewLayer.AO" }, },
Input = Input {
SourceOp = "diffcol",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { 879, 25.5455 } },
},
glossind = BrightnessContrast {
NameSet = true,
Inputs = {
Input_LayerSelect = Input { Value = FuID { "ViewLayer.GlossInd" }, },
Input = Input {
SourceOp = "AO",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { 1044, 58.5455 } },
},
glossdir = BrightnessContrast {
NameSet = true,
Inputs = {
Input_LayerSelect = Input { Value = FuID { "ViewLayer.GlossDir" }, },
Input = Input {
SourceOp = "glossind",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { 1154, 58.5455 } },
},
glosscol = BrightnessContrast {
NameSet = true,
Inputs = {
Input_LayerSelect = Input { Value = FuID { "ViewLayer.GlossCol" }, },
Input = Input {
SourceOp = "glossdir",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { 1264, 58.5455 } },
},
transind = BrightnessContrast {
NameSet = true,
Inputs = {
Input_LayerSelect = Input { Value = FuID { "ViewLayer.TransInd" }, },
Input = Input {
SourceOp = "glosscol",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { 1429, 25.5455 } },
},
diffuse = MultiMerge {
NameSet = true,
Inputs = {
LayerOrder = Input { Value = ScriptVal { {
[0] = 1,
2,
3
} }, },
Background = Input {
SourceOp = "diffind",
Source = "Output",
},
["Layer1.Foreground"] = Input {
SourceOp = "diffdir",
Source = "Output",
},
["Layer1.BurnIn"] = Input { Value = 1, },
LayerName1 = Input { Value = "diffdir Layer", },
["Layer2.Foreground"] = Input {
SourceOp = "diffcol",
Source = "Output",
},
["Layer2.ApplyMode"] = Input { Value = FuID { "Multiply" }, },
LayerName2 = Input { Value = "diffcol Layer", },
["Layer3.Foreground"] = Input {
SourceOp = "AO",
Source = "Output",
},
["Layer3.ApplyMode"] = Input { Value = FuID { "Multiply" }, },
LayerName3 = Input { Value = "AO Layer", },
LayerEnabled3 = Input { Value = 0, }
},
ViewInfo = OperatorInfo { Pos = { 659, 157.545 } },
},
glossy = MultiMerge {
NameSet = true,
Inputs = {
LayerOrder = Input { Value = ScriptVal { {
[0] = 1,
2
} }, },
Background = Input {
SourceOp = "glossind",
Source = "Output",
},
["Layer1.Foreground"] = Input {
SourceOp = "glossdir",
Source = "Output",
},
["Layer1.BurnIn"] = Input { Value = 1, },
LayerName1 = Input { Value = "glossdir Layer", },
["Layer2.Foreground"] = Input {
SourceOp = "glosscol",
Source = "Output",
},
["Layer2.ApplyMode"] = Input { Value = FuID { "Multiply" }, },
LayerName2 = Input { Value = "glosscol Layer", }
},
ViewInfo = OperatorInfo { Pos = { 1155.33, 157.545 } },
},
transparent = MultiMerge {
NameSet = true,
Inputs = {
LayerOrder = Input { Value = ScriptVal { {
[0] = 1,
2
} }, },
Background = Input {
SourceOp = "transind",
Source = "Output",
},
["Layer1.Foreground"] = Input {
SourceOp = "transdir",
Source = "Output",
},
["Layer1.BurnIn"] = Input { Value = 1, },
LayerName1 = Input { Value = "transdir Layer", },
["Layer2.Foreground"] = Input {
SourceOp = "transcol",
Source = "Output",
},
["Layer2.ApplyMode"] = Input { Value = FuID { "Multiply" }, },
LayerName2 = Input { Value = "transcol Layer", }
},
ViewInfo = OperatorInfo { Pos = { 1539, 157.545 } },
},
transdir = BrightnessContrast {
NameSet = true,
Inputs = {
Input_LayerSelect = Input { Value = FuID { "ViewLayer.TransDir" }, },
Input = Input {
SourceOp = "transind",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { 1539, 25.5455 } },
},
transcol = BrightnessContrast {
NameSet = true,
Inputs = {
Input_LayerSelect = Input { Value = FuID { "ViewLayer.TransCol" }, },
Input = Input {
SourceOp = "transdir",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { 1649, 25.5455 } },
},
emit = BrightnessContrast {
NameSet = true,
Inputs = {
Input_LayerSelect = Input { Value = FuID { "ViewLayer.Emit" }, },
Input = Input {
SourceOp = "transcol",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { 1814, 57.3334 } },
},
volind = BrightnessContrast {
NameSet = true,
Inputs = {
Input_LayerSelect = Input { Value = FuID { "ViewLayer.VolumeInd" }, },
Input = Input {
SourceOp = "emit",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { 1979, 25.5455 } },
},
voldir = BrightnessContrast {
NameSet = true,
Inputs = {
Input_LayerSelect = Input { Value = FuID { "ViewLayer.VolumeDir" }, },
Input = Input {
SourceOp = "volind",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { 2089, 25.5455 } },
},
All = MultiMerge {
NameSet = true,
Inputs = {
LayerOrder = Input { Value = ScriptVal { {
[0] = 1,
2,
3,
4,
5
} }, },
Background = Input {
SourceOp = "diffuse",
Source = "Output",
},
["Layer1.Foreground"] = Input {
SourceOp = "glossy",
Source = "Output",
},
["Layer1.BurnIn"] = Input { Value = 1, },
LayerName1 = Input { Value = "glossy Layer", },
["Layer2.Foreground"] = Input {
SourceOp = "transparent",
Source = "Output",
},
["Layer2.BurnIn"] = Input { Value = 1, },
LayerName2 = Input { Value = "transparent Layer", },
["Layer3.Foreground"] = Input {
SourceOp = "emit",
Source = "Output",
},
["Layer3.BurnIn"] = Input { Value = 1, },
LayerName3 = Input { Value = "emit Layer", },
["Layer4.Foreground"] = Input {
SourceOp = "volind",
Source = "Output",
},
["Layer4.BurnIn"] = Input { Value = 1, },
LayerName4 = Input { Value = "volind Layer", },
["Layer5.Foreground"] = Input {
SourceOp = "voldir",
Source = "Output",
},
["Layer5.BurnIn"] = Input { Value = 1, },
LayerName5 = Input { Value = "voldir Layer", }
},
ViewInfo = OperatorInfo { Pos = { 1484, 289.545 } },
}
}
}
Kel Philm wrote:given each node has overheads in operation (copying data, caching etc...) I would think there are reasonable performance gains to be made.
Kel Philm wrote:e.g. One Multimerge node vs 'n' Merge nodes
Chad Capeland wrote:...but now a rendered tool might only be valid for the layer requested, and when you request a different layer, that tool needs to render again. Consider the implications on disk caching...
Hendrik Proosa wrote:Chad Capeland wrote:...but now a rendered tool might only be valid for the layer requested, and when you request a different layer, that tool needs to render again. Consider the implications on disk caching...
That would depend on the cache granularity, wouldn't it? If each layer were cached only the invalid ones would need to be processed, just as if they were explicitly separated in the flow.
Chad Capeland wrote:Yes, not compositing is indeed faster than compositing.
Sam Steti wrote:Chad, thx for answering...
However, BMD dropped the person mode one version ago, stating that the object mode was still better anyway. This doesn't change the fact that MM2 is only available in Color...
Kel Philm wrote:there is no need for comments like 'Yes, not compositing is indeed faster than compositing.'
Users browsing this forum: No registered users and 8 guests