Application Templates – Шаблони Застосунків#

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

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

Шаблони застосунків можна вибрати з екрана заставки або підменю File ‣ New – «Файл > Нове». Коли там жодних шаблонів не знайдено, то це меню не буде показуватися на екрані заставки.

Нові шаблони застосунків можна інсталювати з Blender Menu. Якщо ви бажаєте утримувати поточний шаблон застосунку активним при перезапуску Blender, то збережіть ваші уподобання.

Motivation – Мотивація#

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

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

Details – Деталі#

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

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

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

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

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

  • Themes – Теми.

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

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

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

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

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

Python Scripts – Скрипти Python

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

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

  • Визначання новий меню, розкладок клавіш та засобів.

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

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

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’s Directory Layout – Розстава Каталогів Blender’а щодо деталей про розміщення скриптів та конфігурацій.

Підказка

Troubleshooting Paths – Шляхи Усунення несправностей

При створюванні шаблону застосунку ви можете зіткнутися з проблемами, коли шляхи не знаходяться. Щоб дослідити це, ви можете логувати вивід всіх пошуків шляхів Blender’а.

Приклад аргументів командного рядка, що завантажує Blender з кастомним шаблоном застосунку (замініть my_app_template на ім’я вашого власного шаблону):

blender --log "bke.appdir.*" --log-level -1 --app-template my_app_template

Ви можете далі перевірити шляхи, де робляться спроби доступу до my_app_template.

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

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

blender --app-template my_template

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

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

startup.blend

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

userpref.blend

Файл заводських уподобань для використання для цього шаблону. Коли пропущені уподобання спільно використовуються зі стандартною конфігурацією Blender’а.

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

splash.png

Екран заставки для заміщення стандартної ілюстрації Blender’а (не включаючи текст заголовка). Зауважте, що це зображення повинно бути зображенням з розміром 1000x500.

__init__.py

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

Примітка

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

Користувач може зберігати свої власні запусковий файл/уподобання, і при використанні такого шаблону це буде збережено в його конфігурації користувача, але лише коли шаблон включає його власний файл userpref.blend.

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

Template Scripts – Скрипти Шаблонів#

Хоча шаблони застосунків можуть використовувати скрипти Python, вони просто мають доступ до однакових API, доступних для додатків та будь-яких інших скриптів.

Як зазначалося вище, ви можете факультативно мати __init__.py у вашому шаблоні застосунку. Це має наступні переваги:

  • Зміни можуть бути зроблені у запусковому файлі або в уподобаннях без потреби поширенні на blend-файл.

  • Зміни можуть робитися динамічно.

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

  • Ви можете вмикати додатки, асоційовані з вашим шаблоном.

При активації функція register викликається, unregister викликається, коли інший шаблон вибрано.

Як тільки вони виконані хоч раз, будь-які зміни у стандарти повинні робитися через обробник. Ви використовуватимете, імовірно, такі два обробники:

  • bpy.app.handlers.load_factory_preferences_post

  • bpy.app.handlers.load_factory_startup_post

Вони дозволяють вам визначати ваші власні «заводські устави», які користувач може змінювати, так само як Blender має його власні стандарти, коли запускається уперше.

Це приклад файлу __init__.py, який визначає стандарти для використання шаблону застосунку.

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)