[PYTHON] [Blender] So können Benutzer Plug-Ins über Toolshelf-Optionen steuern

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.

Stichprobe

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()

Verwendung der Probe

Informationen zur Installation des Beispiels finden Sie unter Blender-Wiki-Seite.

Die Verwendung des Beispiels wird unten gezeigt.

  1. Wechseln Sie in den Modus "BEARBEITEN"
  2. Drücken Sie die Taste "U" und wählen Sie "Property Sample".
  3. Im Werkzeugregal sehen Sie eine Option namens "X drehen". Stellen Sie einen geeigneten Wert ein und überprüfen Sie, ob sich das Objekt dreht.

Ein Beispiel für das Ausführungsergebnis des Beispiels ist unten dargestellt.

sample_1.png

Beispielerklärung

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

Geben Sie den Wertebereich an, der für die Option angegeben werden kann

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)

Argumente, die für ~ Property angegeben werden können

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

Schließlich

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.

Referenzinformationen

Recommended Posts

[Blender] So können Benutzer Plug-Ins über Toolshelf-Optionen steuern
So erlauben Sie Nologin-Benutzern, sich unter Linux anzumelden
Wie man SWIG von waf benutzt
So starten Sie den Explorer über die WSL
[Blender] So erstellen Sie ein Blender-Plug-In
[Blender] So erstellen Sie Blender-Skripte mehrsprachig
So greifen Sie über Python auf Wikipedia zu
So konvertieren Sie von .mgz nach .nii.gz
[Blender] So legen Sie shape_key mit dem Skript fest
So erstellen Sie einen Klon aus Github
So konvertieren Sie das Format einfach aus Markdown
[TF] Verwendung von Tensorboard von Keras
Verwendung von Multi-Core aus der Sicht mehrerer Sprachen
Zugriff auf RDS von Lambda (Python)
So bedienen Sie Linux von der Konsole aus
So erstellen Sie ein Repository aus Medien
So greifen Sie von außen auf den Datenspeicher zu
Hinzufügen von Optionen zum run.ver-Manager von Django