现在我们单独来看一下导入“Mayascene.fbx"文件后,Nuke Camera [摄影机节点]的Projection[投影]参数,如图所示。
可以看到focal length [ 焦距]、horiz aperture [水平成像平面]和vert aperture [垂直成像平面] 3个参数值确实和Maya camera里的参数是相同的,但Camera [摄影机]节点却没有FOV [摄角]参数。
我们可以通过下面的python脚本来手工为Nuke Camera [摄影机]添加一个Fov [摄角]参数。
Python参数如下:
import math
#导入math???/p>
def focalToFov ( focal, aperture ):
return math.degrees( math.atan2(aperture, focal*2) *2 )
#定义一-个focalToFov函数,使用了focal和aperture作为入参,这里的aperure指的就是Camera的horiz
aperture。下面使用的就是求Fov值的公式,返回的是Fov角度值。
def fovToFocal ( fov, aperture ):
return aperture / ( math.tan(math.radians(fov/2))/2)
#定义一个fovToFocal函数, 使用了上面求出的fov值和aperture作为入参,通过Fov和aperture求出了Focal值。
def addFovKnob():
n = nuke.thisNode()
Fov = nuke.Tab Knob(FOV)
fovKnob = nuke.Double_ Knob( 'fov';FOV' )
fovKnob.setRange( 5, 179 )
focal = n['focal'].value()
hap = n['haperture'].value()
fovKnob.setValue( focalToFov( focal, hap ))
n.addKnob( Fov )
n.addknob( fovKnob )
nuke.addOnUserCreate( addFovKnob, nodeClass='Camera2' )
#创建了一一个Fov的Knob [面板],并把上面focalToFov返回的Fov值赋予了这个Knob。
def fovCB():
n = nuke.thisNode()
k = nuke.thisKnob()
hap = n['haperture'].value()
if k.name()== 'fov':
n[focal'].setValue( fovToFocal( k.value(), hap ))
elif k.name() == 'focal':
n['fov'].setValue( focalToFov( k.value(), hap) )
nuke.addKnobChanged( fovCB, nodeClass='Camera2' )
#当调节Fov值时,会自动改变focal的值去进行匹配。
选择想要添加FOV [摄角]的Camera节点,把上面的参数粘贴到Script Edior [脚本编辑器]面板中,按回键车执行参数命令,如图所示。
当前Camera节点并不会马上添加参数,需要删除当前Camera节点,重新创建一个Camera节点,因为Nuke需要刷新参数。这时我们看到新建的Camera节点上多出一个Fov参数栏,如图所示。
当我们调节FOV [摄角]参数时,Foacl [焦距]会跟随改变,反之亦然。
热门课程
专业讲师指导 快速摆脱技能困惑相关文章
多种教程 总有一个适合自己专业问题咨询
你担心的问题,火星帮你解答在广州这座繁华的都市中,数字创意产业正蓬勃发展,广州视频剪辑培训成为许多影视爱好者的理想起点。随着短视频平台和影视制作需求的激......
在北京这样一座充满创意活力的都市,UI设计培训正成为无数年轻人追逐职业梦想的跳板。随着数字经济的蓬勃发展,UI设计行业在北京展......
在当今创意经济蓬勃发展的浪潮中,北京平面设计培训成为众多职业追求者的理想起点。这座城市的活力与机遇吸引着无数人投身视觉艺术领域......
在影视和设计行业蓬勃发展的今天,虚幻引擎作为核心技术工具,正引领着视觉创作的革命。越来越多的人渴望掌握这门技能,而专业的培训成......
在北京这座文化创意中心,平面设计培训行业蓬勃发展,为渴望入行的学员提供了丰富机遇。随着数字媒体和影视产业的崛起,掌握视觉传达技......
在上海这座充满活力的城市,影视和设计行业正迎来前所未有的发展机遇,数字技术的进步让3D建模成为创意产业的核心驱动力。参加专业的......
同学您好!