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'}) |