Pose-Mode und Weight Paint per Klick wechseln

Um eine Figur in Blender mit einer Armature zu versehen, muss ein Mesh mit dieser verbunden und anschließend der Einfluss jedes Knochens auf jeden Vertexpunkt festgelegt werden. Um die Auswirkungen zu sehen, ist das Umschalten der Modi auf beiden Objekten nötig, was unglaublich mühsam ist. Folgendes Skript erlaubt es, mit einem Klick umzuschalten.

Ausgangssituation ist eine Blender-Szene mit einem Mesh und einer Armature, die miteinander durch Parenting verbunden wurden.

Erzeuge einen Fensterbereich mit Texteditor und lege dort einen neuen Textblock namens ModusUmschalten an.

    Text in der Blenderdatei anlegen

    Kopiere folgenden Code und füge ihn in den neuen Textblock ein:

    # gamedev-profi.de - 28.11.2025
    # Wechselt per Klick zwischen Weight Paint und Pose Mode.
    import bpy
    
    # --- KONSTANTEN: Namen Ihrer Objekte anpassen ---
    MESH_NAME = "Kind"
    ARMATURE_NAME = "KindArmature"
    # --------------------------------------------------
    
    def toggle_weight_pose_mode():
        """Schaltet zwischen Weight Paint und Pose Mode um."""
        
        mesh_obj = bpy.data.objects.get(MESH_NAME)
        armature_obj = bpy.data.objects.get(ARMATURE_NAME)
    
        if not mesh_obj or not armature_obj:
            print(f"FEHLER: Mesh '{MESH_NAME}' oder Armatur '{ARMATURE_NAME}' nicht gefunden.")
            return
    
        # Überprüfen, ob die Armatur aktiv ist UND im Pose Mode
        is_in_pose_mode = (bpy.context.view_layer.objects.active == armature_obj) and (armature_obj.mode == 'POSE')
        
        # 1. Fall: Aktueller Zustand ist POSE-MODE -> Wechsel zu WEIGHT-PAINT
        if is_in_pose_mode:
            print("Wechsle von Pose Mode zu Weight Paint...")
            
            # 1.1 Zurück zum Object Mode
            if bpy.context.object and bpy.context.object.mode != 'OBJECT':
                 bpy.ops.object.mode_set(mode='OBJECT')
            
            # 1.2 Alle Objekte abwählen
            bpy.ops.object.select_all(action='DESELECT')
            
            # 1.3 Mesh und Armatur auswählen
            mesh_obj.select_set(True)
            armature_obj.select_set(True)
            
            # 1.4 Das MESH muss aktiv sein, um darauf Weight Paint auszuführen
            bpy.context.view_layer.objects.active = mesh_obj
            
            # 1.5 In den Weight Paint Modus wechseln
            bpy.ops.object.mode_set(mode='WEIGHT_PAINT')
            
        # 2. Fall: Aktueller Zustand ist NICHT POSE-MODE (vermutlich Weight Paint oder Object Mode) -> Wechsel zu POSE-MODE
        else:
            print("Wechsle zu Pose Mode...")
            
            # 2.1 Zurück zum Object Mode
            # Dieser Schritt ist ESSENZIELL, um den Weight-Paint-Modus sauber zu verlassen
            if bpy.context.object and bpy.context.object.mode != 'OBJECT':
                 bpy.ops.object.mode_set(mode='OBJECT')
                 
            # 2.2 Alle Objekte abwählen
            bpy.ops.object.select_all(action='DESELECT')
            
            # 2.3 Nur die Armatur auswählen
            armature_obj.select_set(True)
            
            # 2.4 Die ARMATUR MUSS aktiv gesetzt werden
            # Nur auf dem aktiven Objekt kann der Modus gewechselt werden
            bpy.context.view_layer.objects.active = armature_obj
            
            # 2.5 In den Pose Modus wechseln
            bpy.ops.object.mode_set(mode='POSE')
    
    # Skript ausführen
    toggle_weight_pose_mode()

    Ändere im Code in Zeile 7 und 8 den Namen zum Namen des Meshs und der zugehörigen Armature.

    Du kannst jetzt per Klick auf den Play-Button dieses Python-Skript ausführen und so sofort zwischen Pose-Mode und Weight-Paint-Modus umschalten. So ist eine viel schnellere visuelle Kontrolle der Gewichtung durch Ändern der Pose und Durchführen von Korrekturen im Weight-Paint-Modus möglich.

    Ergebnis: mit einem Klick den Modus auf Armature und Mesh für die Bearbeitung von Weightpaint oder Pose umschalten.

    Dr. René Bühling

    Hi, mein Name ist René und ich möchte Dir dabei helfen, deinen Traum vom eigenen Computerspiel Wirklichkeit werden zu lassen. Mein erstes kommerziell veröffentlichtes Spiel habe ich Mitte der 1990er Jahre als Hobby-Projekt mit einem Basic-Dialekt unter Windows entwickelt. Seither verfolge ich das Thema Spieleentwicklung in Hobby, Studium und Beruf. Ich habe über 20 Jahre Erfahrung in allen Phasen des Entwicklungsprozesses, die ich gerne mit dir teilen möchte.