testing-framework / plugin_blender / switch.py @ 17a68f48
History | View | Annotate | Download (5.306 KB)
1 | 1fdee286 | Jonas Diekmann | 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'}) |