运行 Python Hiero 插件

Run Python plugins in Hiero

我在执行来自 Hiero 的自定义 python 代码时遇到了一个小问题。众所周知,首先要查找详细信息的地方是官方文档 "Nukepedia"、Python Dev Guide 和 Hiero User Guide。根据 Python 开发指南,Hiero 默认创建一个“.hiero”目录,让人们可以添加插件路径以在软件中使用它们。好吧,我找不到那个目录,经过几次测试后我推断 Hiero 正在使用保存在“.nuke”目录中的 init.py。

所以我想也许我可以在那里添加插件路径,但一直收到著名的 _fnpython 模块导入错误(在创建 Python/Startup 目录之前)。

我在 .nuke 中添加了 Python/Startup 文件夹并在 Startup 中添加了插件,我得到了同样的错误,我什至尝试通过在 init.py 中添加插件的路径并得到相同的结果也有错误。

然后我创建了一个“.hiero”文件夹并做了与以前相同的事情,但 Hiero 从未考虑过该文件夹,我通过在控制台中打印一些字符串推断出 Hiero 总是使用 init.py保存在“.nuke”文件夹中并一直显示相同的错误。

最后,我尝试查看安装过程并尝试分离 Nuke 和 Hiero 的文件夹,也许这会创建“.hiero”目录,但一切都是自动化的。

我想要 运行 的代码由 Nuke 和 Hiero(在示例目录中)给出,我只是想不出要从程序。

我应该怎么做才能解决这个问题?

提前致谢。

The Foundry HIERO 的设置与 NUKE 略有不同。

HIERO 有一个 core 模块。您会在 __init__.py 文件中看到它:

import FnRedirect
import FnPythonFixes
import core
import ui

try:
  if hasattr(core, "taskRegistry"):
    import importers
    import exporters
except ImportError as e:
  pass

我运行在 Mac 上安装 HIERO 和 NUKE STUDIO,所以包内容中有 HIERO 的 __init__.py 文件的完整路径:

/Applications/Nuke10.5v5/Contents/MacOs/pythonextensions/site-packages/hiero/__init__.py

您需要使用以下方法导入此模块:

import hiero.core

或使用对 core 包的引用:

from core import *

要找到 HIERO 的当前路径,您必须 运行 在其脚本编辑器中输入以下行:

print hiero.core.pluginPath()

单击此 link 了解更多详情:Hiero's Environment Setup

所有这些说明都适用于 macOS 10.9 及更高版本。这里有两个步骤:第一个用于终端模式,第二个用于 UI 模式。

区块 1:setup for Terminal Sessions

您需要在 Home 区域手动创建 .hiero 目录。

运行ning Python 启动时推荐的默认位置是:

~/.hiero/Python/Startup

~/.hiero/Python/StartupUI

在您的 bash 终端(当您在 Home 用户目录中时)输入以下行:

mkdir .hiero/

然后:

mkdir .hiero/Python/

然后:

mkdir .hiero/Python/StartupUI/

然后导航至 Home 目录:

cd ~

并检查它:

ls -a

您还可以使用环境变量 HIERO_PLUGIN_PATH 指定任意数量的用户定义路径,就像标准 Unix PATH 环境变量一样。

为此,您需要在 .bash_profile 中设置一个 environment variable。要在 运行 终端 PICO 编辑器中输入(请记住,sudo 命令需要管理员密码):

sudo pico .bash_profile

并将这三行粘贴到其中(将 swift 更改为 <yourName> 并保存此文件):

echo HIERO environment var is set...
export HIERO_PLUGIN_PATH=/Users/swift/.hiero/Python/StartupUI/
export PATH=$PATH:$HIERO_PLUGIN_PATH

ctrl写出一个文件o

使用 ctrl x

退出 pico 编辑器

重启终端

在终端中,您可以打印此环境变量键入:

printenv HIERO_PLUGIN_PATH

你应该在 StartupUI 目录 menu.py 中放入任何一组 xxxx.pyxxxx.pyc 文件,以及 __init__.py 文件。

现在您可以在 Terminal Mode.

中使用 /Users/swift/.hiero/Python/StartupUI/ 路径

区块 2:setup for UI Sessions

要指定 HIERO 在加载插件时搜索的当前路径,您需要使用以下行创建 __init__.py 文件:

import hiero.core

path='/Users/swift/.hiero/Python/Startup/'
hiero.core.addPluginPath(path)

之后在 ~/.nuke/ 文件夹下创建 Python/Startup/ 个子目录。

这不是错误:我输入了 .nuke

然后将此 __init__.py 文件放入 /Users/swift/.nuke/Python/Startup/ 目录。

如果成功,请重新启动 HIERO(或 NUKE STUDIO)。

之后启动 HIERO 或 NUKE STUDIO 和 运行

print hiero.core.pluginPath()

在 HIERO 的脚本编辑器或 NUKE STUDIO 的脚本编辑器中执行命令,您将看到以下结果:

之后你会在 /Users/swift/.nuke/Python/Startup/ 目录中找到新的 __init__.pyc 文件。

启动 HIERO 时发现的每个包或模块都会导入并添加到内置包 hiero.plugins

测试 1:custom_guides.py

我没有 HIERO 的商业版本,所以我使用 NUKE STUDIO NC 测试了 custom_guides.py 脚本(发现 here )。

我将 custom_guides.py 放在 ~/.nuke/Python/Startup 目录中,然后在 ~/.nuke 目录中的 NUKE init.py 文件中添加了两行。

import nuke
nuke.pluginAddPath("./Python/Startup")

我唯一能说的是:"it works"做和我一样的动作,它对 HIERO 有用。

查看 safe_zonemasking_ratio 下拉菜单。它们是不同的:之前和之后。

上传custom_guides.py脚本前:

上传custom_guides.py脚本后:

# file custom_guides.py contains these lines:

viewer_masks = [
    hiero.ui.guides.MaskGuide("NTSC", 0.91),
    hiero.ui.guides.MaskGuide("PAL", 1.09),
    hiero.ui.guides.MaskGuide("NTSC_16:9", 1.21),
    hiero.ui.guides.MaskGuide("PAL_16:9", 1.46),
    hiero.ui.guides.MaskGuide("Cinemascope 2:1", 2.0)  
]

测试 2:web_browser.py

我将 web_browser.py 文件放在 ~/.nuke/Python/Startup 目录中。此 Python 脚本使用 PySide Qt 编写的 Web 浏览器创建可停靠面板。

我没有 HIERO 的商业版本,所以我使用 NUKE STUDIO NC 测试了 web_browser.py 脚本(找到 here )。