Ein Skript für die Routienarbeiten

Arbeitschritte, so der Plan:

  1. Bilder laden
  2. Anzahl Frames/Bild festlegen
  3. Übergänge konfigurieren
  4. Intro, Abspann (Musik hinzufügen)

Die Daten

Die bildspezifischen Daten wie Namen, Ordner, Dauer der Anzeige und Typ werden in einer separaten Datei gespeichert (storyboard_images.py) und in Zeile 20 des Skipts (storyboard.py) importiert. Damit kann ein Drehbuch durch ein anderes ersetzt werden.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
shots = [
    {
        "type": "image",
        "folder": "//sequenzen/intro/",
        "filename": "intro-dummy.jpg",
        "channel": 1,
        "length": 150
    },
    ,
    {
        "type": "image",
        "folder": "//sequenzen/b01/",
        "filename": "gaensebluemchen.jpg",
        "channel": 1,
        "length": 150
    },
    {
        "type": "image",
        "folder": "//sequenzen/b02/",
        "filename": "hopfen.jpg",
        "channel": 1,
        "length": 150
    },
    {
        "type": "image",
        "folder": "//sequenzen/b03/",
        "filename": "meldekraut.jpg",
        "channel": 1,
        "length": 150
    },
    {
        "type": "image",
        "folder": "//sequenzen/b04/",
        "filename": "natternkopf.jpg",
        "channel": 1,
        "length": 150
    },
    {
        "type": "image",
        "folder": "//sequenzen/b05/",
        "filename": "rotklee.jpg",
        "channel": 1,
        "length": 150
    },
    {
        "type": "image",
        "folder": "//sequenzen/abspann/",
        "filename": "abspann-dummy.jpg",
        "channel": 1,
        "length": 150
    }
]

Das Skript

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# Musik auf channel 0
# images auf channel 1
# videoas auf channel 2
# Uebergang strip/gamma cross channel 3
# https://developer.blender.org/diffusion/BAC/browse/master/sequencer_tools/export_strips.py

import bpy
import os
import sys

scriptpath = os.path.dirname(bpy.data.filepath) 
shot_path = "//sequenzen/"
framecounter = 25
channel = 1
lastfilename = None

if not scriptpath in sys.path:
    sys.path.append(scriptpath)

from storyboard_images import shots

#from storyboard_mixed import shots

scene = bpy.context.scene.sequence_editor 
area = bpy.context.area
old_type = area.type
area.type = 'SEQUENCE_EDITOR'

# fuer Gamma Cross benötigen wir die beiden letzten Bilder/Movies in der
# Sequenz, diese merken wir uns in den Variablen x und y.

x = None
y = None

# Liste der Bilder/Videos im Drehbuch (storyboard) abarbeiten

for shot in shots:
    # Wenn es Film ist...

    if shot["type"] == "movie":
        print(shot)
        folder = shot["folder"]
        filename = shot["filename"]
        bpy.ops.sequencer.movie_strip_add(filepath=folder,
                                          files=[{"name": filename,
                                                  "name": filename}],
                                          relative_path=True,
                                          show_multiview=False,
                                          frame_start=framecounter,
                                          channel=shot["channel"],
                                          use_framerate=False)
        framecounter += shot["length"] -25
        x, y = y, x
        y = scene.sequences_all.get(filename)

    # Wenn es ein Bild ist ...
    
    if shot["type"] == "image":
        filename = shot["filename"]
        lastfilename = filename
        folder = shot["folder"]
        bpy.ops.sequencer.image_strip_add(directory=folder,
                                          files=[{"name":filename,
                                                  "name":filename}],
                                          show_multiview=False,
                                          frame_start=framecounter,
                                          frame_end=framecounter + shot["length"],
                                          channel=shot["channel"])
        framecounter += shot["length"] - 25
        x, y = y, x
        y = scene.sequences_all.get(filename)

    # Wenn mehr als ein Bild und/oder Video in der Sequenz vorhanden ist
    # können wir beide mit einem Übergang (Gamma Cross) verbinden
    
    if len(scene.sequences_all) >= 2:
        x.select = True
        y.select = True
        bpy.ops.sequencer.effect_strip_add(frame_start=framecounter,
                                           frame_end=framecounter + 50,
                                           type='GAMMA_CROSS')
    
area.type = old_type