[PYTHON] [Blender] So erstellen Sie ein Blender-Plug-In

Was ist ein Blender-Plug-In?

Blender stellt verschiedene APIs zur Verfügung, um seine Funktionalität zu erweitern. Mithilfe der API können Sie die Daten abrufen, die Blender intern verwendet, z. B. "aktuell ausgewähltes Gesicht" und "Position des Scheitelpunkts des Objekts". Es gibt verschiedene Informationen, die von der API abgerufen werden können, und die veröffentlichte API kann beispielsweise anhand der folgenden Informationen bestätigt werden. http://www.blender.org/documentation/blender_python_api_2_67_release/contents.html

Was Sie tun müssen, um ein Plug-In zu erstellen

Die API basiert auf Python und ist nicht für Benutzer gedacht. Daher müssen Sie Folgendes wissen: Auf den ersten Blick scheint die Schwelle ziemlich hoch zu sein, aber in Wirklichkeit denke ich, wenn Sie Blender gemacht und etwas gemacht haben, wird es überschaubar sein. Im Gegenteil, es kann für diejenigen, die an 3D-bezogene Programmierung gewöhnt sind, einfach sein.

Beispiel-Plug-In

Ein einfaches Beispiel-Plug-In für Blender.

skeleton.py


#Erforderlich für den Zugriff auf die Datenstruktur in Blender
import bpy

#Informationen zum Plug-In
bl_info = {
    "name" : "Hoge Plugin",             #Name des Plugins
    "author" : "Piyo",                  #Autor
    "version" : (0,1),                  #Plugin-Version
    "blender" : (2, 6, 5),              #Mixer-Version, bei der der Stecker funktioniert
    "location" : "UV Mapping > Hoge",   #Positionierung der Plug-Ins im Mixer
    "description" : "Hoge Fuga Piyo",   #Plugin Beschreibung
    "warning" : "",
    "wiki_url" : "",                    #URL der Wiki-Seite, auf der sich die Plugin-Beschreibung befindet
    "tracker_url" : "",                 #URL des Blender Developer Org-Threads
    "category" : "UV"                   #Name der Plugin-Kategorie
}

#Speisekarte
class CHoge(bpy.types.Operator):
    
    bl_idname = "uv.hoge"               #ID-Name
    bl_label = "Hoge Menu"              #Im Menü angezeigte Zeichenkette
    bl_description = "Hoge Piyo"        #Beschreibung wird im Menü angezeigt
    bl_options = {'REGISTER', 'UNDO'}

    #Der Prozess, den das Plug-In tatsächlich ausführt
    def execute(self, context):
        return {'FINISHED'}             #Gibt bei Erfolg FINISHED zurück

#Funktion zum Registrieren eines Menüs
def menu_func(self, context):
    self.layout.operator("uv.hoge")     #"Bl" der Klasse, die Sie registrieren möchten_Geben Sie "idname" an.

#Was passiert, wenn Sie das Plug-In installieren?
def register():
    bpy.utils.register_module(__name__)
    bpy.types.VIEW3D_MT_uv_map.append(menu_func)

#Was passiert, wenn Sie das Plug-In deinstallieren?
def unregister():
    bpy.utils.unregister_module(__name__)
    bpy.types.VIEW3D_MT_uv_map.remove(menu_func)

#Hauptfunktion
if __name__ == "__main__":
    register()

Erläuterung des Beispiel-Plug-Ins

bpy Modulimport

Um auf die internen Daten von Blender zugreifen zu können, müssen Sie ein Modul namens bpy importieren.

skeleton_1.py


#Erforderlich für den Zugriff auf die Datenstruktur in Blender
import bpy

Informationen zum Plug-In (bl_info)

Beschreibt Informationen zum Plug-In. Da die Kommentare im Quellcode so erklärt werden, wie sie sind, wird hier nichts Besonderes erklärt. Wenn Sie Ihr Plugin im Wiki von Blender veröffentlichen möchten, sollten Sie die URL Ihrer Wiki-Seite oder die URL von Blender Deverloper Org angeben. Wenn Sie es jedoch einzeln verwenden, ist es kein Problem, wenn Sie nur auf den Ort und die Kategorie achten. Als Referenz werden unten die Wiki-Seite des von mir erstellten Plugins und die URL der Blender Developer Org angezeigt. [Wiki] http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/UV/Copy_Paste_UVs [Blender Developer Org] https://developer.blender.org/T38460

skeleton_2.py


#Informationen zum Plug-In
bl_info = {
    "name" : "Hoge Plugin",             #Name des Plugins
    "author" : "Piyo",                  #Autor
    "version" : (0,1),                  #Plugin-Version
    "blender" : (2, 6, 5),              #Mixer-Version, bei der der Stecker funktioniert
    "location" : "UV Mapping > Hoge",   #Positionierung der Plug-Ins im Mixer
    "description" : "Hoge Fuga Piyo",   #Plugin Beschreibung
    "warning" : "",
    "wiki_url" : "",                    #URL der Wiki-Seite, auf der sich die Plugin-Beschreibung befindet
    "tracker_url" : "",                 #URL des Blender Developer Org-Threads
    "category" : "UV"                   #Name der Plugin-Kategorie
}

Klasse für Menü

Erstellen Sie einen einzelnen Menüpunkt in einer Klasse, der die Verarbeitung des Plug-Ins beschreibt. Muss von der Klasse bpy.types.Operator erben. Sie müssen den Prozess, den Sie ausführen möchten, in der Methode execute beschreiben und "FINISHED" als Rückgabewert zurückgeben, wenn dies erfolgreich ist. Eine andere Sache, die als Rückgabewert angegeben werden kann, ist "CANCEL LED", die den Vorgang beendet, wenn ein Fehler auftritt. Siehe unten für Details. http://www.blender.org/documentation/blender_python_api_2_67_1/bpy.types.Operator.html

skeleton_3.py


#Speisekarte
class CHoge(bpy.types.Operator):
    
    bl_idname = "uv.hoge"               #ID-Name
    bl_label = "Hoge Menu"              #Im Menü angezeigte Zeichenkette
    bl_description = "Hoge Piyo"        #Beschreibung wird im Menü angezeigt
    bl_options = {'REGISTER', 'UNDO'}

    #Der Prozess, den das Plug-In tatsächlich ausführt
    def execute(self, context):
        return {'FINISHED'}             #Gibt bei Erfolg FINISHED zurück

Verarbeitung beim Installieren / Deinstallieren eines Plug-Ins

Beschreiben Sie den Prozess, der ausgeführt wird, wenn das Plug-In in der Funktion "register" installiert ist, und den Prozess, der ausgeführt wird, wenn das Plug-in in der Funktion "unregister" deinstalliert wird. Registrieren Sie das Plug-In mit bpy.utils.register_module und bpy.utils.unregister_module. bpy.types.VIEW3D_MT_uv_map.append und bpy.types.VIEW3D_MT_uv_map.remove Hinzufügen / Entfernen von Elementen zum Menü "UV Map". Erstellen Sie eine Funktion (in diesem Fall menu_func), die den Prozess der Übergabe des in der Klasse, die Sie registrieren möchten, definierten "bl_idname" an das Argument self.layout.operator beschreibt, und übergeben Sie ihn an das Argument bpy.types.VIEW3D_MT_uv_map.append. Das durch bl_label angegebene Element wird dem Menü "UV Map" hinzugefügt. Wenn Sie es an das Argument von bpy.types.VIEW3D_MT_uv_map.remove übergeben, wird das hinzugefügte Element gelöscht.

skeleton_4.py


#Funktion zum Registrieren eines Menüs
def menu_func(self, context):
    self.layout.operator("uv.hoge")     #"Bl" der Klasse, die Sie registrieren möchten_Geben Sie "idname" an.

#Was passiert, wenn Sie das Plug-In installieren?
def register():
    bpy.utils.register_module(__name__)
    bpy.types.VIEW3D_MT_uv_map.append(menu_func)

#Was passiert, wenn Sie das Plug-In deinstallieren?
def unregister():
    bpy.utils.unregister_module(__name__)
    bpy.types.VIEW3D_MT_uv_map.remove(menu_func)

Hauptfunktion

Für die Hauptfunktion müssen Sie lediglich die Registerfunktion aufrufen.

skeleton_5.py


#Hauptfunktion
if __name__ == "__main__":
    register()

Führen Sie das Beispiel-Plug-In aus

Lassen Sie uns das obige Beispiel-Plug-In tatsächlich bedienen. Führen Sie die folgenden Schritte aus, um das Plug-In zu installieren. Der Installationsvorgang wird auch auf der Blender-Wiki-Seite beschrieben. http://wiki.blender.org/index.php/Doc:JA/2.6/Manual/Extensions/Python/Add-Ons

  1. Wählen Sie Datei-Benutzereinstellungen
  2. Wählen Sie die Registerkarte Addons
  3. Klicken Sie auf die Schaltfläche "Aus Datei installieren ..."
  4. Wählen Sie das Plug-In aus, das Sie installieren möchten
  5. Aktivieren Sie das Kontrollkästchen neben dem installierten Plug-In
  6. Drücken Sie "U" im "Bearbeitungsmodus"
  7. Vergewissern Sie sich, dass "Hoge Menu" angezeigt wird.
  8. Klicken Sie auf "Hoge-Menü", um den Vorgang auszuführen (in diesem Fall wird nichts getan, weil nichts getan wird).

Ausführungsergebnis

Wenn die Installation erfolgreich abgeschlossen wurde, können Sie auf jedem Bildschirm Folgendes überprüfen.

「User Preferences」-「Addons」 20140905224305.jpg

"U" -Menü von "Edit Mode"

20140905224318.jpg

Qiita-Artikel zur Entwicklung von Blender-Steckern

In einem anderen Qiita-Artikel habe ich die wichtigsten Punkte bei der Entwicklung des Blender-Plug-Ins vorgestellt. Bitte beziehen Sie sich auch darauf.

Artikel für diejenigen, die mehr über die Blender-API erfahren möchten

Artikel für diejenigen, die Blender-Plugins veröffentlichen möchten

Artikel für diejenigen, die die Entwicklungsumgebung von Blender-Plugins verbessern möchten

Tutorial zur Entwicklung des Blender-Plug-Ins

Wir arbeiten an einem Anfänger-Tutorial für alle, die ein Blender-Plug-In entwickeln möchten. Wenn Sie interessiert sind, lesen Sie bitte auch dies.

https://www.gitbook.com/book/nutti/introduction-to-add-on-development-in-blender/details

Verweise

Recommended Posts

[Blender] So erstellen Sie ein Blender-Plug-In
Wie erstelle ich eine japanisch-englische Übersetzung?
Wie man einen lockeren Bot macht
Wie erstelle ich einen Crawler?
So erstellen Sie eine rekursive Funktion
[Blender] So erstellen Sie Blender-Skripte mehrsprachig
Wie erstelle ich einen Crawler?
[Python] Wie man eine Klasse iterierbar macht
So erstellen Sie einen benutzerdefinierten Backtrader-Indikator
Wie erstelle ich eine Pelican Site Map?
Spigot (Papier) Einführung in die Erstellung eines Plug-Ins für 2020 # 01 (Umgebungskonstruktion)
Wie man ein Dialogsystem für Anfänger erstellt
So erstellen Sie ein Spigot-Plug-In (für Java-Anfänger)
So erstellen Sie ein Wörterbuch mit einer hierarchischen Struktur.
So erstellen Sie das Substance Painter Python-Plugin (Einführung)
Wie man das Bukkit Plugin studiert
Wie man ein Terminal hackt
Wie man ein Schießspiel mit toio macht (Teil 1)
Grundlagen von PyTorch (2) - Wie erstelle ich ein neuronales Netzwerk?
So erstellen Sie mit Flask einen BOT für Cisco Webex-Teams
[Python] So erstellen Sie eine Liste von Zeichenfolgen Zeichen für Zeichen
So setzen Sie einen symbolischen Link
Wie erstelle ich ein Multiplayer-Online-Actionspiel mit Slack?
So erstellen Sie ein Hacking-Labor - Kali Linux (2020.1) VirtualBox 64-Bit Teil 2-
So erstellen Sie ein Conda-Paket
So erstellen Sie eine virtuelle Brücke
So erstellen Sie ein Hacking-Labor - Kali Linux (2020.1) VirtualBox 64-Bit-Edition -
Wie erstelle ich ein Python-Paket (geschrieben für Praktikanten)
Wie man ein einfaches Flappy Bird-Spiel mit Pygame macht
Wie erstelle ich eine Docker-Datei?
So löschen Sie einen Docker-Container
Machen Sie einen Vorhanggenerator mit Blender
So erstellen Sie eine Konfigurationsdatei
So machen Sie einen String in Python zu einem Array oder ein Array zu einem String
So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python
[C-Sprache] So erstellen, vermeiden und erstellen Sie einen Zombie-Prozess
So erstellen Sie eine .dylib-Bibliothek aus einer .a-Bibliothek mit OSX (El Capitan)
So führen Sie einen Komponententest durch Teil 1 Entwurfsmuster zur Einführung
[Python] Wie erstelle ich eine Matrix aus sich wiederholenden Mustern (repmat / tile)
So machen Sie Word Cloud-Zeichen monochromatisch
[Blender] So legen Sie shape_key mit dem Skript fest
Wie man Selen so leicht wie möglich macht
So erstellen Sie einen Klon aus Github
So teilen und speichern Sie einen DataFrame
So erstellen Sie eine Sphinx-Übersetzungsumgebung
So erstellen Sie einen Git-Klonordner
Qiita (1) Wie schreibe ich einen Codenamen?
So fügen Sie ein Paket mit PyCharm hinzu
So zeichnen Sie ein Diagramm mit Matplotlib
[Python] So konvertieren Sie eine zweidimensionale Liste in eine eindimensionale Liste
Machen wir einen Jupyter-Kernel
[Python] So invertieren Sie eine Zeichenfolge
[Ubuntu] So führen Sie ein Shell-Skript aus
Wie bekomme ich Stacktrace in Python?
So machen Sie Multi-Boot-USB (Windows 10-kompatibel)
So erstellen Sie ein Repository aus Medien