Шаблони застосунку – Application Templates

Використання – Usage

Шаблони застосунку – це функція, що дозволяє вам визначати повторно використовувану конфігурацію, яка може бути обрана замість стандартної конфігурації, без потреби окремого іншого установлення Blender’а або перезапису ваших персональних параметрів.

Application templates can be selected from the splash screen or File ‣ New submenu. When there are no templates found the menu will not be displayed on the splash screen.

New application templates can be installed from the Меню Застосунку – App Menu. If you would like to keep the current application template active on restarting Blender, save your preferences.

Мотивація – Motivation

У деяких випадках не достатньо написати один скрипт або додаток, та очікувати, що хтось замінить його в уподобаннях та запусковому файлі, інсталює скрипти та змінить їх розкладку клавіш.

The goal of application templates is to support switching to a customized configuration without disrupting your existing settings and installation. This means people can build their own applications on top of Blender that can be easily distributed.

Деталі – Details

Шаблон застосунку може бути визначено через:

Запусковий Файл – Startup File

Стандартний файл для завантаження за допомогою цього шаблону.

Уподобання – Preferences

З шаблону використовуються лише певні уподобання:

  • Теми – Themes.

  • Додатки – Add-ons.

  • Розкладки клавіш – Keymaps.

  • Освітлювання оглядвікна – Viewport lighting.

Екран Заставки – Splash Screen

Шаблони можуть забезпечувати свої власні зображення екрану заставки.

Скрипти Python – Python Scripts

Коли шаблони мають доступ до такої самої функціональності, як і будь-які інші скрипти, то їх типові операції включають:

  • Модифікування та замінювання частин інтерфейсу користувача.

  • Defining new menus, keymaps and tools.

  • Визначення кастомного шляху додатків для визначених шаблоном додатків.

Шаблони також мають свою власну конфігурацію користувача, а тому зберігання запускового файлу на основі шаблону не буде перезаписувати ваш стандартний запусковий файл.

Розстава Каталогів – Directory Layout

Шаблони можуть бути розміщені в одному з двох місць у межах каталогу scripts.

Місця шаблонів:
{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

Дивіться Розстава Каталогів Blender’а – Blender’s Directory Layout щодо деталей про розміщення скриптів та конфігурацій.

Доступ до Командного Рядка – Command Line Access

Використовуючи аргументи командного рядка – command-line arguments, ви можете установити запускач, що відкриває Blender із конкретним шаблоном застосунку:

blender --app-template my_template

Вміст Шаблону – Template Contents

Кожен із наступних файлів може використовуватися шаблонами застосунку, але це необов’язково.

startup.blend

Заводський запусковий файл для використання цим шаблоном.

userpref.blend

Factory preferences file to use for this template. When omitted preferences are shared with the default Blender configuration.

(Як зазначено попередньо, це використовується тільки для піднабору уподобань).

splash.png, splash_2x.png

Splash screen to override Blender’s default artwork (not including header text). Must be 501x250 and 1002x500 (used for HiDPI monitors).

__init__.py

Скрипт Python, що повинен містити функції register та unregister.

Примітка

Файли startup.blend і userpref.blend, що постачаються у пакунку з ним, вважаються Заводськими Уставами – Factory Settings та ніколи не перезаписуються.

The user may save their own startup/preferences while using this template which will be stored in their user configuration, but only when the template includes its own userpref.blend file.

Початкові установки шаблону можуть бути завантажені за допомогою команди: «Завантажити Заводські Устави Шаблону» – Load Template Factory Settings з меню «Файл», таким же чином, як відновлюються загальні заводські установки командою «Завантажити Заводські Устави» – Load Factory Settings.

Template Scripts

While app templates can use Python scripts, they simply have access to the same API’s available for add-ons and any other scripts.

As noted above, you may optionally have an __init__.py in your app template. This has the following advantages:

  • Changes can be made to the startup or preferences, without having to distribute a blend-file.

  • Changes can be made dynamically.

    You could for example – configure the template to check the number of processors, operating system and memory, then set values based on this.

  • You may enable add-ons associated with your template.

On activation a register function is called, unregister is called when another template is selected.

As these only run once, any changes to defaults must be made via handler. Two handlers you’re likely to use are:

  • bpy.app.handlers.load_factory_preferences_post

  • bpy.app.handlers.load_factory_startup_post

These allow you to define your own «factory settings», which the user may change, just as Blender has it’s own defaults when first launched.

This is an example __init__.py file which defines defaults for an app template to use.

import bpy
from bpy.app.handlers import persistent

@persistent
def load_handler_for_preferences(_):
    print("Changing Preference Defaults!")
    from bpy import context

    prefs = context.preferences
    prefs.use_preferences_save = False

    kc = context.window_manager.keyconfigs["blender"]
    kc_prefs = kc.preferences
    if kc_prefs is not None:
        kc_prefs.select_mouse = 'RIGHT'
        kc_prefs.spacebar_action = 'SEARCH'
        kc_prefs.use_pie_click_drag = True

    view = prefs.view
    view.header_align = 'BOTTOM'


@persistent
def load_handler_for_startup(_):
    print("Changing Startup Defaults!")

    # Use smooth faces.
    for mesh in bpy.data.meshes:
        for poly in mesh.polygons:
            poly.use_smooth = True

    # Use material preview shading.
    for screen in bpy.data.screens:
        for area in screen.areas:
            for space in area.spaces:
                if space.type == 'VIEW_3D':
                    space.shading.type = 'MATERIAL'
                    space.shading.use_scene_lights = True


def register():
    print("Registering to Change Defaults")
    bpy.app.handlers.load_factory_preferences_post.append(load_handler_for_preferences)
    bpy.app.handlers.load_factory_startup_post.append(load_handler_for_startup)

def unregister():
    print("Unregistering to Change Defaults")
    bpy.app.handlers.load_factory_preferences_post.remove(load_handler_for_preferences)
    bpy.app.handlers.load_factory_startup_post.remove(load_handler_for_startup)