Archiv/Howto/Blenderplugin aus Pythoncode erstellen

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Achtung!

Die Verwendung dieses Howto geschieht auf eigene Gefahr. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich zusätzlich an den Verfasser des Howtos.

Hinweis:

Diese Howto-Anleitung wurde zuletzt von Vej am 17.08.2016 unter Ubuntu 16.04 und Blender 2.76b erfolgreich getestet.

Inhaltsverzeichnis
  1. Problembeschreibung
  2. Anleitung
    1. Init-Script erstellen
    2. Header hinzufügen
    3. Einbinden
  3. Links

Problembeschreibung

Blender lässt sich mittels Skripten in der Skriptsprache Python erweitern. Um umfangreichere Skripte, die sich womöglich über zahlreiche Module erstrecken, besser einbinden zu können, kann man diese als Plugin zusammenfassen. Dieses Howto erklärt die Schritte die dazu notwendig sind. Es geht nicht auf die Erstellung der Python-Skripte selber ein.

Anleitung

Init-Script erstellen

Damit ein Plugin eingebunden werden kann, muss ein gültiges Python-Modul vorliegen. Beim Laden eines Plugins wird das Hauptskript namens __init__.py aufgerufen. Dieses muss alle anderen Module nachladen. Außerdem muss es über die Funktionen register() und unregister() verfügen, die beim Laden bzw. Entladen des Plugins aufgerufen werden. Obwohl sie beliebigen Code enthalten dürfen, werden sie in der Regel dazu verwendet, plugineigene Datenstrukturen und Klassen zu registrieren.

Ein minimales Beispiel für eine __init__.py am Ende dieses Abschnittes könnte so aussehen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
import bpy
class Testklasse(bpy.types.Operator):
    """Tooltip"""
    bl_idname = "object.nutzlos"
    bl_label = "Tut nichts"

    @classmethod
    def poll(cls, context):
        return true

    def execute(self, context):
        return {'FINISHED'}


def register():
    bpy.utils.register_class(Testklasse)


def unregister():
    bpy.utils.unregister_class(Testklasse)

Header hinzufügen

Ein Plugin in Python benötigt einige Informationen am Beginn der __init__.py. Diese werden in der folgenden Form angegeben:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
bl_info = {
    "author": "Max Mustermann",
    "name": "Plugin von Max",
    "description": "Beschreibungstext",
    "warning": "",
    "version": (0, 0),
    "blender": (2, 72, 0), 
    "support": 'TESTING',
    "category": 'Kategoriename'
}

Die Bedeutung der einzelnen Einträge ist dieser Tabelle zu entnehmen:

Headerinformationen
Schlüsselwort Format Bedeutung
author String Der Name des Autors bzw. der Autorin
name String Der Anzeigename des Plugins
description String Eine Beschreibung, die an bestimmten Stellen der Blenderoberfläche angezeigt wird.
warning String Hier kann vor irgendetwas gewarnt werden. Dies wird vor der Installation grafisch hervorgehoben.
version Tupel oder Tripel Eine zwei- bis dreistellige Versionsnummer für das Plugin.
blender Tripel Die dreistellige Versionsnummer von Blender, unter der das Plugin laufen soll.
support String Ein Eintrag aus 'OFFICIAL','COMMUNITY' und 'TESTING', der den Supportstatus angibt. Neu erstellte und unveröffentlichte Plugins sollten 'TESTING' angeben.
category String Eine Kategorie (siehe untenstehende Liste).

Bei den Kategorien hat man die Wahl zwischen den folgenden dreiundzwanzig Einträgen:

Einbinden

Das so erhaltene Plugin umfasst neben der Headerdatei alle geladenen Module, die nicht von Python oder Blender bereitgestellt werden. Es kann entweder über die graphische Oberfläche installiert oder händisch in einen beliebig benannten Unterordner des Pluginordners ~/.config/blender/<Versionsnummer>/scripts/addons kopiert werden.