set cut_paste_input [stack 0]
version 11.3 v5
push $cut_paste_input
Dot {
name Dot1
label BG
note_font_size 24
selected true
xpos 1315
ypos -317
}
Retime {
input.first 1001
input.last 1221
output.first 1001
output.last 1111
speed 2
shutter 0
time ""
name Retime3
selected true
xpos 1281
ypos -253
}
Reformat {
format "3200 1800 0 0 3200 1800 1 "
name Reformat2
selected true
xpos 1281
ypos -218
}
Transform {
translate {1128 -470}
scale {{FOV_Calculator2.factor x1001 0 x1018 0}}
center {1580 916}
name Transform2
selected true
xpos 1281
ypos -160
}
set Nc5e51400 [stack 0]
push 0
push 0
Dot {
name Dot2
label FG
note_font_size 24
selected true
xpos 1654
ypos -309
}
Group {
name LensMeta1
selected true
xpos 1620
ypos -202
addUserKnob {20 User}
addUserKnob {7 focallength l "focal length"}
focallength {{"\[metadata \"ext/Lens Focal Length\"]"}}
addUserKnob {7 focusdistance l "focus distance"}
focusdistance {{"\[metadata \"ext/Lens Focus Distance\"]"}}
}
Input {
inputs 0
name Input1
xpos 0
}
Output {
name Output1
xpos 0
ypos 300
}
end_group
Group {
name FOV_Calculator2
selected true
xpos 1620
ypos -157
addUserKnob {20 User}
addUserKnob {26 BG_info l "Panasonic GH5s" T "has a sensor size of 17.3 x 13 mm"}
addUserKnob {7 lengthBG l "length BG" R 0 100}
lengthBG 17.3
addUserKnob {7 focallengthBG l "focal length BG" R 0 200}
focallengthBG 10
addUserKnob {7 angleBG l "angle BG" t "\t\t\t\t\t\t" R 0 180}
angleBG {{"2 * atan (lengthBG / 2 / focallengthBG) * 180 / pi"}}
addUserKnob {26 ""}
addUserKnob {26 FG_Info l "Alexa Mini" T "has a sensor size of 26.4 x 14.85 mm"}
addUserKnob {26 Lens_Info l "Vantage One" T "Lenses: 17.5 21 25 32 40 50 65 90 120"}
addUserKnob {7 lengthFG l "length FG" R 0 100}
lengthFG 26.4
addUserKnob {7 focallengthFG l "focal length FG" R 0 200}
focallengthFG {{"\[metadata \"ext/Lens Focal Length\"]"}}
addUserKnob {7 angleFG l "angle FG" R 0 180}
angleFG {{"2 * atan (lengthFG / 2 / focallengthFG) * 180 / pi"}}
addUserKnob {26 ""}
addUserKnob {7 factor l "scaling factor for BG" R 0 5}
factor {{angleBG/angleFG}}
}
Input {
inputs 0
name Input1
selected true
xpos 1
ypos 237
}
Output {
name Output1
xpos 1
ypos 299
}
end_group
IBKGizmoV3 {
inputs 3
name IBKGizmoV3_2
xpos 1620
ypos 111
st pick
colour {0.02357788756 0.03127772361 0.1555380225}
}
Constant {
inputs 0
color 100
format "3200 1800 0 0 3200 1800 1 "
name Constant1
selected true
xpos 980
ypos -314
}
Dot {
name Dot4
label Depth
note_font_size 24
selected true
xpos 1014
ypos -121
}
Dot {
name Dot3
selected true
xpos 1014
ypos 78
}
push $Nc5e51400
Copy {
inputs 2
from0 rgba.alpha
to0 depth.Z
name Copy2
selected true
xpos 1281
ypos 68
}
Group {
name OpticalZDefocus2
help "OpticalZDefocus is a physically accurate ZDefocus, which controls circle of confusion (coc) size based on lens geometry using the depth of field equation. \n\nSet your lens and film-back characteristics, your focus distance, and adjust the size of your bokeh with the aperture size, just like a real lens."
tile_color 0xcc804eef
selected true
xpos 1281
ypos 127
addUserKnob {20 OpticalZDefocus}
addUserKnob {41 channels T _ZDEFOCUS_.channels}
addUserKnob {41 useGPUIfAvailable l "Use GPU if available" T _ZDEFOCUS_.useGPUIfAvailable}
addUserKnob {26 ""}
addUserKnob {41 depth_channel l "depth channel" t "Choose the channel that contains your Z-Depth" T CHANNEL_CHOOSER_DEPTH.Zchan}
addUserKnob {26 spacer l " " -STARTLINE T " "}
addUserKnob {6 unpremult_z l " unpremult by" t "Unpremultiply the depth layer by the selected channel" -STARTLINE}
addUserKnob {41 depth_alpha l "" -STARTLINE T CHANNEL_CHOOSER_ALPHA.Zchan}
addUserKnob {22 set_z l "Sample Z" t "Sets the focal distance to the Z channel value at the current focal point on the current frame." T "from __future__ import with_statement\n\nn = nuke.thisNode()\ns = n\['s']\nz_coord = n\['sample_z']\n\nwith n:\n ds = nuke.toNode('DepthSampler')\n zsample = ds.sample('red', z_coord.getValue(0), z_coord.getValue(1))\n\nif s.isAnimated():\n s.setValueAt(zsample, nuke.frame())\nelse:\n s.setValue(zsample)" +STARTLINE}
addUserKnob {12 sample_z l " sample position: " t "Allows you to sample the Z channel at a specific 2d position." -STARTLINE}
sample_z {3418 1254}
addUserKnob {4 depth_unit l "depth unit" t "Set the unit of your zdepth." M {mm cm dm m inch ft}}
depth_unit m
addUserKnob {26 spacer2 l "" t " " -STARTLINE T " "}
addUserKnob {6 show_coc l "show coc" t "Output the calculated direct circle of confusion size map that is used to drive the ZDefocus in direct mode.\n\nUseful for troubleshooting." -STARTLINE}
addUserKnob {6 invert_depth l depth=1/z t "Invert the depth if your input is Nuke ScanlineRender style 1/Z" -STARTLINE}
addUserKnob {26 divider l " " T " "}
addUserKnob {26 ""}
addUserKnob {26 dof_control_label l " " T "Depth of Field Control"}
addUserKnob {41 constant_defocus l "constant defocus" t "If enabled, depth-varying defocus is disabled and defocus amount is controlled directly by the max defocus slider." T _ghost_whisper_.constant_defocus}
addUserKnob {7 s l "focus distance" t "Set the focus distance" R 10 1000}
s {{LensMeta1.focusdistance}}
addUserKnob {7 N l f-stop t "Controls the aperture of your lens.\n\nBigger number = greater depth of field. \n\nSmaller numbers = shallower depth of field." R 0.8 44}
N 2.8
addUserKnob {41 max_size l "max defocus" t "Set the max defocus size allowed" T _ZDEFOCUS_.max_size}
addUserKnob {26 ""}
addUserKnob {26 lens_geometry_label l " " T "Lens Geometry"}
addUserKnob {22 get_selected_camera l "Get Selected Camera" t "Set the parameters using the selected camera." T "from __future__ import with_statement\n\ndef get_camera():\n ozdef = nuke.thisNode()\n with nuke.root():\n root_par = nuke.root().format().pixelAspect()\n cam = nuke.selectedNodes()\n if len(cam) != 1:\n nuke.message('Please select a single camera node.')\n return\n elif len(cam) == 0:\n nuke.message('Please select a single camera node.')\n return\n else:\n cam = cam\[0]\n if 'Camera2' not in cam.Class():\n nuke.message('Please select a camera node.')\n return\n ozdef\['f'].setValue(cam\['focal'].getValue())\n ozdef\['N'].setValue(cam\['fstop'].getValue())\n # Assuming anamorphic shows have physical haperture*2\n ozdef\['haperture'].setValue(cam\['haperture'].getValue()/root_par)\n\nif __name__ == \"__main__\":\n get_camera()" +STARTLINE}
addUserKnob {41 use_camera_input l "use camera input" -STARTLINE T _ghost_whisper_.use_camera_input}
addUserKnob {7 f l "focal length" t "Set the focal length of the camera" R 0 500}
f {{LensMeta1.focallength}}
addUserKnob {7 haperture t "Horizontal aperture of the film-back / sensor" R 0 50}
haperture 26.4
addUserKnob {26 ""}
addUserKnob {7 min_zdepth l "min zdepth" t "If ZDepth = 0, ZDepth will be set to the specified value.\n\nThe ZDefocus node can be very slow to calculate if you have zero values in your zdepth, for example if you have areas that have transparent alpha. \n\nSet min zdepth to a value slightly smaller than the nearest object in your scene to speed up processing time." R 0 20}
min_zdepth 1
addUserKnob {41 autoLayerSpacing l "automatic layer spacing" T _ZDEFOCUS_.autoLayerSpacing}
addUserKnob {41 layers l "depth layers" T _ZDEFOCUS_.layers}
addUserKnob {41 layerCurve l "layer curve" T _ZDEFOCUS_.layerCurve}
addUserKnob {26 ""}
addUserKnob {20 Filter}
addUserKnob {41 filter_type_1 l "filter type" T _ZDEFOCUS_.filter_type}
addUserKnob {7 aspect_ratio R 0 2}
aspect_ratio 1
addUserKnob {7 filter_shape}
filter_shape 1
addUserKnob {3 blades}
blades 9
addUserKnob {7 roundness}
roundness 0.2
}
ZBlur {
inputs 0
channels rgba
shape 1
name CHANNEL_CHOOSER_DEPTH
xpos -442
ypos 230
disable true
}
ZBlur {
channels rgba
Zchan rgba.alpha
shape 1
name CHANNEL_CHOOSER_ALPHA
xpos -442
ypos 270
disable true
}
Input {
inputs 0
name Input
label "\[value number]"
xpos -308
ypos -16
}
Dot {
name _ghost_whisper_
knobChanged "\n\n\nthisknob = nuke.thisKnob()\nnode = nuke.thisNode()\nnuke.root().begin()\nparent_node = nuke.toNode(node.fullName().split('.')\[0])\nparent_node.begin()\n\ndef enable_knobs(enabled=True, caminput=False):\n if caminput:\n knobs = \['get_selected_camera', 'f', 'haperture']\n else:\n knobs = \['min_zdepth', 'get_selected_camera', 'f', 's', 'N', 'haperture']\n for knob in knobs:\n parent_node\[knob].setEnabled(enabled)\n\nif thisknob.name() == 'constant_defocus':\n is_const = node\['constant_defocus'].getValue()\n if is_const:\n enable_knobs(False)\n else:\n enable_knobs()\n\nif thisknob.name() == 'use_camera_input':\n if thisknob.getValue():\n enable_knobs(False, True)\n cam_input = nuke.nodes.Input(name='InputCamera', xpos=228, ypos=-16)\n parent_node\['f'].setExpression('\[topnode input2].focal')\n parent_node\['haperture'].setExpression('\[topnode input2].haperture')\n if not thisknob.getValue():\n if not parent_node\['constant_defocus'].getValue():\n enable_knobs(True, True)\n parent_node.setInput(2, None)\n nuke.delete(nuke.toNode('InputCamera'))\n parent_node\['f'].clearAnimated()\n parent_node\['haperture'].clearAnimated()\n\n\n"
tile_color 0x129000ff
note_font_size 42
note_font_color 0x7f7f7f01
xpos -274
ypos 114
addUserKnob {20 User}
addUserKnob {6 constant_defocus t "Disables depth-varying defocus. \nBokeh size is directly controlled by max defocus." +STARTLINE}
addUserKnob {6 use_camera_input l "use camera input" t "Creates a camera input pipe instead so that no user action is required." +STARTLINE}
}
set Nc5eb6000 [stack 0]
Dot {
name Dot7
note_font_size 42
note_font_color 0x7f7f7f01
xpos -542
ypos 114
}
AddChannels {
channels depth
channels2 rgba
name AddChannels1
xpos -576
ypos 144
}
set Nc5ef3800 [stack 0]
push $Nc5ef3800
Copy {
inputs 2
from0 {{{CHANNEL_CHOOSER_DEPTH.Zchan}}}
to0 rgba.red
from1 {{{CHANNEL_CHOOSER_ALPHA.Zchan}}}
to1 rgba.alpha
bbox B
name _CHOOSE_CHANNELS_
xpos -576
ypos 218
disable {{hasError}}
}
Unpremult {
name _UNPREMULT_Z_
xpos -576
ypos 310
disable {{!parent.unpremult_z}}
}
Expression {
temp_name3 max_dist
temp_expr3 100000
expr0 "r == 0 ? max_dist : 1/r"
channel1 none
channel2 none
name DepthInvert
xpos -576
ypos 350
disable {{!parent.invert_depth}}
}
set Nc5ef2c00 [stack 0]
Multiply {
channels rgb
value {{"parent.depth_unit == 1 ? 10 : parent.depth_unit == 2 ? 100 : parent.depth_unit == 3 ? 1000 : parent.depth_unit == 4 ? 25.4 : parent.depth_unit == 5 ? 304.8 : 1"}}
name _UNIT_MULTIPLIER_
xpos -576
ypos 390
addUserKnob {20 User}
addUserKnob {7 depth_unit_divider R 0 500}
depth_unit_divider {{"parent.depth_unit == 1 ? 10 : parent.depth_unit == 2 ? 100 : parent.depth_unit == 3 ? 1000 : parent.depth_unit == 4 ? 25.4 : parent.depth_unit == 5 ? 304.8 : 1"}}
}
Expression {
temp_name0 zdepth
temp_expr0 "r < parent.min_zdepth* _UNIT_MULTIPLIER_.value ? parent.min_zdepth* _UNIT_MULTIPLIER_.value : r"
temp_name1 focus_dist
temp_expr1 "s * _UNIT_MULTIPLIER_.value"
temp_name2 coc
temp_expr2 "(fabs(focus_dist - zdepth) * pow(f,2) / (N * zdepth * (focus_dist - f)))"
temp_name3 coc_px
temp_expr3 "fabs(coc / haperture * input.width / 2)"
channel0 rgba
expr0 "parent.constant_defocus ? parent.max_size : coc_px"
channel1 none
name Generate_Direct_Z
selected true
xpos -576
ypos 429
addUserKnob {20 Optical l "Optical Characteristics"}
addUserKnob {7 f l "focal length" R 0 500}
f {{parent.f}}
addUserKnob {7 N l f-stop R 0 44}
N {{parent.N}}
addUserKnob {7 haperture R 0 50}
haperture {{parent.haperture}}
addUserKnob {7 s l "focus distance" R 0 1000}
s {{parent.s}}
}
Dot {
name Dot3
note_font_size 42
note_font_color 0x7f7f7f01
xpos -542
ypos 514
}
set Nc5ef2000 [stack 0]
Dot {
name Dot2
note_font_size 42
note_font_color 0x7f7f7f01
xpos -542
ypos 1034
}
Input {
inputs 0
name InputFilter
label "\[value number]"
xpos 94
ypos -16
number 1
}
Reformat {
type scale
scale {1 {1/parent.aspect_ratio}}
resize distort
name _aspect_ratio_1
xpos 94
ypos 390
}
Dot {
inputs 0
name Dot1
label " Default Filter Input"
note_font "Helvetica Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold"
note_font_size 24
note_font_color 0xff000000
xpos 262
ypos 314
}
Reformat {
type "to box"
box_fixed true
name Reformat1
xpos 228
ypos 390
}
Flare {
position {{width/2} {height/2}}
radius {75 88 91}
inner_color 1
name Flare3
xpos 228
ypos 430
}
Reformat {
type scale
scale {1 {1/parent.aspect_ratio}}
resize distort
name _aspect_ratio_2
xpos 228
ypos 470
}
Shuffle {
alpha red
name Shuffle1
label "\[value in]"
xpos 228
ypos 504
}
Switch {
inputs 2
which {{"\[exists parent.input1]"}}
name Switch3
xpos 94
ypos 510
}
Dot {
name Dot6
label " "
note_font "Helvetica Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold"
note_font_size 24
note_font_color 0xff000000
xpos 128
ypos 594
}
push $Nc5ef2000
push $Nc5eb6000
Dot {
name Dot4
label " "
note_font "Helvetica Bold Bold Bold Bold Bold Bold Bold Bold Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -274
ypos 434
}
add_layer {opticalzdefocus opticalzdefocus.Z}
Copy {
inputs 2
from0 rgba.red
to0 opticalzdefocus.Z
bbox B
name _Copy_ZDepth_
xpos -308
ypos 504
}
ZDefocus2 {
inputs 2
channels rgba
z_channel opticalzdefocus.Z
math direct
focal_point {16540 12700}
size 1
max_size 100
legacy_resize_mode false
show_legacy_resize_mode false
use_input_channels true
aspect {{parent.aspect_ratio}}
blades {{parent.blades}}
roundness {{parent.roundness}}
inner_feather 0.28
catadioptric_size 0.375
name _ZDEFOCUS_
xpos -308
ypos 584
}
Remove {
channels opticalzdefocus
name Remove1
xpos -308
ypos 659
}
Switch {
inputs 2
which {{parent.show_coc}}
name _SHOW_COC_
xpos -308
ypos 1030
}
Output {
name Output1
xpos -308
ypos 1230
}
push $Nc5ef2c00
NoOp {
name DepthSampler
xpos -710
ypos 350
addUserKnob {20 User}
addUserKnob {7 sval R 0 1000}
}
end_group
Merge2 {
inputs 2
name Merge2
selected true
xpos 1281
ypos 334
}
# Creation Time=Tue May 5 12:19:08 2020
# Creator=ne