宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取

一、基础操作

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') # 保存工程