colorcorrect(colorcorrect2018)

  • 时间:
  • 浏览:92
  • 来源:奥一装修网

colorcorrect2018

使用下面描述的nuke。add 。。。()函数,当发生可变事件(例如,节点创建,脚本加载)时,将自动调用python函数。 您可以在init。py和menu。py中使用nuke。add 。。。()。此代码将被用作nuke环境的一部分,并且不会随脚本一起更改。 所有nuke。add 。。。()函数参数都是相同的,例如:nuke。addOnCreate(callable,args =(),kwargs = {},nodeClass =’*’)其中:callable是python调用,例如函数名称之类的args是参数列表,用括号括起来。例如:nuke。addOnCreate(nuke。tprint,(“打印内容”))kwargs是以kv形式给出的参数。 {’sep’:’,’})nodeClass仅在nuke。thisNode()时调用。 nodeClass()等于此字符串,例如:nuke。addOnCreate(nuke。tprint,(’Creating Write’),nodeClass =’Write’)默认*表示可以被任何节点调用。 在回调中,有一个上下文节点,使用nuke。thisNode()时需要检查该节点。 cursorChanged,有一个内容旋钮,可以使用nuke。thisKonb()获得。 对于许多nuke。add 。。。()函数,例如onCreate,也有同名的旋钮,分为两个类别:visibleknob-生产者要编辑的旋钮。这可以在属性面板的python面板中看到。隐藏旋钮我在属性面板中看不到它们,但是可以使用python进行设置。允许定义Gizmo行为。生产者不应设置这些旋钮,因为用户设置将覆盖Gizmo设置。隐藏的旋钮包括:onCreate,onDestroy,旋钮Changed,updateUI,自动标签。 如果有许多已注册的回调,则附加在旋钮上的代码始终优先于nuke。add 。。。()(例如,放置在onCreate旋钮上的代码在nuke。addOnCreate()之前被调用。)在这种情况下,nuke。add 。。。()函数后将跟一个对应的nodeClass。最后,带*的是加法顺序。请注意,addAutolabel()和addFilenameFilter()函数是例外。添加它们时,它们以相反的顺序调用。 所有回调函数都有相应的删除函数 OnUserCreatenuke。addOnUserCreate(函数)nuke。removeOnUserCreate(函数)是在用户以GUI模式创建节点时执行的。启动时也会在根节点和查看器节点上调用它。但是,当加载现有脚本,粘贴节点,撤消删除时,将不会执行它。 您可以使用此代码更改旋钮的默认值,添加用户旋钮并执行其他操作。更改默认值后,nuke。addOnUserCreate将立即运行。在onCreate之前。如果不使用nuke。addOnUserCreate(),则调用nuke。tcl(“ OnCreate”)是为了向后兼容。 onCreatenode。knob(“ onCreate”)nuke。addOnCreate(函数)nuke。removeCreate(函数)在创建节点时执行,例如,在加载脚本,粘贴节点,选择菜单选项,撤消删除操作,等注意,将为每个节点执行。这是因为在创建节点之后脚本已被加载。创建组(包括根节点,包括许多内部节点)时,内部节点首先调用onCreate,而组节点调用onCreate。根节点上的任何脚本都将在加载时执行(请参阅onScriptLoad),或者在菜单中选择“文件”→“新建”时将执行。预设和python旋钮面板在创建时也会执行。

negated

例如,以下代码使创建每个节点时在终端中输出OnCreate。 nuke。addOnCreate(lambda:nuke。tprint(“被称为OnCreate” + nuke。thisNode()。名称()))onScriptLoadroot。knob(“ onScriptLoad”),nuke。addOnScriptLoad(函数),nuke。removeOnScriptLoad(函数) onScriptLoadroot。knob(’onScriptLoad’)nuke。addOnScriptLoad(函数)nuke。removeOnScriptLoad(函数)在加载脚本时执行,并在创建root的onCreate之后立即执行。请注意,它不会对新脚本执行。在“项目设置”》“ Python”选项卡中,可以在scriptLoad的旋钮上看到imageonScriptSaveroot。knob(’onSrciptSave’)nuke。addOnScriptSave(函数)nuke。removeOnScriptSave(函数)在用户保存脚本时运行。 imageonScriptCloseroot。knob(’onScriptClose’)nuke。removeOnScriptClose(函数)当用户退出nuke或关闭脚本时,将执行此函数。 scriptClear()函数imageonDestroynode。knob(’onDestroy’)nuke。addOnDestroy(函数)撤消节点创建。根节点关闭后,也会调用它。用户退出nuke,nuke崩溃后将不会是“首选项”。对于组和根,此功能在所有子代之前运行。 cursorChangednode。knob(’knobChanged’)nuke。addKnobChanged(函数)nuke。removeKnobChanged(函数)打开面板后,对旋钮值的任何修改都可以执行回调,并且不会递归调用。使用nuke。thisKnob()查看更改了哪个旋钮。 KnobChanged可以使用旋钮创建小控件,包括启用,禁用,预设等。nuke。thisKnob()可以获取更改后的旋钮。 注意:toggleChanged用于刷新面板控制面板。不能用于跟踪旋钮(例如,用数据库数据更新所有旋钮)。因为当“属性”面板关闭时,不会调用它。要跟踪旋钮,请使用以下updateUI用户打开和关闭属性面板。打开面板并更改输入连接后,可以使用结节更改中的showPanel和inputChange旋钮。否则,on change回调将更改旋钮的值,并且必须响应showPanel才能设置正确的状态。例如:如果k。name()==“ slider”或k。name()==“ showPanel”:n 【’checkmark’】,则n = nuke。thisNode()k = nuke。thisKnob()。 setEnable(n 【’slider’】 。getValue()!= 0)使用nuke。addKnobChanged一次获取ColorCorrect节点的增益和伽马滑块。用户更改其中一个滑块,另一个自动更改为相同的值。获取滑块的代码:def gangGammaGainSliders():n = nuke。thisNode()k = nuke。thisKnob()如果k。name()==“ gamma”:n 【’gain’】。 SetValue(k。value())elif k。name()==“ gain”:n 【’gamma’】。 setValue(k。value())nuke。addKnobChanged(gangGammaGainSliders,nodeClass =“ ColorCorrect”)updateUInode。knob(’updateUI’)nuke。addUpdateUI(函数)nuke。removeUpdateUI(函数)脚本更改后,每个节点都运行此回调。这是在空闲时间执行的低优先级过程。 Nuke可能已经开始渲染视图的计算,并且尚未执行updateUI。因此,updateUI无法执行更改图像的脚本(否则,将重新启动查看器)。 updateUI在toggleChanged之后在自动标签之前运行。为了防止它在每个节点上运行,Nuke检查updateUI的外观(例如,框架,视图数)来决定是否运行它。如果该功能无法计算出帧数和视图数,不会调用框架或视图更改。 autolabelnode。knob(’autolabel’)nuke。addAutolabel(函数)nuke。removeAutolabel(函数)updateUI立即运行上述脚本并返回绘图节点的绘图字符串。如果autolabel不为空或返回不为空的任何内容,则返回值将显示在节点上。否则,将使用第一个返回non-None的命令以相反的顺序调用nuke。addAutolabel()。如果两个都返回None,则使用nuke。thisNode()。名称 ()。 为了向后兼容,在Nuke调用启动时调用addAutolabel(main。autolabel)beforeRenderwrite。knob(’beforeRender’)nuke。addBeforeRender(function)在execute()开始渲染之前运行。如果引发异常,则不执行后续渲染。您可以使用此功能来创建目标输出文件夹或与服务器场进行通信。例如,beforeRender旋钮(在GUI上进行渲染之前)在写入节点的“渲染”页面上。

negate

提示:默认情况下,NUKE在渲染时不创建文件夹。如果包含“写入”节点的输出路径的文件夹不存在,则渲染将失败。但是,可以使用nuke。addBeforeRender()注册一个回调函数以在渲染前创建一个文件夹,以更改nuke的默认行为。这是一个示例:在插件目录中创建init。py如果文件不存在,请添加以下代码:def createWriteDir():import nuke,os,errno file = nuke。filename(nuke。thisNode()) dir = os。path 。dirname(文件)尝试:OSError之外的os。makedirs(osdir),例如e。errno! = errno。EEXIST:在每帧开始渲染之前执行nake。addBeforeRender(createWriteDir)图像beforeFrameRenderwrite。knob(’beforeFrameRender’)nuke。addBeforeFrameRender(函数)nuke。removeBeforeFrameRender函数。如果抛出错误,则渲染终止。这对于在渲染后复制到数字录像机(DVR)或与渲染场进行通信非常有用。例如,beforeFrameRender旋钮(在GUI上渲染之后)在输出节点的“渲染”页面下。 image afterFrameRenderwrite。knob(’afterFrameRender’)nuke。addAfterFrameRender(函数)nuke。removeAfterFrameRender(函数)在每个帧渲染完成后执行。如果抛出错误,则渲染终止。这对于在渲染后复制到数字录像机(DVR)或与渲染场进行通信非常有用。例如,afterFrameRender旋钮(在GUI上渲染之后)在输出节点的Render页面下。 image afterRenderwrite。knob(’afterRender’)nuke。addAfterRender(函数)nuke。removeAfterRender(函数)在渲染完所有帧之后运行。如果抛出错误,则渲染终止。例如,afterRender旋钮(在GUI上渲染之后)在输出节点的Render页面下。 imageafterBackgroundRendernuke。addAfterBackgroundRender(函数)nuke。removeAfterBackgroundRender(函数)在背景渲染之后执行。调用形式必须是这样的:def foo(上下文):passcontext是包含以下元素的字典:id-要标识任务,请注意,当前NUKE上下文对于回调无效。例如,nuke。thisNode随机返回一个节点。 afterBackgroundFrameRendernuke。addBackgroundFrameRender(函数)的调用nuke。removeAfterBackgroundFrameRender(函数)的调用如下:def foo(上下文):passcontext是包含以下元素的字典:id-任务帧的标识-帧的编号当前渲染numFrames-要渲染的帧总数。 FramgeProgress-已渲染多少帧。请注意,当前的NUKE上下文对于回调无效。例如,nuke。thisNode随机返回一个节点。 filenameFilternuke。addFilenameFilter(函数)nuke。removeFilenameFilter(函数)在将脚本传输到系统之前,向过程中添加过滤器函数以处理文件名。为了向后兼容,如果未添加任何功能,则nuke运行mian。filenameFix(s)。默认版本调用nuke。tcl(“ filename_fix”,s)以将其用于路径转换,在Nuke脚本传输到操作系统之前,添加了一个过滤器来处理所有文件名。这些过滤器可以消除操作系统之间的差异,还可以插入所需的路径。回调函数的参数必须为字符串,并且返回值可以为字符串或无(返回相同的不变字符串)。文件名不是特殊的节点,例如插件名称。此函数调用nuke。thisNode()设置根节点。传递给nuke。addFilenameFilter的所有函数均以相反的顺序调用。 为了向后兼容,如果未添加任何功能,nuke将运行main。filenameFix(s)。默认版本调用nuke。tcl(’filename_fix’,s)以下示例使用文件名过滤器来处理Win和Linux混合环境中的路径问题。例如,工作站是Win系统,访问共享驱动器“ Y:”,而Linux中的相应安装点是“ / mnt / y /”:

color correct

import nukedef myFilenameFilter(文件名):if nuke。env 【 ’LINUX’】:filename = filename。replace(’y:’,’/ mnt / y’)filename = filename。replace(’x:’,’/ mnt / x’)else:filename = filename。replace(’ / mnt / y’,’y:’)filename = filename。replace(’/ mnt / x’,’x:’)return filenamenuke。addFilenameFilter(myFilenameFilter)validateFilenamenuke。addValidateFilename(函数)验证写节点中的文件名。第一个参数是文件名,它返回一个布尔值,指示该文件名是否有效。如果提供了回调函数,则该回调函数的结果会影响Write节点中的Render按钮和WriteGeo节点中的Excute按钮。 autoSaveFilternuke。addAutoSaveFilter(函数)nuke。removeAutosaveFilter(函数)在nuke自动保存文件之前修改自动保存。 def myAutoSaveFilter(文件名):返回文件名第一个参数是当前自动保存文件的名称,返回要保存的aotusave文件的名称,如果存在则返回None。 更多,请参阅使用自动保存回调进行自动保存回调 autoSaveRestoreFilternuke。addAutoSaveRestoreFilter(函数)nuke。removeAutoSaveRestore(函数)当Nuke恢复atosave文件时,修改通过自动保存获得的文件名filename的第一个参数是当前自动保存文件的名称。该函数返回要加载的自动保存文件的名称。不返回任何内容。如果aotosave恢复过滤器并返回None,这还将禁止Nuke对话框询问用户是否加载找到的自动保存。 查看更多使用AutoSave回调实现AutoSave回滚 autoSaveDeleteFilter当nuke删除自动保存文件时,修改自动保存文件名filter函数形式如下:返回文件名的第一个参数是自动保存的文件名。返回要删除的文件的名称,如果没有要删除的内容,则返回None。 更多,请参阅使用自动保存回调进行自动保存回滚使用自动保存回调完成自动保存回滚操作。三个自动保存的回调用于完成回滚。每次调用自动保存时,都会创建一个新的自动保存,数组的范围为1-9。例如:autosave,autosave1,autosave2 。。。。 autosave9import nukeimport globimport timeimport os ,它使用autoSaveFilter回调实现滚动自动保存自动保存从0到9滚动,例如myfile。autosave,myfile。 autosave1,myfile。autosave2 。。。 要使用,只需在init。pydef onAutoSave(文件名)中添加’import nukescripts。autosave’:如果nuke。root()忽略直到自动保存。 name()==’Root’:返回文件名fileNo = 0文件= getAutoSaveFiles(文件名)如果len(文件)》 0:lastFile =文件【-1】如果len(lastFile)》 0则获取最后一个文件号:fileNo = int(lastFile 【-1:】)传递fileNo = fileNo +1如果(fileNo》 9):fileNo = 0 if(fileNo!= 0):filename = filename + str(fileNo)返回filenamedef onAutoSaveRestore(文件名):files = getAutoSaveFiles(文件名)如果len(文件) 》 0:文件名=文件【-1】返回文件名def onAutoSaveDelete(文件名):仅在nuke。root()之前删除直到自动保存。 Name()==’Root’:返回文件名返回None,此处不删除自动保存文件,返回Nonedef getAutoSaveFiles(文件名):date_file_list = 【】 files = glob。glob(文件名+ 【【1-9】】)文件。扩展文件中文件的扩展名(glob。glob(文件名)):以元组的形式检索当前文件的统计信息(mode,ino,dev,nlink,uid,gid,size,atime,mtime,ctime)该元组索引8上的元素mtime是最后修改日期创建元组(年yyyy,月(1-12),日(1-31),小时(0-23),分钟(0-59),秒(0-59),工作日(0-6、0是星期一),儒略日(1-366),夏时制标志(-1,0或1),从纪元后秒开始注意:该元组可以按日期和时间进行正确排序lastmod_date = time。localtime(统计信息【8】 )print image_file,lastmod_date测试创建准备好按日期排序的元组列表date_file_tuple = lastmod_date,file date_file_list。append(date_file_tuple)date_file_list。sort()返回【_的文件名,date_file_list中的文件名】 nuke。addAutoSaveFilter(onAutoSave) nuke。addAutoSaveRestoreFilter(onAutoSaveRestore)nuke。addAutoSaveDeleteFilter(onAutoSaveDelete)作为删除回调的示例,请使用此代码nuke。removeAutoSaveRestoreFilter(onAutoSaveRestore)nuke。removeAutoSaveDeleteFilter(onAutoSaveDelete)使用root回调添加双目设置。添加脚本以将新项目设置为立体/多视图项目,如下所示:如有必要,导入包含要在启动时运行的脚本的模块:import examples为该特定scriptviews准备参数’L’,(0,。5,0)),(’R’,(。5,0,0)),(’M’,(。5,。5,0))】将脚本添加到callbacknuke。addOnUserCreate(examples。setUpMultiView,views,nodeClass =’Root’)有关更多setupMultiView脚本,请参阅设置立体声OnUserCreate在用户首次创建某种类型的节点时触发(当每个节点处于创建,复制甚至从磁盘加载)。由于root也是一个节点,因此可以使用nodeClass过滤器来确保在创建根节点时仅执行根节点。 将上述脚本添加到menu。py或init。py之后,新的nuke脚本具有三个视图,即L(绿色),R(红色)和M(黄色)。 image默认颜色空间Nuke10可以动态替换读取和写入节点使用的颜色空间。 默认颜色空间是特定文件的reader和Writer对象,该对象告诉Nuke在读写文件时最可能使用哪个颜色空间。有几种方法可以获取它:读者可以使用该名称来设置默认色彩空间。 文件包含特定的数据类型,8位,16位,浮点或日志空间。 Nuke从项目设置中读取相应格式的色彩空间。 Reader,Writer将通过ID请求内置的LUT,例如REDlog,AlexaLog,ProTune,Gamma2。2(请参阅DDImage / LUT。h中的DataType)由于在Nuke中配置了OpenColorIO(OCIO),现在易于支持Nuke不确定的色彩空间。由于颜色空间不匹配,因此很容易获得Nuke的错误状态,尤其是在使用自定义OCIO配置时。以下回调可以处理由这些自定义配置引起的错误。 和其他回调一样,您可以使用以下方法添加和删除回调:nuke。addDefaultColorspaceMapper(函数)nuke。removeDefaultColorspaceMapper(函数)函数的形式如下:def myDefaultColorspaceMapper(colorspaceName,dataTypeHint):。。 。将颜色空间名称映射到所需的颜色空间。。。 return colorspaceName传递了以下对象:name-Reader和Writer当前请求的颜色空间可能是Nuke的默认值,或者是其他现有的,不存在的,也许不是颜色空间。 dataTypeHint-如以下三种情况之一,为nuke。INVALID-仅将设置的颜色空间的名称链接到项目设置中的值,如下所示-颜色空间将根据项目设置确定。请注意,该回调是链式调用,并且在项目设置中匹配颜色空间并不可靠,因为先前执行的回调可能会更改它。内置LUT ID-颜色空间名称是下表中的第一个。项目设置中数据类型提示的值:在项目设置中,将nuke。INT16色彩空间设置为“ 16位文件”的值。在项目设置中,将nuke。MONITOR色彩空间设置为“监视器”的值进行显示,例如查看器和标记nuke。FLOAT颜色空间在项目设置中将其设置为“ float文件”的值。 Nuke。LOG颜色空间将在项目设置中设置为“日志文件”的值。 DDImage / LUT。h中的其他数据类型与Reader和Writer向后兼容:

color correction

nuke 。VIEWER-unused6等效于DD ::图像:: LUT :: GAMMA1_87等效于DD ::图像:: LUT :: GAMMA2_28等同于DD ::图像:: LUT :: GAMMA2_49等同于DD ::图像:: LUT :: PANALOG10等同于DD ::图像:: LUT :: REDLOG11等同于DD ::图像:: LUT: :VIPERLOG12等同于DD ::图像:: LUT :: ALEXAV3LOGC13等同于DD ::图像:: LUT :: PLOGLIN14等同于DD ::图像:: LUT :: SLOG15等同于DD ::图像:: LUT :: SLOG116等效于DD ::图像:: LUT :: SLOG217等效于DD ::图像:: LUT :: SLOG318等效于DD ::图像:: LUT :: CLOG例如:如果要支持ACES 1。0。1预览设置,请添加以下回调函数以确保R3D文件的更正功能。 import nukedef r3d_aces101_default_colorspace(name,dataTypeHint):“”“在Ace 101配置中找到合适的R3D颜色空间”“” usePrefs =(dataTypeHint》 = 0)和(dataTypeHint