一、基础操作
Nuke是由The Foundry出品的一款非常强大的视觉效果合成软件。整个软件的操作界面主要分为Node Graph和Properties两大板块。Node Graph提供的是可随意拖拽的Node节点,Properties则负责对选中的节点进行详细的属性设置。我们可以使用鼠标快捷键加速操作,例如按住滚轮进行画布的拖动、按住空格进行画布的平移等等。而在编辑器中的操作,例如选中节点后,利用快捷键Ctrl + C / Ctrl + V 就能对节点进行复制和粘贴操作。
代码示例:
import nuke import os nuke.scriptNew('') # 新建工程 read = nuke.createNode('Read') # 创建Reade Node read['file'].fromUserText(os.path.abspath('test.mov')) # 指定文件路径 write = nuke.createNode('Write') # 创建Write Node write.setInput(0, read) # 连接Write节点和Read节点 nuke.scriptSave('test.nk') # 保存工程
二、图层混合
Nuke的混合模式继承了Photoshop的全部,同时还添加了一些扩展的模式。例如,最常用的正片叠底混合模式可以通过在Properties面板中将操作节点的Blend设为”multiply”来实现。此外,还有一些较为复杂的混合模式,例如HSL、Z、AOV等等,这些混合模式的使用可以让我们更加精细地控制图层的叠加混合。
代码示例:
import nuke Read_list = [] AX_ = ['A', 'B', 'C'] for i in range(3): read = nuke.createNode('Read') # 创建Reade Node read['file'].fromUserText(os.path.abspath(f'{AX_[i]}.mov')) # 指定文件路径 Read_list.append(read) merge = nuke.createNode('Merge2') merge['operation'].setValue('multiply') # 指定混合模式 for i in range(3): merge.setInput(i, Read_list[i]) nuke.scriptSave('merge.nk') # 保存工程
三、3D场景建模
除了2D效果处理之外,Nuke提供的还有强大的3D特效处理能力。通过Nuke内置的Camera类,我们可以快速地创建出3D场景,为素材的特效处理提供更加完整的解决方案。在进行3D特效处理的时候,我们需要使用到内置的Camera类,通过调整Camera类的参数来进行渲染,调整参数的操作可以通过Properties中的坐标系来进行,并且随着Camera的移动,3D场景中的其他Node也会跟着移动,从而实现完整的3D渲染效果。
代码示例:
import nuke import os nuke.scriptNew('merge.nk') # 新建工程 read = nuke.createNode('Read') # 创建Reade Node read['file'].fromUserText(os.path.abspath('bg.mov')) # 指定文件路径 camera = nuke.createNode('Camera2') # 创建Camera2节点 camera_name = camera['name'].value() custom = nuke.createNode('Constant') custom_name = custom['name'].value() camera.setInput(0, custom) read.setInput(0, camera) nuke.scriptSave('bg.nk') # 保存工程
四、绿幕抠像
在视频特效处理时被广泛使用的技术就是绿幕抠像。利用绿幕把需要处理的物体与背景相分离,然后再进行特效处理。Nuke提供了一套完备的抠像工具,例如Keyer、Keylight等等,用户只需要选择合适的工具进行使用即可。
代码示例:
import nuke import os # 打开需要去除绿幕的素材 nuke.scriptNew('test.nk') read = nuke.createNode('Read') # 创建Reade Node read['file'].fromUserText(os.path.abspath('test.mov')) # 指定文件路径 # 创建抠像节点 keylight = nuke.createNode('Keylight') keylight.setInput(0, read) keylight.setSelected(True) # 配置keyer keyer = nuke.createNode('Keyer') # 创建'Keyer'节点 keyer.setInput(0, keylight) # 连接节点 keyer['screenType'].setValue('green') # 设置绿屏的类型 keyer['recalc'].executeMultiple([0, nuke.frame(), 1]) # 执行节点属性并同步帧数 nuke.scriptSave('test_knockout.nk') # 保存工程
五、细节优化
Nuke还提供了丰富的细节优化工具,例如Retime、Sharpen等等,可以帮助用户更好地控制素材的特效处理效果。在进行细节优化时,我们可以通过Node Graph的方式随时预览处理后的素材效果,从而更加快速地调整处理效果。在调节参数时,我们还可以使用Properties窗口的numeric fields功能,这个功能可以帮助我们更加精确地调整参数数值。
代码示例:
import nuke import os # 打开需要进行特效处理的素材 nuke.scriptNew('test.nk') read = nuke.createNode('Read') # 创建Reade Node read['file'].fromUserText(os.path.abspath('test.mov')) # 指定文件路径 # 创建细节优化节点 sharpen = nuke.createNode('Sharpen') sharpen.setInput(0, read) # 配置Retime节点 retime = nuke.createNode('Retime') retime.setInput(0, sharpen) retime['output'].setValue('nearest') # 缩放算法 retime['retiming'].setValue('400') # 处理后的帧率 nuke.scriptSave('test_retime.nk') # 保存工程
最新评论