Modèles d’application

Utilisation

Les modèles d’application sont une fonctionnalité qui vous permet de définir une configuration réutilisable qui peut être sélectionnée pour remplacer la configuration par défaut, sans imposer une installation de Blender distincte ou écraser vos réglages personnels.

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.

Les nouveaux modèles d’application peuvent être installés depuis le App Menu. Si vous aimeriez garder actif le modèle d’application courant au redémarrage de Blender, enregistrez vos préférences.

Motivation

Dans certains cas, ce n’est pas suffisant d’écrire un simple script ou un add-on, et attendre que quelqu’un remplace ses préférences et son fichier de démarrage, installe les scripts et modifie sa configuration de clavier.

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.

Détails

Un modèle d’application peut définir son propre :

Fichier de démarrage

Le fichier par défaut à charger avec ce modèle.

Préférences

Seules certaines préférences d’un modèle sont utilisées :

  • Thèmes.

  • Add-ons.

  • Configurations de clavier.

  • Éclairage de vue.

Écran de démarrage

Les modèles peuvent fournir leur propre image d’écran de démarrage.

Scripts Python

Bien que les modèles aient accès à la même fonctionnalité que n’importe quels autres scripts, les opérations typiques comprennent :

  • Modifier et remplacer des parties de l’interface utilisateur.

  • Définir de nouveaux menus, configurations de clavier et outils.

  • Définir un chemin d’add-ons personnalisé pour les add-ons spécifiques du modèle.

Les modèles ont leur propre configuration utilisateur, aussi l’enregistrement d’un fichier de démarrage pendant l’utilisation d’un modèle ne va pas écraser votre fichier de démarrage par défaut.

Disposition de dossier

Les modèles peuvent se trouver dans un des deux emplacements du dossier scripts.

Emplacement de modèles :
{BLENDER_USER_SCRIPTS}/startup/bl_app_templates_user
{BLENDER_SYSTEM_SCRIPTS}/startup/bl_app_templates_system

La configuration utilisateur est enregistrée dans un sous-dossier :

Sans modèle :
./config/startup.blend
./config/userpref.blend
Avec un modèle :
./config/{APP_TEMPLATE_ID}/startup.blend
./config/{APP_TEMPLATE_ID}/userpref.blend

Voir Blender’s Directory Layout pour plus de détails sur les emplacements des scripts et de la configuration.

Accès par la ligne de commande

En utilisant les arguments de la ligne de commande vous pouvez configurer un lanceur qui ouvre Blender avec un modèle d’application spécifique :

blender --app-template my_template

Contenu des modèles

Chacun des fichiers suivants peut être utilisé pour des modèles d’application mais sont optionnels.

startup.blend

Fichier de démarrage d’usine à utiliser pour ce modèle.

userpref.blend

Fichier des réglages d’usine à utiliser pour ce modèle. Lorsqu’elles sont omises, les préférences sont partagées avec la configuration de Blender par défaut.

(Comme noté précédemment, ceci est uniquement utilisé pour un sous-ensemble de préférences).

splash.png, splash_2x.png

L’écran de présentation pour écraser l’illustration de Blender par défaut (texte de l’entête excepté). Doit être de 501x250 et 1002x500 (utilisés pour les moniteurs HiDPI).

__init__.py

Un script Python qui doit contenir les fonctions register et unregister.

Note

Les fichiers blend intégrés startup.blend et userpref.blend sont considérés comme des réglages d’usine et ne sont jamais écrasés.

L’utilisateur peut enregistrer ses propres startup/preferences en utilisant ce modèle qui sera enregistré dans leur configuration d’utilisateur, mais seulement quand le modèle inclut son propre fichier userpref.blend.

Les réglages d’origine du modèle peuvent être chargés en utilisant : Load Template Factory Settings depuis le menu file, à peu près de la même manière que Load Factory Settings.

Scripts de modèles

Bien que les app templates puissent utiliser des scripts Python, ils ont simplement accès au mem API disponibles pour les add-ons et tous autres scripts.

Comme noté ci-dessus, vous pouvez avoir de manière facultative un ``__init__.py``dans votre modèle d’application. Ceci a les avantages suivants :

  • Des modificaations peuvent être apportées au démarrage ou aux préférences, sans avoir à distribuer une fichier blend.

  • Les changements peuvent être faits dynamiquement.

    Vous pourriez par exemple configurer le modèle pour vérifier le nombre de processeurs, le système d’exploitation et la mémoire, puis définir les valeurs selon ceci.

  • Vous pouvez activer des add-ons associés à votre modèle.

À l’activation une fonction register est appelée, ``unregister``est appelée quand un autre modèle est sélectionné.

Comme ceux-ci ne se lancent qu’une seule fois, tout changement aux paramètres par défaut doit être fait via un handler. Deux handlers que vous utiliserez probablement sont :

  • bpy.app.handlers.load_factory_preferences_post

  • bpy.app.handlers.load_factory_startup_post

Ceux-ci vous permet de définir vos propres « paramètres d’usine », que l’utilisateur peut changer, tout comme Blender a ses propres paramètres par défaut à son premier lancement.

Ceci est un exemple de fichier __init__.py qui définit les paramètres par défaut pour une app template à utiliser.

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)