|

#185 Video Animationen für Wardley Maps

Worum geht es in diesem Artikel?

Der Blog Post zeigt die Grundzüge eines Wardley Maps Animator Programm in python das mit o1pro entwickelt wurde

Der WardleyMapAnimator: Eine dynamische Visualisierungslösung für strategisches Denken

Das WardleyMapAnimator-Programm ist eine innovative Softwarelösung, die Wardley Maps in dynamische, narrative Videosequenzen verwandelt. Es verbindet die Kraft von Wardley Mapping mit audiovisueller Präsentation und schafft damit ein einzigartiges Werkzeug für strategische Kommunikation.

Ein Zwischenergebnis

Das Grundkonzept

Wardley Maps sind an sich schon ein mächtiges strategisches Werkzeug. Der WardleyMapAnimator geht jedoch einen Schritt weiter: Er verwandelt statische Maps in dynamische Geschichten. Das Programm baut die Map Schritt für Schritt auf, unterlegt sie mit gesprochenem Text und schafft so ein immersives Lernerlebnis.

Didaktische Vorteile

Der größte didaktische Mehrwert des Programms liegt in seinem schrittweisen, narrativen Ansatz:

  1. Schrittweise Komplexitätserhöhung: Anstatt den Betrachter mit einer fertigen, komplexen Map zu überfordern, wird die Karte Komponente für Komponente aufgebaut. Dies ermöglicht es dem Zuschauer, die Zusammenhänge organisch zu verstehen.
  2. Multimodale Vermittlung: Durch die Kombination von visuellen Elementen und gesprochenem Text werden verschiedene Lernkanäle angesprochen. Dies unterstützt unterschiedliche Lerntypen und verbessert die Informationsaufnahme.
  3. Geführte Exploration: Das Programm lenkt die Aufmerksamkeit des Betrachters gezielt durch die Map. Jede neue Komponente wird mit einer erklärenden Frage eingeführt, was das Verständnis der strategischen Zusammenhänge erleichtert.

Technische Besonderheiten

Der WardleyMapAnimator besticht durch mehrere innovative Features:

1. Dynamische Visualisierung

  • Animierte „Wave“ am unteren Rand der Karte
  • Farbkodierte Komponenten
  • Evolutionspfeile für strategische Entwicklungen
  • Anpassbare Übergangszeiten und Animationsgeschwindigkeiten

2. Audio-Integration

  • Integration der ElevenLabs Text-to-Speech API
  • Intelligentes Audio-Caching zur Ressourcenoptimierung
  • Synchronisierte Sprache und visuelle Elemente

3. Konfigurierbarkeit

  • YAML-basierte Konfiguration für einfache Anpassungen
  • Flexibles Styling-System
  • Anpassbare Timing-Parameter
  • 9:16 Videoformat-Optimierung für mobile Endgeräte

Problemlösung und Einsatzszenarien

Der WardleyMapAnimator löst mehrere zentrale Herausforderungen:

  1. Komplexitätsreduktion: Wardley Maps können für Neulinge überwältigend sein. Die schrittweise Animation macht sie zugänglicher.
  2. Aufmerksamkeitssteuerung: In Präsentationen ist es oft schwierig, den Fokus der Zuhörer zu lenken. Die dynamische Darstellung führt das Publikum gezielt durch die Map.
  3. Skalierbarkeit: Durch das Videoformat können strategische Erklärungen einfach geteilt und wiederholt angesehen werden.
  4. Konsistente Kommunikation: Die automatisierte Erstellung gewährleistet, dass komplexe strategische Zusammenhänge immer auf die gleiche, verständliche Weise erklärt werden.

Besondere Merkmale

Was den WardleyMapAnimator besonders macht:

  1. Die Wave-Animation: Die subtile Wellenbewegung am unteren Rand der Karte symbolisiert den evolutionären Charakter von Wardley Maps und verleiht der Visualisierung eine zusätzliche dynamische Dimension.
  2. Intelligentes Frage-System: Jede Komponente wird durch eine spezifische Frage eingeführt, was das analytische Denken fördert und die Zuschauer aktiv einbindet.
  3. Modularer Aufbau: Das Programm ist hochgradig modular aufgebaut, was Erweiterungen und Anpassungen erleichtert.
  4. Optimierte Videoproduktion: Die Integration von moviepy ermöglicht hochqualitative Videoausgaben mit synchronisiertem Audio.

Module des Scripts

import os
import math
import yaml
import textwrap
import numpy as np
import hashlib
import argparse
import matplotlib.pyplot as plt

Fazit

Der WardleyMapAnimator ist mehr als nur ein Visualisierungstool – er ist ein durchdachtes didaktisches Werkzeug, das komplexe strategische Zusammenhänge verständlich macht. Die Kombination aus schrittweisem Aufbau, sprachlicher Erklärung und visueller Animation schafft ein einzigartiges Lernerlebnis, das sowohl für Einsteiger als auch für erfahrene Strategen wertvoll ist. Die technische Umsetzung mit Python, die durchdachte Konfigurierbarkeit und die Integration moderner Text-to-Speech-Technologie machen das Programm zu einem zukunftsweisenden Werkzeug für strategische Kommunikation.

Programmierung des Scripts

Ich habe angefangen das Python Programm in ein paar Stunden mit Windsurf zu entwickeln, das war sehr mühselig. Auf Grund positiver Berichte, habe ich o1pro ausprobiert und das klappte in ca. 20 Minuten. Man muss aber sehr aufpassen, denn o1pro versucht gerne abzukürzen und hartnäckig auf den ganzen Code zu bestehen.

Hier lohnt sich Mckay Wrigley @mckaywrigley auf X zu folgen, denn Mackay zeigt wie er mit dem Modell arbeitet. Der Umgang mit Difftools ist noch was ungeübt für mich. Das wäre der nächste Schritt.

Steuerung des WardleyMapAnimators über YAML: Ein detaillierter Einblick

Die YAML-Konfigurationsdatei ist das Herzstück des WardleyMapAnimators und ermöglicht eine flexible und präzise Steuerung der Visualisierung. Hier ist eine ausführliche Analyse der wichtigsten Steuerungsmöglichkeiten:

 Zeit- und Animations-Parameter
# --------------------------------------------------------------------
timing:
 question_duration: 3        # Sekunden für jede Frage
 component_duration: 2       # Sekunden, bis eine Komponente eingeblendet wird
 connection_delay: 1         # Wartezeit bis Verbindung sichtbar wird
 fps: 24                     # Frames pro Sekunde


# --------------------------------------------------------------------
# Text-Stil
# --------------------------------------------------------------------
text_style:
 title:
   font_family: "Arial"
   font_size: 24
   font_weight: "bold"
   color: "#2C3E50"
   pad: 20  # Abstand vom oberen Rand


 questions:
   font_family: "Arial"
   font_size: 16
   font_weight: "normal"
   color: "#2C3E50"
   wrap_width: 50
   box_style:
     background_color: "#F8F9FA"
     alpha: 0.95
     edge_color: "#DEE2E6"
     box_style: "round4"
     pad: 1.0
   position:
     x: 0.5
     y: 0.85
     horizontal_alignment: "center"
     vertical_alignment: "top"


 component_labels:
   font_family: "Arial"
   font_size: 12
   font_weight: "bold"
   color: "#2C3E50"
   default_offset:
     x: 8
     y: 8


# --------------------------------------------------------------------
# Video-Format (9:16)
# --------------------------------------------------------------------
video:
 dimensions:
   width: 1080   # Breite
   height: 1920  # Höhe
 format: "mp4"


# --------------------------------------------------------------------
# Map-Stil (Farben, Achsen, etc.)
# --------------------------------------------------------------------
map_style:
 figure:
   width: 9     # Matplotlib-Einheiten im Verhältnis 9:16
   height: 16
   background_color: "#FFFFFF"
 axes:
   position:
     left: 0.2
     bottom: 0.1
     width: 0.6
     height: 0.8
   x_axis:
     ticks: [0, 0.25, 0.5, 0.75, 1]
     labels: ["Genesis", "Custom-Built", "Product", "Commodity", "Evolution"]
   y_axis:
     label: "Value Chain →"
   color: "#95A5A6"
   alpha: 0.3
   grid_alpha: 0.15
   label_color: "#34495E"
   label_size: 14
   label_pad: 15
 arrows:
   width: 0.005
   head_width: 0.02
   head_length: 0.02
 components:
   dot_color: "blue"
   dot_zorder: 3
   connection_color: "black"
   connection_alpha: 0.5
   connection_zorder: 1
   evolve_arrow:
     color: "red"
     style: "--"
     head_width: 0.02
     head_length: 0.02
     zorder: 1
   marker_size: 12
   label_offset: 8
   colors: ["#3498DB", "#E74C3C", "#2ECC71", "#F1C40F", "#9B59B6", "#1ABC9C"]


# --------------------------------------------------------------------
# Animierte Welle unten
# --------------------------------------------------------------------
wave_style:
 height: 0.15
 frequency: 2.0
 amplitude: 0.05
 speed: 1.0
 color: "blue"
 alpha: 0.3
 num_points: 100
 position:
   bottom: 0.0
   height_ratio: 0.15  # 15% des Diagramms unten


# --------------------------------------------------------------------
# Audio-Konfiguration (ElevenLabs)
# --------------------------------------------------------------------
audio:
 language: "de-DE"
 elevenlabs:
   # Bitte trage hier deinen eigenen ElevenLabs-Key ein
   api_key: ""
   voices:
     # Wir nehmen nur eine Voice "my_voice"
     my_voice:
       voice_id: ""
       stability: 0.75
       similarity_boost: 0.75
       style: 1.0
       use_speaker_boost: true
       loudness_boost: 1.0
   audio_settings:
     model_id: "eleven_multilingual_v2"
     optimize_streaming_latency: 0
     language: "de-DE"
   cache_dir: "audio_cache"


 timing:
   pause_after_question: 0.5
   fade_duration: 0.5


 background_music:
   enabled: false
   file_path: ""


# --------------------------------------------------------------------
# Wardley Map
#
# ACHTUNG: Koordinatenformat = (y, x)
# --------------------------------------------------------------------
wardley_map:
 title: "Tea Shop"


 # Hook-/Initial-Frage (optional)
 initial_question: "Warum ist Tee für unser Geschäft strategisch bedeutsam?"


 # Komponenten: anchors + components
 # Erstes Koordinatenfeld = y, zweites = x
 components:
   - name: "Business"
     y: 0.95
     x: 0.63
     question: "Welche langfristige Rolle spielt unser Business?"
     label_offset_y: 0
     label_offset_x: 0


   - name: "Public"
     y: 0.95
     x: 0.78
     question: "Wie beeinflusst die Öffentlichkeit unsere Strategie?"
     label_offset_y: 0
     label_offset_x: 0


   - name: "Cup of Tea"
     y: 0.79
     x: 0.61
     question: "Welche Bedeutung hat der Cup of Tea für die Kunden?"
     label_offset_y: -85.48
     label_offset_x: 3.78


   - name: "Cup"
     y: 0.73
     x: 0.78
     question: "Welche Rolle spielt der Cup für die Teezubereitung?"


   - name: "Tea"
     y: 0.63
     x: 0.81
     question: "Warum ist Tee selbst ein zentraler Werttreiber?"


   - name: "Hot Water"
     y: 0.52
     x: 0.80
     question: "Welche Anforderungen stellt heißes Wasser in der Kette?"


   - name: "Water"
     y: 0.38
     x: 0.82
     question: "Wieso ist Wasser elementar für jede Teezubereitung?"


   - name: "Kettle"
     y: 0.43
     x: 0.35
     question: "Wie wichtig ist der Kessel in unserem Prozess?"
     label_offset_y: -57
     label_offset_x: 4


   - name: "Power"
     y: 0.10
     x: 0.70
     question: "Wieso benötigen wir Strom als Grundlage?"
     label_offset_y: -27
     label_offset_x: 20


 # Verbindungen
 connections:
   - from: "Business"
     to: "Cup of Tea"
     question: "Welche Wechselwirkung zwischen Business und Cup of Tea?"
   - from: "Public"
     to: "Cup of Tea"
     question: "Wie beeinflusst Public unseren Cup of Tea?"
   - from: "Cup of Tea"
     to: "Cup"
     question: "Warum gehört Cup zur Teezubereitung?"
   - from: "Cup of Tea"
     to: "Tea"
     question: "Wieso braucht Cup of Tea den eigentlichen Tee?"
   - from: "Cup of Tea"
     to: "Hot Water"
     question: "Woher kommt heißes Wasser?"
   - from: "Hot Water"
     to: "Water"
     question: "Warum ist Wasser nötig, um heißes Wasser zu erzeugen?"
   - from: "Hot Water"
     to: "Kettle"
     question: "Wie hängt heißes Wasser vom Kessel ab?"
     label: "limited by"
   - from: "Kettle"
     to: "Power"
     question: "Wieso brauchen wir Strom für den Kessel?"


 # Evolutions-Pfeile
 evolve_arrows:
   - from: "Kettle"
     to: "Electric Kettle"
     # z. B. evolution_x: 0.62
     label_offset_y: 16
     label_offset_x: 5


   - from: "Power"
     to: "Power Evolved"
     # z. B. evolution_x: 0.89
     label_offset_y: -12
     label_offset_x: 21

1. Timing und Animation

timing:
 question_duration: 3
 component_duration: 2
 connection_delay: 1
 fps: 24

Diese Parameter steuern den zeitlichen Ablauf der Animation:

  • Die Fragedauer bestimmt, wie lange jede erklärende Frage eingeblendet wird
  • Die Komponentendauer definiert die Einblendezeit neuer Elemente
  • Der Connection-Delay schafft eine natürliche Pause vor dem Aufbau von Verbindungen
  • Die FPS-Rate gewährleistet flüssige Animationen

2. Visuelle Gestaltung

Text-Styling

text_style:
 title:
   font_family: "Arial"
   font_size: 24
   font_weight: "bold"
   color: "#2C3E50"

Die Typografie ist vollständig konfigurierbar:

  • Schriftarten und -größen für verschiedene Textelemente
  • Farbschemata zur visuellen Hierarchiebildung
  • Abstände und Positionierung für optimale Lesbarkeit

Map-Design

map_style:
 figure:
   width: 9
   height: 16
 components:
   colors: ["#3498DB", "#E74C3C", ...]

Das Layout der Wardley Map kann präzise gesteuert werden:

  • Anpassbare Dimensionen für verschiedene Ausgabeformate
  • Flexibles Farbschema für Komponenten
  • Konfigurierbare Achsen und Raster

3. Innovative Wave-Animation

wave_style:
 height: 0.15
 frequency: 2.0
 amplitude: 0.05
 speed: 1.0

Die charakteristische Wellenanimation lässt sich feinjustieren:

  • Höhe und Frequenz der Wellenbewegung
  • Geschwindigkeit und Amplitude für unterschiedliche visuelle Effekte
  • Transparenz und Farbgebung

4. Audio-Integration

audio:
 elevenlabs:
   api_key: ""
   voices:
     my_voice:
       stability: 0.75
       similarity_boost: 0.75

Die Sprachausgabe kann detailliert konfiguriert werden:

  • Integration verschiedener Stimmen
  • Anpassung von Sprachparametern
  • Caching-Strategien für optimale Performance

5. Inhaltliche Struktur

Komponenten-Definition

components:
   - name: "Business"
     y: 0.95
     x: 0.63
     question: "Welche langfristige Rolle spielt unser Business?"

Jede Komponente wird präzise definiert:

  • Position im Koordinatensystem
  • Zugehörige erklärende Frage
  • Optionale Label-Verschiebungen

Verbindungen und Evolution

connections:
   - from: "Business"
     to: "Cup of Tea"
     question: "Welche Wechselwirkung zwischen Business und Cup of Tea?"

Die Beziehungen zwischen Komponenten werden strukturiert erfasst:

  • Klare Definition von Start- und Endpunkten
  • Erklärende Fragen für jede Verbindung
  • Evolution-Pfeile für strategische Entwicklungen

Vorteile dieser Konfigurationsstruktur

  1. Wartbarkeit: Die klare YAML-Struktur macht Änderungen einfach und übersichtlich
  2. Wiederverwendbarkeit: Templates können für verschiedene Maps wiederverwendet werden
  3. Versionierung: Die textbasierte Konfiguration ermöglicht effizientes Versionsmanagement
  4. Flexibilität: Alle Aspekte der Visualisierung können ohne Codeänderungen angepasst werden
  5. Konsistenz: Einheitliche Darstellung über verschiedene Maps hinweg

Praktische Anwendung

  1. Erstellen Sie eine Kopie der YAML-Datei als Template
  2. Passen Sie die grundlegenden Stilparameter an Ihr Corporate Design an
  3. Definieren Sie Ihre Map-Komponenten und deren Beziehungen
  4. Formulieren Sie die erklärenden Fragen für jeden Schritt
  5. Justieren Sie Timing und Animation nach Bedarf
  6. Testen und iterieren Sie, bis das gewünschte Ergebnis erreicht ist

Diese umfangreiche Konfigurierbarkeit macht den WardleyMapAnimator zu einem flexiblen Werkzeug für verschiedenste Anwendungsfälle in der strategischen Kommunikation.

Teile diesen Artikel

Ähnliche Beiträge