Connaissez-vous l'étagère à outils de Blender?
La ** Tool Shelf ** est un menu qui peut être affiché / masqué avec la touche T et est la ** barre d'outils ** affichée sur le bord gauche de l'écran. Il existe de nombreux outils sur l'étagère à outils, mais en dessous il y a une ** option **, un élément de réglage ** qui donne à l'utilisateur un contrôle plus fin sur la dernière opération. Par exemple, le niveau de «jeu de subdivision» en est un exemple.
Cette fois, je vais vous présenter comment ajouter une fonction pour activer le contrôle de l'utilisateur de l'option d'étagère d'outils à la dernière opération.
Je pense qu'il est plus facile de comprendre si vous donnez un échantillon plutôt que de l'expliquer en détail.Je vais donc vous présenter un exemple de plug-in qui fait pivoter l'objet autour de l'axe X de l'angle de la valeur définie dans l'option.
rotate_around_x_axis.py
import bpy
import mathutils
from math import radians
from bpy.props import *
bl_info = {
"name" : "Property sample",
"author" : "Nutti",
"version" : (1, 0),
"blender" : (2, 7, 0),
"location" : "UV Mapping > Property sample",
"description" : "Property sample",
"warning" : "",
"wiki_url" : "",
"tracker_url" : "",
"category" : "UV"
}
class PropertySample(bpy.types.Operator):
""""""
bl_idname = "uv.property_samle"
bl_label = "Property Sample"
bl_description = "Property Sample"
bl_options = {'REGISTER', 'UNDO'}
#Valeur à afficher sur l'étagère à outils
#Angle de rotation autour de l'axe X (une valeur entière de 0 degrés à 360 degrés peut être sélectionnée)
rot = IntProperty(
name = "Rotate X", #Nom de l'étiquette affiché sur l'étagère à outils
description = "Rotate X ...", #Description affichée sur l'étagère à outils
default = 0, #Valeur par défaut
min = 0, #Valeur minimale sélectionnable
max = 360) #Valeur maximale sélectionnable
base_euler = None #Angle initial
#Processus d'initialisation
# __init__Est exécuté uniquement lorsqu'il est sélectionné dans le menu
#Si vous ne sauvegardez pas l'état initial ici, il y aura un problème avec la quantité de rotation
def __init__(self):
active_obj = bpy.context.active_object
mode = active_obj.rotation_mode
active_obj.rotation_mode = 'QUATERNION'
#Sauvegarder l'état initial de l'objet
self.base_euler = active_obj.rotation_quaternion.to_euler()
active_obj.rotation_mode = mode
#Lorsque sélectionné dans le menu la deuxième fois ou plus tard
#Doit être défini manuellement sur la valeur par défaut
self.rot = 0
#De plus lors de la sélection dans le menu
# "Lors de la modification de la valeur sur l'étagère à outils"Aussi appelé
def execute(self, context):
active_obj = bpy.context.active_object
mode = active_obj.rotation_mode
active_obj.rotation_mode = 'QUATERNION'
#Définir l'état d'un nouvel objet
new_euler = self.base_euler.copy()
new_euler.x = self.base_euler.x + radians(self.rot)
active_obj.rotation_quaternion = new_euler.to_quaternion()
active_obj.rotation_mode = mode
return {'FINISHED'}
# registration
def menu_func(self, context):
self.layout.operator(PropertySample.bl_idname)
def register():
bpy.utils.register_module(__name__)
bpy.types.VIEW3D_MT_uv_map.append(menu_func)
def unregister():
bpy.utils.unregister_module(__name__)
bpy.types.VIEW3D_MT_uv_map.remove(menu_func)
if __name__ == "__main__":
register()
Veuillez consulter la page Wiki de Blender pour savoir comment installer l'exemple.
L'utilisation de l'exemple est indiquée ci-dessous.
Un exemple du résultat d'exécution de l'exemple est présenté ci-dessous.
Le code source de base est expliqué dans [\ Blender ] Comment créer un plug-in Blender, donc je vais l'omettre.
Les parties suivantes spécifient la valeur de l'option.
set_option.py
#Valeur à afficher sur l'étagère à outils
#Angle de rotation autour de l'axe X (une valeur entière de 0 degrés à 360 degrés peut être sélectionnée)
rot = IntProperty(
name = "Rotate X", #Nom de l'étiquette affiché sur l'étagère à outils
description = "Rotate X ...", #Description affichée sur l'étagère à outils
default = 0, #Valeur par défaut
min = 0, #Valeur minimale sélectionnable
max = 360) #Valeur maximale sélectionnable
Une fonction appelée ** IntProperty ** permet à l'utilisateur de définir la valeur comme une option. Dans cet exemple, l'angle de rotation autour de l'axe X peut être spécifié de 0 degrés à 360 degrés. Pour d'autres détails, veuillez vous référer aux commentaires dans le code source le cas échéant.
Dans l'exemple, les valeurs entières peuvent être définies comme options, mais d'autres types de valeurs d'option peuvent également être définies. Les valeurs qui peuvent être définies et les fonctions correspondantes sont résumées, veuillez donc vous y référer.
Moule | une fonction |
---|---|
Booléen | BoolProperty |
entier | IntProperty |
Point flottant | FloatProperty |
Chaîne | StringProperty |
Vous pouvez également limiter les valeurs pouvant être spécifiées pour l'option. Montre comment limiter la plage entre -100 et 400 pour les options entières.
max_min.py
i = IntProperty(
name = "Integer",
description = "Integer ...",
default = 0,
min = -100,
max = 400)
Répertoriez les arguments pouvant être spécifiés dans ~ Propriété. Il existe d'autres arguments qui peuvent être spécifiés, mais veuillez consulter la page officielle de Blender pour plus de détails.
argument | La description |
---|---|
name | Nom de l'option affiché sur l'étagère à outils |
description | Description affichée lorsque le pointeur de la souris est placé sur l'option |
default | Valeur initiale de l'option |
max | Valeur maximale pouvant être spécifiée pour l'option |
min | Valeur minimale pouvant être spécifiée pour l'option |
Nous avons montré comment l'utilisateur peut obtenir la valeur spécifiée pour une option. Les options doivent permettre aux utilisateurs de configurer les fonctionnalités et d'étendre la gamme de création de plugins.
Recommended Posts