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
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.
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()
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
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
}
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
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)
Für die Hauptfunktion müssen Sie lediglich die Registerfunktion aufrufen.
skeleton_5.py
#Hauptfunktion
if __name__ == "__main__":
register()
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
Wenn die Installation erfolgreich abgeschlossen wurde, können Sie auf jedem Bildschirm Folgendes überprüfen.
「User Preferences」-「Addons」
In einem anderen Qiita-Artikel habe ich die wichtigsten Punkte bei der Entwicklung des Blender-Plug-Ins vorgestellt. Bitte beziehen Sie sich auch darauf.
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
Recommended Posts