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.

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

Das Skript

 1# Musik auf channel 0
 2# images auf channel 1
 3# videoas auf channel 2
 4# Uebergang strip/gamma cross channel 3
 5# https://developer.blender.org/diffusion/BAC/browse/master/sequencer_tools/export_strips.py
 6
 7import bpy
 8import os
 9import sys
10
11scriptpath = os.path.dirname(bpy.data.filepath) 
12shot_path = "//sequenzen/"
13framecounter = 25
14channel = 1
15lastfilename = None
16
17if not scriptpath in sys.path:
18    sys.path.append(scriptpath)
19
20from storyboard_images import shots
21
22#from storyboard_mixed import shots
23
24scene = bpy.context.scene.sequence_editor 
25area = bpy.context.area
26old_type = area.type
27area.type = 'SEQUENCE_EDITOR'
28
29# fuer Gamma Cross benötigen wir die beiden letzten Bilder/Movies in der
30# Sequenz, diese merken wir uns in den Variablen x und y.
31
32x = None
33y = None
34
35# Liste der Bilder/Videos im Drehbuch (storyboard) abarbeiten
36
37for shot in shots:
38    # Wenn es Film ist...
39
40    if shot["type"] == "movie":
41        print(shot)
42        folder = shot["folder"]
43        filename = shot["filename"]
44        bpy.ops.sequencer.movie_strip_add(filepath=folder,
45                                          files=[{"name": filename,
46                                                  "name": filename}],
47                                          relative_path=True,
48                                          show_multiview=False,
49                                          frame_start=framecounter,
50                                          channel=shot["channel"],
51                                          use_framerate=False)
52        framecounter += shot["length"] -25
53        x, y = y, x
54        y = scene.sequences_all.get(filename)
55
56    # Wenn es ein Bild ist ...
57    
58    if shot["type"] == "image":
59        filename = shot["filename"]
60        lastfilename = filename
61        folder = shot["folder"]
62        bpy.ops.sequencer.image_strip_add(directory=folder,
63                                          files=[{"name":filename,
64                                                  "name":filename}],
65                                          show_multiview=False,
66                                          frame_start=framecounter,
67                                          frame_end=framecounter + shot["length"],
68                                          channel=shot["channel"])
69        framecounter += shot["length"] - 25
70        x, y = y, x
71        y = scene.sequences_all.get(filename)
72
73    # Wenn mehr als ein Bild und/oder Video in der Sequenz vorhanden ist
74    # können wir beide mit einem Übergang (Gamma Cross) verbinden
75    
76    if len(scene.sequences_all) >= 2:
77        x.select = True
78        y.select = True
79        bpy.ops.sequencer.effect_strip_add(frame_start=framecounter,
80                                           frame_end=framecounter + 50,
81                                           type='GAMMA_CROSS')
82    
83area.type = old_type
84
85
86
87