脚本与安全

Blend文件中包含Python脚本的能力在进阶任务如绑定、自动化和使用游戏引擎中是很有价值的。然而,由于Python并没有严格限制脚本的行为,也带来了一些安全风险。

因此,你应当只运行你知道且信赖的来源的脚本。

自动运行脚本选项默认是禁用的,但是一些blend文件需要启用该选项才能正常工作。

当blend文件试图运行脚本并且未被允许,标题栏将显示信息,并提供 重新加载受信任(脚本) 或者 忽略 该消息的选项。

../../_images/animation_drivers_troubleshooting_autorun-info-header.png

信息编辑器标题栏显示的自动运行警告。

Blend文件中的脚本

自动运行

下面是一些blend文件可能自动运行脚本的方式。

注册的文本块
文本块可以启用 注册 选项,这意味会在启动时自动加载。
动画驱动
Python表达式可以用于 驱动 值,并且经常在进阶的绑定和动画中使用。
游戏引擎自动启动
脚本经常用于游戏逻辑,blend文件可以启用 自动启动 选项,加载后自动运行游戏。

手动运行

还有一些情况下,blend文件需要用户交互才能运行脚本(因此禁用自动运行也会运行),但你需要清楚这种情形,因为它不是那么显而易见。

  • 在文本编辑器中运行脚本。
  • 使用FreeStyle 渲染,由于 FreeStyle 使用脚本控制线条样式。
  • 运行游戏引擎。

控制脚本运行

Blender提供了一些用于控制是否允许blend文件中脚本自动运行的方法。

首先,文件浏览器有 受信任来源 选项,可以用于逐个控制自动运行。

不过,你可能会忘记设置这个选项,或者不通过文件浏览器打开文件 -- 所以你可以改变默认选项(下面继续说明)。

设置默认值

在用户设置的 文件 选项卡中,有 自动运行Python脚本 的选项。

这意味着文件浏览器中的 受信任来源 选项会默认启用,并且无需通过文件浏览器,blend文件加载后,脚本就可以自动运行。

一旦启用,你可以排除特定目录,典型的配置是信任除下载目录外的所有路径。

../../_images/animation_drivers_troubleshooting_autorun-user-preference.png

自动运行Python脚本。

命令行

你可能想要从命令行执行批处理渲染或一些其他的任务 — 不使用界面运行Blender。

这种情况下,前面的用户设置同样适用,不过你也许想要覆盖该设置:

  • 使用 -y or --enable-autoexec 启用
  • 使用 -Y or --disable-autoexec 禁用

示例

在后台模式渲染动画,允许使用驱动和其他脚本:

blender --background --enable-autoexec my_movie.blend --render-anim

Note

命令行参数也可以用来正常启动Blender,并且覆盖用户设置。