Шаблони Застосунку – Application Templates¶
Використання – Usage¶
Шаблони застосунку – це функція, що дозволяє вам визначати повторно використовувану конфігурацію, яка може бути обрана замість стандартної конфігурації, без потреби окремого іншого установлення Blender’а або перезапису ваших персональних параметрів.
Шаблони застосунку можна вибрати з екрана заставки або підменю «Файл > Нове»
. Коли там жодних шаблонів не знайдено, то це меню не буде показуватися на екрані заставки.Нові шаблони застосунку можуть бути інстальовані з Меню Застосунку – App Menu. Якщо ви бажаєте утримувати поточний шаблон застосунку активним при перезапуску Blender, то збережіть ваші уподобання.
Мотивація – Motivation¶
У деяких випадках не достатньо написати один скрипт або додаток, та очікувати, що хтось замінить його в уподобаннях та запусковому файлі, інсталює скрипти та змінить їх розкладку клавіш.
Метою шаблонів застосунку є підтримка перемикання на кастомізовану конфігурацію без руйнування ваших наявних устав та інсталяції. Це означає, що люди можуть вибудовувати свої власні застосунки поверх Blender’а, що можуть легко поширюватися.
Деталі – Details¶
Шаблон застосунку може бути визначено через:
- Запусковий Файл – Startup File
Стандартний файл для завантаження за допомогою цього шаблону.
- Уподобання – Preferences
З шаблону використовуються лише певні уподобання:
Теми – Themes.
Додатки – Add-ons.
Розкладки клавіш – Keymaps.
Освітлювання оглядвікна – Viewport lighting.
- Екран Заставки – Splash Screen
Шаблони можуть забезпечувати свої власні зображення екрану заставки.
- Скрипти Python – Python Scripts
Коли шаблони мають доступ до такої самої функціональності, як і будь-які інші скрипти, то їх типові операції включають:
Модифікування та замінювання частин інтерфейсу користувача.
Визначання новий меню, розкладок клавіш та засобів.
Визначення кастомного шляху додатків для визначених шаблоном додатків.
Шаблони також мають свою власну конфігурацію користувача, а тому зберігання запускового файлу на основі шаблону не буде перезаписувати ваш стандартний запусковий файл.
Розстава Каталогів – 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 щодо деталей про розміщення скриптів та конфігурацій.
Підказка
Troubleshooting Paths
When creating a application template, you may run into issues where paths are not being found. To investigate this you can log output of all of Blender’s path look-ups.
Example command line arguments that load Blender with a custom application template
(replace my_app_template
with the name of your own template):
blender --log "bke.appdir.*" --log-level -1 --app-template my_app_template
You can then check the paths where attemps to access my_app_template
are made.
Доступ до Командного Рядка – Command Line Access¶
Використовуючи аргументи командного рядка – command-line arguments, ви можете установити запускач, що відкриває Blender із конкретним шаблоном застосунку:
blender --app-template my_template
Вміст Шаблону – Template Contents¶
Кожен із наступних файлів може використовуватися шаблонами застосунку, але це необов’язково.
startup.blend
Заводський запусковий файл для використання цим шаблоном.
userpref.blend
Файл заводських уподобань для використання для цього шаблону. Коли пропущені уподобання спільно використовуються зі стандартною конфігурацією Blender’а.
(Як зазначено попередньо, це використовується тільки для піднабору уподобань).
splash.png
Splash screen to override Blender’s default artwork (not including header text). Note, this image must be a
1000x500
image.__init__.py
Скрипт Python, що повинен містити функції
register
таunregister
.
Примітка
Файли startup.blend
і userpref.blend
, що постачаються у пакунку з ним, вважаються Заводськими Уставами – Factory Settings та ніколи не перезаписуються.
Користувач може зберігати свої власні запусковий файл/уподобання, і при використанні такого шаблону це буде збережено в його конфігурації користувача, але лише коли шаблон включає його власний файл userpref.blend
.
Початкові установки шаблону можуть бути завантажені за допомогою команди: «Завантажити Заводські Устави Шаблону» – Load Template Factory Settings з меню «Файл», таким же чином, як відновлюються загальні заводські установки командою «Завантажити Заводські Устави» – Load Factory Settings.
Скрипти Шаблонів – Template Scripts¶
While app templates can use Python scripts, they simply have access to the same APIs available for add-ons and any other scripts.
Як зазначалося вище, ви можете факультативно мати __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)