Statistics
| Branch: | Revision:

testing-framework / plugin_blender / switch.py @ 1fdee286

History | View | Annotate | Download (5.306 KB)

1
import bpy
2

    
3
class WechsleBibliothek(bpy.types.Operator):
4
    """Oberklasse aller Klassen für Texturwechsel"""
5
    bl_idname = "texture.to_library"
6
    bl_label  = "LIBRARY"
7
    
8
    # Wird ausgeführt um zu testen, ob die Operation des Operators möglich ist.
9
    @classmethod
10
    def poll(cls,context):
11
        return context.mode == "OBJECT"
12
    
13
    # Wird ausgeführt um die Textur zu wechseln
14
    def execute(self,context):
15
        model = bpy.context.scene.markerRender
16
        zaehler = 0
17
        zuEntfernen = []
18
        #Schleife über alle Marker
19
        for id in model.markerIDs:
20
            if(id.value in context.scene.objects.keys()):    
21
                marker = context.scene.objects[id.value]
22
                self.markerVerarbeiten(context,marker,model)
23
                zaehler += 1
24
            else:
25
                print("INFO: Missing "+id.value+" in "+str(context.scene.objects.keys()))
26
                zuEntfernen.append(zaehler)
27
        # Überflüssige Schlüssel entfernen
28
        for schluessel in zuEntfernen:   
29
            model.markerIDs.remove(schluessel)
30
        return {'FINISHED'}
31
            
32
    # Platzhalter soll überschrieben werden
33
    def markerVerarbeiten(self,context,marker,model):
34
        #Texturen usw. packen
35
        bpy.ops.file.pack_all()
36
        print("pack_all")
37
        
38
class WechsleZuBART(WechsleBibliothek):
39
    """Aktiviert die Texturen von BART"""
40
    bl_idname = "texture.to_bart"
41
    bl_label  = "BART"
42
    
43
    # Aktiviert die Textur von BART
44
    def markerVerarbeiten(self,context,marker,model):
45
        #Texturen usw. packen
46
        bpy.ops.file.pack_all()
47
        
48
        #Erstelle Wörterbücher, die einem Marker die id des Texturschachtes mit der entsprechenden Textur zuordnen
49
        texturenBART = { marker.material_slots[0].material.texture_slots[i].texture.marker_id:i for i in range(0,18) if marker.material_slots[0].material.texture_slots[i] != None and marker.material_slots[0].material.texture_slots[i].texture.library == 'BART'}
50
        texturenALVAR = { marker.material_slots[0].material.texture_slots[i].texture.marker_id:i for i in range(0,18) if marker.material_slots[0].material.texture_slots[i] != None and marker.material_slots[0].material.texture_slots[i].texture.library == 'ALVAR'}
51
        
52
        for bild in range(context.scene.frame_start,context.scene.frame_end):
53
            bpy.context.scene.frame_set(bild)
54
            #Die passende Textur von BART aktivieren
55
            for schluessel in texturenBART:
56
                if((schluessel in texturenALVAR and marker.material_slots[0].material.use_textures[texturenALVAR[schluessel]]) or marker.material_slots[0].material.use_textures[texturenBART[schluessel]]):
57
                    print(bild,":",schluessel)
58
                    marker.material_slots[0].material.use_textures[texturenBART[schluessel]] = True
59
                    marker.material_slots[0].material.keyframe_insert("use_textures",index=texturenBART[schluessel],frame=bild,options={'INSERTKEY_NEEDED'})
60
            #Die Textur von ALVAR ggf. deaktivieren
61
            for index in texturenALVAR:
62
                marker.material_slots[0].material.use_textures[texturenALVAR[index]] = False
63
                marker.material_slots[0].material.keyframe_insert("use_textures",index=texturenALVAR[index],frame=bild,options={'INSERTKEY_NEEDED'})
64
        
65
class WechsleZuALVAR(WechsleBibliothek):
66
    """Aktiviert die Texturen von ALVAR"""
67
    bl_idname = "texture.to_alvar"
68
    bl_label  = "ALVAR"
69
    
70
    #  Aktiviert die Textur von ALVAR
71
    def markerVerarbeiten(self,context,marker,model):
72
        #Texturen usw. packen
73
        bpy.ops.file.pack_all()
74
        
75
        #Erstelle Wörterbücher, die einem Marker die id des Texturschachtes mit der entsprechenden Textur zuordnen
76
        texturenBART = { marker.material_slots[0].material.texture_slots[i].texture.marker_id:i for i in range(0,18) if marker.material_slots[0].material.texture_slots[i] != None and marker.material_slots[0].material.texture_slots[i].texture.library == 'BART'}
77
        texturenALVAR = { marker.material_slots[0].material.texture_slots[i].texture.marker_id:i for i in range(0,18) if marker.material_slots[0].material.texture_slots[i] != None and marker.material_slots[0].material.texture_slots[i].texture.library == 'ALVAR'}
78
        print("texturenBART",texturenBART)
79
        print("texturenALVAR",texturenALVAR)
80
        
81
        for bild in range(context.scene.frame_start,context.scene.frame_end):
82
            bpy.context.scene.frame_set(bild)
83

    
84
            #Die passende Textur von ALVAR aktivieren
85
            for schluessel in texturenALVAR:
86
                if((schluessel in texturenBART and marker.material_slots[0].material.use_textures[texturenBART[schluessel]]) or marker.material_slots[0].material.use_textures[texturenALVAR[schluessel]]):
87
                    marker.material_slots[0].material.use_textures[texturenALVAR[schluessel]] = True
88
                    marker.material_slots[0].material.keyframe_insert("use_textures",index=texturenALVAR[schluessel],frame=bild,options={'INSERTKEY_NEEDED'})
89
            
90
            #Die Textur von BART ggf. deaktivieren
91
            for index in texturenBART:
92
                marker.material_slots[0].material.use_textures[texturenBART[index]] = False
93
                marker.material_slots[0].material.keyframe_insert("use_textures",index=texturenBART[index],frame=bild,options={'INSERTKEY_NEEDED'})