Kennen Sie das Werkzeugregal von Blender?
Das ** Werkzeugregal ** ist ein Menü, das mit der T-Taste ein- und ausgeblendet werden kann. Es ist die ** Symbolleiste **, die am linken Bildschirmrand angezeigt wird. Es gibt viele Werkzeuge im Werkzeugregal, aber unten gibt es eine ** Option **, ein Einstellungselement **, mit dem der Benutzer den letzten Vorgang genauer steuern kann. Ein Beispiel ist beispielsweise die Ebene des "Unterteilungssatzes".
Dieses Mal werde ich vorstellen, wie eine Funktion hinzugefügt wird, um die Benutzersteuerung von der Werkzeugregaloption bis zum letzten Vorgang zu aktivieren.
Ich denke, es ist einfacher zu verstehen, wenn Sie ein Beispiel angeben, als es im Detail zu erklären. Daher werde ich ein Beispiel-Plug-In einführen, das das Objekt um den Winkel des in der Option festgelegten Werts um die X-Achse dreht.
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'}
#Wert, der im Werkzeugregal angezeigt werden soll
#Drehwinkel um die X-Achse (ganzzahliger Wert von 0 Grad bis 360 Grad kann ausgewählt werden)
rot = IntProperty(
name = "Rotate X", #Der Etikettenname wird im Werkzeugregal angezeigt
description = "Rotate X ...", #Beschreibung im Werkzeugregal angezeigt
default = 0, #Standardwert
min = 0, #Minimaler wählbarer Wert
max = 360) #Maximal wählbarer Wert
base_euler = None #Anfangswinkel
#Initialisierungsprozess
# __init__Wird nur ausgeführt, wenn aus dem Menü ausgewählt
#Wenn Sie den Ausgangszustand hier nicht speichern, liegt ein Problem mit der Drehung vor
def __init__(self):
active_obj = bpy.context.active_object
mode = active_obj.rotation_mode
active_obj.rotation_mode = 'QUATERNION'
#Speichern Sie den Ausgangszustand des Objekts
self.base_euler = active_obj.rotation_quaternion.to_euler()
active_obj.rotation_mode = mode
#Bei Auswahl aus dem Menü zum zweiten Mal oder später
#Muss manuell auf den Standardwert gesetzt werden
self.rot = 0
#Zusätzlich zur Auswahl aus dem Menü
# "Beim Ändern des Wertes im Werkzeugregal"Auch genannt
def execute(self, context):
active_obj = bpy.context.active_object
mode = active_obj.rotation_mode
active_obj.rotation_mode = 'QUATERNION'
#Legen Sie den Status eines neuen Objekts fest
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()
Informationen zur Installation des Beispiels finden Sie unter Blender-Wiki-Seite.
Die Verwendung des Beispiels wird unten gezeigt.
Ein Beispiel für das Ausführungsergebnis des Beispiels ist unten dargestellt.
Der grundlegende Quellcode wird unter [\ Blender ] Erstellen eines Blender-Plug-Ins erläutert, daher werde ich ihn weglassen.
Die folgenden Teile geben den Wert der Option an.
set_option.py
#Wert, der im Werkzeugregal angezeigt werden soll
#Drehwinkel um die X-Achse (ganzzahliger Wert von 0 Grad bis 360 Grad kann ausgewählt werden)
rot = IntProperty(
name = "Rotate X", #Der Etikettenname wird im Werkzeugregal angezeigt
description = "Rotate X ...", #Beschreibung im Werkzeugregal angezeigt
default = 0, #Standardwert
min = 0, #Minimaler wählbarer Wert
max = 360) #Maximal wählbarer Wert
Mit einer Funktion namens ** IntProperty ** kann der Benutzer den Wert als Option festlegen. In diesem Beispiel kann der Drehwinkel um die X-Achse von 0 Grad bis 360 Grad angegeben werden. Weitere Einzelheiten entnehmen Sie bitte den entsprechenden Kommentaren im Quellcode.
Im Beispiel können ganzzahlige Werte als Optionen festgelegt werden, es können jedoch auch andere Arten von Optionswerten festgelegt werden. Die einstellbaren Werte und die entsprechenden Funktionen sind zusammengefasst. Bitte beziehen Sie sich darauf.
Schimmel | Funktion |
---|---|
Boolescher Wert | BoolProperty |
ganze Zahl | IntProperty |
Gleitkomma | FloatProperty |
String | StringProperty |
Sie können auch die Werte einschränken, die für die Option angegeben werden können. Zeigt, wie der Bereich für ganzzahlige Optionen zwischen -100 und 400 begrenzt wird.
max_min.py
i = IntProperty(
name = "Integer",
description = "Integer ...",
default = 0,
min = -100,
max = 400)
Listen Sie die Argumente auf, die in ~ Property angegeben werden können. Es gibt andere Argumente, die angegeben werden können. Weitere Informationen finden Sie auf der offiziellen Blender-Seite.
Streit | Erläuterung |
---|---|
name | Optionsname wird im Werkzeugregal angezeigt |
description | Beschreibung wird angezeigt, wenn der Mauszeiger auf die Option gesetzt wird |
default | Anfänglicher Optionswert |
max | Maximaler Wert, der für die Option angegeben werden kann |
min | Mindestwert, der für die Option angegeben werden kann |
Wir haben gezeigt, wie der Benutzer den für eine Option angegebenen Wert erhalten kann. Mithilfe von Optionen sollten Benutzer Funktionen konfigurieren und den Bereich der Plugin-Erstellung erweitern können.
Recommended Posts