应用模板

    可以从初始屏幕或 文档‣新建 子菜单中选择应用进程模板。如果未找到模板,则菜单将不会显示在初始屏幕上。

    可以从 安装新的应用进程模板。如果您希望在重新启动 Blender 时保持当前应用进程模板处于活动状态,请保存您的首选项。

    有些时候,写一个简单的脚本或者插件可能还不足以解决问题,一些用户可能希望有人可以为其替换用户设置和启动文件、安装脚本并修改键位映射。

    应用模板的存在意在帮助用户快速切换到自定义配置,而无需破坏已有的设置和安装环境。这意味着人们可以在Blender基础上自行构建易于分发的 应用

    应用模板需要定义其自身以下内容:

    启动文件

    加载模板后的默认文件。

    偏好设置

    应用模板中只有某些特定用户设置才会被用到:

    • 主题。

    • 插件。

    • 键位映射。

    • 视窗照明.

    启动画面

    模板可以使用自定义启动画面图像。

    Python脚本

    模板可以与其他脚本一样访问功能,典型的操作包括:

    • 定义新的菜单、键位映射和工具。

    • 自定义模板特有插件路径。

    模板也有自己的用户配置,所以使用模板时保存启动文件不会覆盖默认的启动文件。

    模板位置:

    {BLENDER_USER_SCRIPTS}/startup/bl_app_templates_user

    {BLENDER_SYSTEM_SCRIPTS}/startup/bl_app_templates_system

    用户配置保存在其子目录:

    没有模板:

    ./config/startup.blend

    ./config/userpref.blend

    有模板:

    ./config/{APP_TEMPLATE_ID}/startup.blend

    ./config/{APP_TEMPLATE_ID}/userpref.blend

    更多关于脚本和配置位置的细节见 。

    Hint

    问题排查

    创建应用程序模板时,可能会遇到找不到路径的问题。要对此进行调查,您可以记录Blender所有路径查找的输出。

    使用自定义应用程序模板加载Blender的命令行参数示例(使用您自己的模板名称替换`` my_app_template ‘’ ) :

    然后,您可以检查尝试访问 “my_app_template”的路径。

    使用 可以设置Blender启动器以指定的应用模板启动:

    应用模板可以配置以下文件,不过这是可选的。

    改模板的初始文件.

    userpref.blend

    (As noted previously, this is only used for a subset of preferences).

    splash.png

    初始屏幕,用于覆盖 Blender 的默认图稿(不包括标题文本)。请注意,此图像必须是 “1000x500”图像。

    __init__.py

    Python脚本必须包含 registerunregister 方法。

    Note

    自带的blend文件 startup.blend 和 视作 初始设置 ,且不会被覆盖。

    用户可以在使用此模板时保存自己的启动/首选项,该模板将存储在其用户配置中,但仅当模板包含自己的 userpref.blend 文档时。

    恢复初始设置 一样,用户可以从文件菜单使用 加载模板初始设置 加载模板初始设置。

    虽然应用进程模板可以使用 Python 脚本,但它们只能访问可用于加载项和任何其他脚本的相同 API。

    正如上文所言,可以选择在应用模板中使用 __init__.py。这样做有以下优势:

    • 无需分发blend文件即可更改启动或首选项。

    • 可以动态更改。

      比如,可以配置模板为先检查处理器、操作系统和内存,然后基于此设置参数值。

    • 可以启用与模板关联的插件。

    激活时,将调用 register 函数,当选择另一个模板时,将调用 unregister

    由于这些只运行一次,因此必须通过处理进程对默认值进行任何更改。您可能使用的两个处理进程是:

    • bpy.app.handlers.load_factory_startup_post

    以上两者用于自定义用户可以更改的 ,就像 Blender 在首次启动时的默认值一样。

    下面是一个 __init__.py 文件范例,定义了应用模板要使用的默认值。