【Nuke插件】Fractal Blur 1.6 分形模糊

31 七月, 2014
644
5

fractal-blur_banner01

这个插件是Framestore公司自己写的一个非常有用的内部插件称为“fractalBlur”。它本质上只是一个blur和有noise结合起来,使软化的图像不具有平滑渐变。它确实有助于隐藏软边遮罩所在的组合图像使具有更多质感。Richard frazer有段时间工作几乎抓狂,因为每一个素材几乎完全由自然纹理(森林,林木,皮毛等)组成,每一个都必须使用fractalBlur来处理软化的边缘。而这个插件并没有在Nuke中发现有等价值的节点,所以为大家分享出来。(这几天在看Richard frazer的blog发现真的是好人啊,写的都是实在的经验之谈)

现实中的问题

fractal-blur_demo01

以上述的例子。这里的A和B素材,需要结合有更多不同的纹理。我们创建一个遮罩使用一个Roto形状和较大的模糊边缘。但当素材合并时重叠区失去了很多的纹理,在遮罩有部分透明度合成图像看起来柔软的(很难看到一个很大的压缩图像的一个网站上,但当作用于电影版分辨率就变得非常明显了)。
类似的事情发生在使用cloning / paint图像上的软笔刷,作用在没有被去噪画面区域,看上去会比没有使用笔刷的区域更加模糊柔软。当你遮罩有很大,Roto有羽化,这仅仅是同一个问题的放大版。
另一个要考虑的是光滑的,线性梯度性质不会发生。即使是湛蓝的天空不只是一个简单的,线性斜坡从一个蓝色的另一个。总是会有一些细微的不规则性。所以当我们使用Roto形状/渐变作为遮罩,我们得注意到,作为程序模糊/羽化的线性性质看起来不自然。

解决方案

fractal-blur_demo02

为了解决这个问题,我们可以产生一个噪波乘以遮罩区域破坏模糊的区域的规整。我已经在既定的这种情况下,得到了晶粒尺寸的东西,大致符合素材的整体外观。尽管损失了遮罩区域大小,但渐变混合边缘也变得不明显了。把这些节点在Nuke中打组并增加了一些旋钮控制噪波的大小,对比度等。

fractal-blur_panel01fractal_blur_levels01

其他注意事项

值得注意的是产生的噪波本身不能随着素材运动而运动,必须使用track匹配镜头素材的运动,不然会产生滑动赶脚。

fractal-blur_nodes01

插件使用案例

在这个例子中,我们使用这个“冰球”背景贴图和一些调整,我们可以生成一个草样的纹理。你可以下载下面的贴图使用到自己的合成中,大小可以自行调节合适。

hockey-ice-background_thumb01

这个已经被证明很适合作用于合成草地和背景。

fractal-blur-texture-demo01

原作者没有给出详细使用流程,我给大家提供一个节点图,当使用自定义贴图时候插件会自动切换到读取贴图,但值得注意的是他获取的是贴图A通道信息,所以我们需要拷贝RGB三个中任意通道到A通道即可使用,shuffle后面可以使用例如reformat、transform等节点调整贴图大小,控制贴图影响区域。

fractal-blur-texture-demo02 fractal-blur-texture-demo03

复制下面代码到Nuke中或者下载Gizmo安装

set cut_paste_input [stack 0]
version 8.0 v1
push 0
push $cut_paste_input
Group {
 inputs 2
 name Fractal_Blur1
 selected true
 xpos -195
 ypos 76
 addUserKnob {20 User}
 addUserKnob {7 FractalBlur_UserDilate l Spread R 0 200}
 FractalBlur_UserDilate 91.5
 addUserKnob {7 FractalBlur_UserGrainSize l "Grain Size" R 0 100}
 FractalBlur_UserGrainSize 37.4
 addUserKnob {7 FractalBlur_UserContrast l Contrast}
 FractalBlur_UserContrast 0.214
 addUserKnob {7 FractalBlur_UserGamma l Gamma R 0 5}
 FractalBlur_UserGamma 0.47
 addUserKnob {6 FractalBlur_UserBlackWhite l "Make black and white" +STARTLINE}
 addUserKnob {7 FractalBlur_UserThreshold l Threshold}
 addUserKnob {6 FractalBlur_UserBW l "Clamp output" +STARTLINE}
 FractalBlur_UserBW true
 addUserKnob {26 ""}
 addUserKnob {7 FractalBlur_UserGrainEvolve l "Grain Evolution" t "Keyframe this value to animate the grain" R 0 10}
 FractalBlur_UserGrainEvolve 0.28
 addUserKnob {26 ""}
 addUserKnob {26 instructions l "" +STARTLINE T "Plug a texture into Input2 to use that instead of noise"}
 addUserKnob {26 ""}
}
 Input {
  inputs 0
  name TEXTURE
  xpos 1874
  ypos -423
 }
 Dot {
  name Dot2
  xpos 1908
  ypos -118
 }
set N1ad86160 [stack 0]
 Input {
  inputs 0
  name ALPHA
  xpos 1516
  ypos -452
  number 1
 }
 Dot {
  name Dot3
  xpos 1550
  ypos -370
 }
set N1ad86f20 [stack 0]
 Dot {
  name Dot1
  xpos 1748
  ypos -370
 }
 Shuffle {
  red black
  green black
  blue black
  alpha black
  name Shuffle10
  xpos 1714
  ypos -238
 }
 Noise {
  size {{"\[value FractalBlur_UserGrainSize]" i}}
  zoffset {{"\[value FractalBlur_UserGrainEvolve]" i}}
  center {1024 778}
  name Noise1
  xpos 1714
  ypos -166
 }
set N1ad87970 [stack 0]
 Switch {
  inputs 2
  which {{parent.altInput}}
  name Switch4
  xpos 1874
  ypos -65
 }
push $N1ad86160
push $N1ad87970
 Switch {
  inputs 2
  which {{"parent.input0.name +1"}}
  name Switch3
  xpos 1714
  ypos -122
 }
set N30a625a0 [stack 0]
 Invert {
  name Invert4
  xpos 1714
  ypos -67
 }
push $N1ad86f20
 Blur {
  size {{"\[value FractalBlur_UserDilate]" i x101 0}}
  name Blur1
  xpos 1516
  ypos -313
 }
 FilterErode {
  channels rgba
  size {{"(-\[value FractalBlur_UserDilate])/2" i x1 0}}
  filter gaussian
  name FilterErode7
  xpos 1516
  ypos -216
 }
 Dot {
  name Dot10
  xpos 1550
  ypos -133
 }
set N1ad88aa0 [stack 0]
 Merge2 {
  inputs 2
  operation minus
  name Merge2
  xpos 1660
  ypos -6
 }
 Invert {
  name Invert3
  xpos 1660
  ypos 51
 }
push $N1ad88aa0
 Merge2 {
  inputs 2
  operation multiply
  name Merge13
  xpos 1516
  ypos 57
 }
set N1ad894f0 [stack 0]
 Clamp {
  name Clamp1
  xpos 1408
  ypos 116
 }
 Grade {
  channels rgba
  blackpoint {{FractalBlur_UserThreshold i}}
  whitepoint {{FractalBlur_UserThreshold i}}
  name Grade1
  xpos 1408
  ypos 195
 }
push $N1ad894f0
 Switch {
  inputs 2
  which {{FractalBlur_UserBlackWhite i x47 1}}
  name Switch1
  xpos 1516
  ypos 249
 }
 Grade {
  channels rgba
  blackpoint {{FractalBlur_UserContrast i}}
  whitepoint {{1-FractalBlur_UserContrast i}}
  gamma {{FractalBlur_UserGamma i x101 0.985}}
  name Grade5
  xpos 1516
  ypos 330
 }
set N30fbd6b0 [stack 0]
 Clamp {
  name Clamp2
  xpos 1413
  ypos 372
 }
push $N30fbd6b0
 Switch {
  inputs 2
  which {{FractalBlur_UserBW i x47 0}}
  name Switch2
  xpos 1517
  ypos 464
 }
 Shuffle {
  red alpha
  green alpha
  blue alpha
  name Shuffle15
  xpos 1517
  ypos 532
 }
 Output {
  name Output1
  xpos 1517
  ypos 611
 }
push $N1ad87970
push 0
push $N30a625a0
 Viewer {
  inputs 3
  input_process false
  name Viewer1
  xpos 1303
  ypos -180
 }
end_group

本文转载于:ichardfrazer.com  翻译整理:weijer