问题标签 [nuke]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - How to cancel an execution of Write node in Nuke?
I have been writing a Nuke render manager in Python and came across a problem:
nuke.cancel()
doesn't seem to work right.
My python script creates a main class and connects to a server (written in Java) and then enters an infinite loop, each time getting a new task (in the form of a JSON object). Each loop it gets opens a script? finds the write nodes and executes them. To report progress back to the server I have added callbacks:
nuke.addBeforeFrameRender(lambda: self._pre_frame_render())
and
nuke.addAfterFrameRender(lambda: self._post_frame_render())
where
To enable a cancel
method on the server, I have a separate thread that runs while the rendering is active and waits for a 'cancel' request
The cancel_callback
is defined as
Before the loop starts I start the CancelHandler
thread and on each iteration the run_set
action is set, and after - cleared to let the main thread communicate. In between that at different stages I check if cancel_set
has been set in case a 'cancel' request has arrived.
All of the above seems to work fine except for one thing: nuke.execute()
does absolutely nothing - the render just continues. I have tried putting it in the nuke.addBeforeFrameRender
and nuke.addAfterFrameRender
callbacks but that does nothing. Also I thought it might be executing in the wrong thread so I tried nuke.executeInMainThread(nuke.cancel)
with no luck.
The documentation reads:
execute(nameOrNode, start, end, incr, views, continueOnError= False) ... If Nuke is run with the GUI up, this will pop up a progress meter. If the user hits the cancel button this command will return 'cancelled' error. If Nuke is run from the nuke command line (ie nuke was started with the -t switch) execute() prints a text percentage as it progresses. If the user types ^C it will aborting the execute() and return a 'cancelled' error.
so I tried replacing nuke.cancel()
with os.kill(os.getpid(), signal.CTRL_C_EVENT)
That actually stopped the render but execute()
never returned so the script couldn't continue
Since execute()
should
return a 'cancelled' error
I tried to catch the nuke.CancelledError
exception both from the execute()
and the os.kill(os.getpid(), signal.CTRL_C_EVENT)
code but it wasn't thrown.
Curiously, when I ran this callback:
the print
line got executed
I am fairly new to python so it might be a noob's mistake but does anyone know what I might be doing wrong or if it's a bug in the API? Or maybe someone cam come up with a better solution to the problem - that would be greatly appreciated!
So far the only way out of this situation I see is to simply shut down the worker process and then launch a new one, but that would be kind of an ugly thing to do each time someone wants to cancel a job.
Using Nuke 9.0v3 Full source code can be found at https://bitbucket.org/andrey_glebov/nukerendermanager/src in PYTHON directory
python - 在活动应用程序窗口内启动 pyside 对话框
我正在尝试在活动的应用程序窗口内启动一个对话窗口。我面临的困难是一旦启动对话窗口就能够与活动的应用程序窗口进行交互。
这是我的python脚本的一个例子:
我熟悉启动此对话框窗口的 2 个选项:
此选项允许我与活动的应用程序窗口进行交互,但此选项不会等待对话框窗口关闭,然后继续运行下面的任何代码。
此选项不允许我与活动的应用程序窗口进行交互。但它所做的是等待对话窗口关闭,然后再继续执行其余代码。
有没有办法在对话框窗口启动时与应用程序窗口进行交互,并让 python 等到对话框窗口关闭,然后再继续阅读我的其余代码?
python-2.7 - 在 nuke 中导入 maya.standalone 时出错
我正在考虑编写一个脚本,该脚本将以独立模式打开 Maya,并从 nuke 内部列出 maya 中灯光的某些属性。为此,我需要导入 maya.standalone 模块并使用 mayapy 打开文件,使用 subprocess 模块调用外部 shell 命令。老实说,我不确定这是否是从 nuke 执行此操作的正确方法。太好了,如果有人能指出什么,我做错了。
当我在上面运行脚本时出现以下错误。Traceback(最近一次调用最后一次):文件“”,第 7 行,在 ImportError 中:DLL 加载失败:找不到指定的过程。
干杯!!
nuke - 删除 Nuke 许可证到期消息 - flexlm
我在 flexLM 服务器上安装了 Nuke 许可证。许可证将在几天后到期。当我启动 Nuke 时,我一直收到这条消息“您在 hostIDs [host] 上拥有 nuke 的临时许可证,剩余 29 天。” 这很烦人。flexlm/Nuke 中是否有任何标志可以消除担忧?
c++ - 如何在 Nuke 中的 Ops 之间交换自定义数据?
这个问题是针对使用 C++ 和Nuke的NDK的开发人员提出的。
上下文:假设一个自定义 Op 实现了DD::Image::NoIop
和
的接口DD::Image::Executable
。该节点迭代一系列帧,在每个帧处提取信息,这些信息存储在自定义数据结构中。一个自定义旋钮,它是上述 Op 的成员变量(但在 UI 中不可见),处理数据结构的加载和保存(序列化)。
现在我想在 Ops 之间交换那个数据结构。
到目前为止,我提出了以下想法:
表达式链接
旋钮可以使用表达式链接来共享信息(矩阵等)。此功能是否也可以用于自定义数据?
序列化到图像数据
自定义数据将被序列化并写入(新)通道。处理树下方的节点可以抓住它并再次反序列化。当然,通道不能在序列化和反序列化之间改变,否则......这是一个黑客,我知道,但是,嘿,风暴中的任何端口!
GeoOp + 渲染器
在自定义数据纯粹基于点的情况下(不幸的是,在我的情况下不是),我可以将上述节点转换为 3D 节点并将点数据传递给其他 3D 节点。在某些时候,渲染节点需要返回到 2D。
我正朝着正确的方向前进吗?如果不是,那么使该数据结构可用于依赖于其中包含的信息的其他节点的明智方法是什么?
python - 从球体表面上的两点计算球体的旋转
我正在使用 nuke 并试图稳定在具有 6 个 gopro 的无人机上拍摄的球形全景图。我已经能够对图像上的 2 个点进行 2Dtrack(作为 equirectangular 地图提供给我)并将它们转换为 nukes 3d 空间的 xyz 坐标。
现在我必须制定一个表达式或 python 脚本来计算球体在每一帧上的旋转度数 (x,y,z)。
我对 python 和表达式没问题,但很快就超出了我的数学深度。
c++ - Nuke - Matrix4 相机约束锁定 Z 旋转
所以我在 Nuke 中构建了一个插件(来自 The Foundry),它将模仿 Maya 的动画约束行为。我有一个父母,一个孩子,然后是点、方向、目标、父母约束的选项。这一切都很好,但是我目前最大的问题是目标约束。
一些背景知识:使用 Nuke Matrix4 类 值得注意的是,这个矩阵是一个 4x4,其中前 3 行的前 3 列适用于旋转/缩放,前 3 行的最后一列是平移(X,Y, Z)
在Vector3 类中 ,我得到源和目标位置。目标源 = ST 然后我设置一个 Y 平面(一个倒置,一个不倒置)然后我得到我的 ST 点和 Y 平面的交叉积,然后是我的 ST 和倒置 Y 平面的另一个叉积。(当父母在孩子身后反转它时)然后我得到我的 ST 的叉积和我的 ST.cross(y_plane) 的结果
目标约束实际上效果很好,但是当父母处于某些位置时,我的相机(孩子)会发生很多 Z 旋转。我希望能够避免这种 Z 旋转。有人会碰巧知道该怎么做吗?
python - Python & QT:创建翻转帮助区
我有一个足够复杂的用户界面,用户可以使用一些帮助。我尝试了工具提示,但我不喜欢它们如何造成用户体验干扰。我想要的是有一个总是出现帮助的区域,其文本会根据鼠标悬停的位置而变化。
处理这个最有效的方法是什么?子类化工具提示?我考虑过 eventFilter,但我已经在使用它来捕获 QTextEdit 框的按键,而且我不确定如何让它适用于每个对象。我进入了新的领域,所以任何帮助都会非常感激。
谢谢!
python - Nuke Python获取if语句的旋钮值
我对 Python 比较陌生,需要一些帮助。这也是我在这个网站上的第一篇文章。我正在尝试更改已标记为“Plate”的读取节点中颜色空间旋钮的值。我想稍后使用该值。到目前为止,这是我的代码:
所以事件顺序:
- 引入读取节点
询问读取节点是否是您的主要板块
一个。如果是,将节点标记为“Plate”,继续执行步骤 3
b。如果否,则引入未标记的读取节点将标记为“Plate”的节点中的颜色空间从默认值更改为实际值。
到目前为止,我可以完成前两个步骤。但在第 3 步,我得到
“‘NoneType’对象没有属性‘ getitem ’”
任何想法为什么?有没有更好的方法来获取色彩空间值?
c++ - 在 The Foundry Nuke 中使用着色器
有没有办法在插件中应用着色器?
我正在尝试实现抗锯齿,但我所有的尝试都失败了:\