testing-framework / plugin_blender / switch.py @ 17a68f48
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'}) |