Skip to content

Commit 7281835

Browse files
committed
Blender: Pass preview_frame, fps values to scripts
1 parent b0992aa commit 7281835

21 files changed

+245
-164
lines changed

src/blender/scripts/blinds.py

+10-6
Original file line numberDiff line numberDiff line change
@@ -124,25 +124,29 @@ def load_font(font_path):
124124
# params are automatically set by OpenShot
125125
bpy.context.scene.render.filepath = params["output_path"]
126126
bpy.context.scene.render.fps = params["fps"]
127+
if "fps_base" in params:
128+
bpy.context.scene.render.fps_base = params["fps_base"]
127129
bpy.context.scene.render.image_settings.file_format = params["file_format"]
128130
bpy.context.scene.render.image_settings.color_mode = params["color_mode"]
129131
bpy.context.scene.render.film_transparent = params["alpha_mode"]
130132
bpy.data.worlds[0].color = params["horizon_color"]
131133
bpy.context.scene.render.resolution_x = params["resolution_x"]
132134
bpy.context.scene.render.resolution_y = params["resolution_y"]
133135
bpy.context.scene.render.resolution_percentage = params["resolution_percentage"]
134-
bpy.context.scene.frame_start = params["start_frame"]
135-
bpy.context.scene.frame_end = params["end_frame"]
136136

137137
# Animation Speed (use Blender's time remapping to slow or speed up animation)
138138
length_multiplier = int(params["length_multiplier"]) # time remapping multiplier
139139
new_length = int(params["end_frame"]) * length_multiplier # new length (in frames)
140-
bpy.context.scene.frame_end = new_length
141140
bpy.context.scene.render.frame_map_old = 1
142141
bpy.context.scene.render.frame_map_new = length_multiplier
143-
if params["start_frame"] == params["end_frame"]:
144-
bpy.context.scene.frame_start = params["end_frame"]
145-
bpy.context.scene.frame_end = params["end_frame"]
142+
143+
# Set render length/position
144+
if "preview_frame" in params:
145+
bpy.context.scene.frame_start = params["preview_frame"]
146+
bpy.context.scene.frame_end = params["preview_frame"]
147+
else:
148+
bpy.context.scene.frame_start = params["start_frame"]
149+
bpy.context.scene.frame_end = new_length
146150

147151
# Render the current animation to the params["output_path"] folder
148152
bpy.ops.render.render(animation=params["animation"])

src/blender/scripts/blur.py

+10-6
Original file line numberDiff line numberDiff line change
@@ -121,25 +121,29 @@ def load_font(font_path):
121121
# params are automatically set by OpenShot
122122
bpy.context.scene.render.filepath = params["output_path"]
123123
bpy.context.scene.render.fps = params["fps"]
124+
if "fps_base" in params:
125+
bpy.context.scene.render.fps_base = params["fps_base"]
124126
bpy.context.scene.render.image_settings.file_format = params["file_format"]
125127
bpy.context.scene.render.image_settings.color_mode = params["color_mode"]
126128
bpy.context.scene.render.film_transparent = params["alpha_mode"]
127129
bpy.data.worlds[0].color = params["horizon_color"]
128130
bpy.context.scene.render.resolution_x = params["resolution_x"]
129131
bpy.context.scene.render.resolution_y = params["resolution_y"]
130132
bpy.context.scene.render.resolution_percentage = params["resolution_percentage"]
131-
bpy.context.scene.frame_start = params["start_frame"]
132-
bpy.context.scene.frame_end = params["end_frame"]
133133

134134
# Animation Speed (use Blender's time remapping to slow or speed up animation)
135135
length_multiplier = int(params["length_multiplier"]) # time remapping multiplier
136136
new_length = int(params["end_frame"]) * length_multiplier # new length (in frames)
137-
bpy.context.scene.frame_end = new_length
138137
bpy.context.scene.render.frame_map_old = 1
139138
bpy.context.scene.render.frame_map_new = length_multiplier
140-
if params["start_frame"] == params["end_frame"]:
141-
bpy.context.scene.frame_start = params["end_frame"]
142-
bpy.context.scene.frame_end = params["end_frame"]
139+
140+
# Set render length/position
141+
if "preview_frame" in params:
142+
bpy.context.scene.frame_start = params["preview_frame"]
143+
bpy.context.scene.frame_end = params["preview_frame"]
144+
else:
145+
bpy.context.scene.frame_start = params["start_frame"]
146+
bpy.context.scene.frame_end = new_length
143147

144148
# Render the current animation to the params["output_path"] folder
145149
bpy.ops.render.render(animation=params["animation"])

src/blender/scripts/colors.py

+10-6
Original file line numberDiff line numberDiff line change
@@ -244,25 +244,29 @@ def load_font(font_path):
244244
# params are automatically set by OpenShot
245245
bpy.context.scene.render.filepath = params["output_path"]
246246
bpy.context.scene.render.fps = params["fps"]
247+
if "fps_base" in params:
248+
bpy.context.scene.render.fps_base = params["fps_base"]
247249
bpy.context.scene.render.image_settings.file_format = params["file_format"]
248250
bpy.context.scene.render.image_settings.color_mode = params["color_mode"]
249251
bpy.context.scene.render.film_transparent = params["alpha_mode"]
250252
bpy.data.worlds[0].color = params["horizon_color"]
251253
bpy.context.scene.render.resolution_x = params["resolution_x"]
252254
bpy.context.scene.render.resolution_y = params["resolution_y"]
253255
bpy.context.scene.render.resolution_percentage = params["resolution_percentage"]
254-
bpy.context.scene.frame_start = params["start_frame"]
255-
bpy.context.scene.frame_end = params["end_frame"]
256256

257257
# Animation Speed (use Blender's time remapping to slow or speed up animation)
258258
length_multiplier = int(params["length_multiplier"]) # time remapping multiplier
259259
new_length = int(params["end_frame"]) * length_multiplier # new length (in frames)
260-
bpy.context.scene.frame_end = new_length
261260
bpy.context.scene.render.frame_map_old = 1
262261
bpy.context.scene.render.frame_map_new = length_multiplier
263-
if params["start_frame"] == params["end_frame"]:
264-
bpy.context.scene.frame_start = params["end_frame"]
265-
bpy.context.scene.frame_end = params["end_frame"]
262+
263+
# Set render length/position
264+
if "preview_frame" in params:
265+
bpy.context.scene.frame_start = params["preview_frame"]
266+
bpy.context.scene.frame_end = params["preview_frame"]
267+
else:
268+
bpy.context.scene.frame_start = params["start_frame"]
269+
bpy.context.scene.frame_end = new_length
266270

267271
# Render the current animation to the params["output_path"] folder
268272
bpy.ops.render.render(animation=params["animation"])

src/blender/scripts/dissolve.py

+41-26
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,14 @@ def load_font(font_path):
4949
# @param
5050
# @return
5151
#
52-
def createDissolveText(title, extrude, bevel_depth, spacemode, textsize, width, font):
52+
def createDissolveText(title, extrude, bevel_depth, spacemode, textsize, width, font, frame_count):
5353
""" Create aned animate the exploding texte """
5454

5555
# create text
56-
bpy.ops.object.text_add(radius=1.0, enter_editmode=False, align='WORLD', location=(0.0, 0.0, 0.0), rotation=(0.0, 0.0, 0.0))
56+
bpy.ops.object.text_add(
57+
radius=1.0, enter_editmode=False, align='WORLD',
58+
location=(0.0, 0.0, 0.0), rotation=(0.0, 0.0, 0.0)
59+
)
5760
ActiveObjectText = bpy.context.view_layer.objects.active
5861

5962
# naming/renaming the text element
@@ -112,8 +115,8 @@ def createDissolveText(title, extrude, bevel_depth, spacemode, textsize, width,
112115
# Particle parameters
113116
ActiveObjectText.particle_systems[0].settings.count = NbQuads
114117
ActiveObjectText.particle_systems[0].settings.frame_start = 10
115-
ActiveObjectText.particle_systems[0].settings.frame_end = 60
116-
ActiveObjectText.particle_systems[0].settings.lifetime = 120
118+
ActiveObjectText.particle_systems[0].settings.frame_end = int(frame_count * 0.75 - 10)
119+
ActiveObjectText.particle_systems[0].settings.lifetime = int(frame_count * 0.25 + 10)
117120
ActiveObjectText.particle_systems[0].point_cache.frame_step = 1
118121
ActiveObjectText.particle_systems[0].settings.normal_factor = 0.0
119122
# not useful
@@ -126,7 +129,10 @@ def createDissolveText(title, extrude, bevel_depth, spacemode, textsize, width,
126129
ActiveObjectText.particle_systems[0].settings.courant_target = 0.2
127130

128131
# Adding Wind force field on center and rotate it -90 on Y
129-
bpy.ops.object.effector_add(type='WIND', radius=1.0, enter_editmode=False, align='WORLD', location=(0.0, 0.0, 0.0), rotation=(0, -pi / 2, 0))
132+
bpy.ops.object.effector_add(
133+
type='WIND', radius=1.0, enter_editmode=False, align='WORLD',
134+
location=(0.0, 0.0, 0.0), rotation=(0, -pi / 2, 0)
135+
)
130136
ActiveObjectWindField = bpy.context.view_layer.objects.active
131137
ActiveObjectWindField.name = 'WindField'
132138
# settings
@@ -139,7 +145,10 @@ def createDissolveText(title, extrude, bevel_depth, spacemode, textsize, width,
139145
ActiveObjectWindField.field.use_absorption = False
140146

141147
# Adding Turbulence Force Field
142-
bpy.ops.object.effector_add(type='TURBULENCE', radius=1.0, enter_editmode=False, align='WORLD', location=(0.0, 0.0, 0.0), rotation=(0, 0, 0))
148+
bpy.ops.object.effector_add(
149+
type='TURBULENCE', radius=1.0, enter_editmode=False, align='WORLD',
150+
location=(0.0, 0.0, 0.0), rotation=(0, 0, 0)
151+
)
143152
ActiveObjectTurbulenceField = bpy.context.view_layer.objects.active
144153
ActiveObjectTurbulenceField.name = 'TurbulenceField'
145154
# settings
@@ -164,24 +173,23 @@ def createDissolveText(title, extrude, bevel_depth, spacemode, textsize, width,
164173

165174
TexSlot = ActiveObjectText.particle_systems[0].settings.texture_slots.add()
166175
TexSlot.texture = sTex
176+
TexSlot.use_map_time = True
167177

168178
bpy.ops.object.select_all(action='DESELECT')
169179

170180
# Create plane for controlling action of particle system (based on time)
171181
# if text is created on the fly 'Wipe' texture does not work! don't know really why!
172182
# so use of an existing plane, and resize it to the text x dimension
173-
bpy.ops.mesh.primitive_plane_add(size=2.0, calc_uvs=True, enter_editmode=False, align='WORLD', location=(0.0, 0.0, 0.0), rotation=(pi / 2, 0, 0))
183+
bpy.ops.mesh.primitive_plane_add(
184+
size=2.0, calc_uvs=True, enter_editmode=False, align='WORLD',
185+
location=(0.0, 0.0, 0.0), rotation=(pi / 2, 0, 0)
186+
)
174187
ActiveObjectPlane = bpy.context.view_layer.objects.active
175188
ActiveObjectPlane.name = 'Plane'
176189
# Change dimensions
177190
ActiveObjectPlane.dimensions = ((ActiveObjectText.dimensions[0] * 1.2), (ActiveObjectText.dimensions[1] * 1.2), 0)
178191
# hide plane for render
179192
ActiveObjectPlane.hide_render = True
180-
# show as wire in 3D
181-
# TODO: Not sure how to convert draw_type = 'WIRE'. Some ideas below.
182-
#ActiveObjectPlane.render_type = 'LINE'
183-
#ActiveObjectPlane.display_type = 'WIRE'
184-
#ActiveObjectPlane.show_wire = True
185193

186194
bpy.ops.object.select_all(action='DESELECT')
187195

@@ -197,6 +205,7 @@ def createDissolveText(title, extrude, bevel_depth, spacemode, textsize, width,
197205
bpy.ops.object.modifier_add(type='EXPLODE')
198206
bpy.ops.mesh.uv_texture_add() # name UVMap by default
199207
ActiveObjectText.modifiers['Explode'].particle_uv = 'UVMap'
208+
ActiveObjectText.modifiers['Explode'].show_dead = False
200209
ActiveObjectText.data.update()
201210

202211
# Don't forget to deselect before select!
@@ -264,41 +273,47 @@ def createDissolveText(title, extrude, bevel_depth, spacemode, textsize, width,
264273
# Get default font
265274
font = bpy.data.fonts["Bfont"]
266275

276+
# Compute animation length
277+
length_multiplier = int(params["length_multiplier"]) # time remapping multiplier
278+
frame_count = int(params["end_frame"]) * length_multiplier # new length (in frames)
279+
267280
# Create dissolve text changes (slow)
268-
createDissolveText(params["title"], params["extrude"], params["bevel_depth"], params["spacemode"], params["text_size"], params["width"], font)
281+
createDissolveText(
282+
params["title"], params["extrude"], params["bevel_depth"],
283+
params["spacemode"], params["text_size"], params["width"], font, frame_count
284+
)
269285

270286
# Change the material settings (color, alpha, etc...)
271287
material_object = bpy.data.materials["DissolveMaterial"]
272-
print(material_object)
273288
material_object.node_tree.nodes[1].inputs[17].default_value = params["diffuse_color"]
274289
material_object = bpy.data.materials["TextMaterial"]
275-
print(material_object)
276290
material_object.node_tree.nodes[1].inputs[17].default_value = params["diffuse_color"]
277291

278292
# Set the render options. It is important that these are set
279293
# to the same values as the current OpenShot project. These
280294
# params are automatically set by OpenShot
281295
bpy.context.scene.render.filepath = params["output_path"]
282296
bpy.context.scene.render.fps = params["fps"]
297+
if "fps_base" in params:
298+
bpy.context.scene.render.fps_base = params["fps_base"]
283299
bpy.context.scene.render.image_settings.file_format = params["file_format"]
284300
bpy.context.scene.render.image_settings.color_mode = params["color_mode"]
285301
bpy.context.scene.render.film_transparent = params["alpha_mode"]
286302
bpy.data.worlds[0].color = params["horizon_color"]
287303
bpy.context.scene.render.resolution_x = params["resolution_x"]
288304
bpy.context.scene.render.resolution_y = params["resolution_y"]
289305
bpy.context.scene.render.resolution_percentage = params["resolution_percentage"]
290-
bpy.context.scene.frame_start = params["start_frame"]
291-
bpy.context.scene.frame_end = params["end_frame"]
292306

293-
# Animation Speed (use Blender's time remapping to slow or speed up animation)
294-
length_multiplier = int(params["length_multiplier"]) # time remapping multiplier
295-
new_length = int(params["end_frame"]) * length_multiplier # new length (in frames)
296-
bpy.context.scene.frame_end = new_length
297-
bpy.context.scene.render.frame_map_old = 1
298-
bpy.context.scene.render.frame_map_new = length_multiplier
299-
if params["start_frame"] == params["end_frame"]:
300-
bpy.context.scene.frame_start = params["end_frame"]
301-
bpy.context.scene.frame_end = params["end_frame"]
307+
# Unbake particle cache
308+
bpy.ops.ptcache.free_bake_all()
309+
310+
# Set render length/position
311+
if "preview_frame" in params:
312+
bpy.context.scene.frame_start = params["preview_frame"]
313+
bpy.context.scene.frame_end = params["preview_frame"]
314+
else:
315+
bpy.context.scene.frame_start = params["start_frame"]
316+
bpy.context.scene.frame_end = frame_count
302317

303318
# Render the current animation to the params["output_path"] folder
304319
bpy.ops.render.render(animation=params["animation"])

src/blender/scripts/earth.py

+10-6
Original file line numberDiff line numberDiff line change
@@ -269,23 +269,27 @@ def check_longitude(depart_longitude, arrive_longitude):
269269
# params are automatically set by OpenShot
270270
bpy.context.scene.render.filepath = params["output_path"]
271271
bpy.context.scene.render.fps = params["fps"]
272+
if "fps_base" in params:
273+
bpy.context.scene.render.fps_base = params["fps_base"]
272274
bpy.context.scene.render.image_settings.file_format = params["file_format"]
273275
bpy.context.scene.render.image_settings.color_mode = params["color_mode"]
274276
bpy.context.scene.render.resolution_x = params["resolution_x"]
275277
bpy.context.scene.render.resolution_y = params["resolution_y"]
276278
bpy.context.scene.render.resolution_percentage = params["resolution_percentage"]
277-
bpy.context.scene.frame_start = params["start_frame"]
278-
bpy.context.scene.frame_end = params["end_frame"]
279279

280280
# Animation Speed (use Blender's time remapping to slow or speed up animation)
281281
length_multiplier = int(params["length_multiplier"]) # time remapping multiplier
282282
new_length = int(params["end_frame"]) * length_multiplier # new length (in frames)
283-
bpy.context.scene.frame_end = new_length
284283
bpy.context.scene.render.frame_map_old = 1
285284
bpy.context.scene.render.frame_map_new = length_multiplier
286-
if params["start_frame"] == params["end_frame"]:
287-
bpy.context.scene.frame_start = params["end_frame"]
288-
bpy.context.scene.frame_end = params["end_frame"]
285+
286+
# Set render length/position
287+
if "preview_frame" in params:
288+
bpy.context.scene.frame_start = params["preview_frame"]
289+
bpy.context.scene.frame_end = params["preview_frame"]
290+
else:
291+
bpy.context.scene.frame_start = params["start_frame"]
292+
bpy.context.scene.frame_end = new_length
289293

290294
# Render the current animation to the params["output_path"] folder
291295
bpy.ops.render.render(animation=params["animation"])

src/blender/scripts/explode.py

+15-11
Original file line numberDiff line numberDiff line change
@@ -202,11 +202,11 @@ def createExplodeTxt(title, particle_number, extrude, bevel_depth, spacemode, te
202202
# Get default font
203203
font = bpy.data.fonts["Bfont"]
204204

205-
# set the font
206-
#text_object.font = font
207-
208-
createExplodeTxt(params["title"], params["particle_number"], params["extrude"], params["bevel_depth"],
209-
params["spacemode"], params["text_size"], params["width"], font, params["ground_on_off"])
205+
createExplodeTxt(
206+
params["title"], params["particle_number"], params["extrude"],
207+
params["bevel_depth"], params["spacemode"], params["text_size"],
208+
params["width"], font, params["ground_on_off"]
209+
)
210210

211211
# Change the material settings (color, alpha, etc...)
212212
material_object = bpy.data.materials["TextMaterial"]
@@ -220,25 +220,29 @@ def createExplodeTxt(title, particle_number, extrude, bevel_depth, spacemode, te
220220
# params are automatically set by OpenShot
221221
bpy.context.scene.render.filepath = params["output_path"]
222222
bpy.context.scene.render.fps = params["fps"]
223+
if "fps_base" in params:
224+
bpy.context.scene.render.fps_base = params["fps_base"]
223225
bpy.context.scene.render.image_settings.file_format = params["file_format"]
224226
bpy.context.scene.render.image_settings.color_mode = params["color_mode"]
225227
bpy.context.scene.render.film_transparent = params["alpha_mode"]
226228
bpy.data.worlds[0].color = params["horizon_color"]
227229
bpy.context.scene.render.resolution_x = params["resolution_x"]
228230
bpy.context.scene.render.resolution_y = params["resolution_y"]
229231
bpy.context.scene.render.resolution_percentage = params["resolution_percentage"]
230-
bpy.context.scene.frame_start = params["start_frame"]
231-
bpy.context.scene.frame_end = params["end_frame"]
232232

233233
# Animation Speed (use Blender's time remapping to slow or speed up animation)
234234
length_multiplier = int(params["length_multiplier"]) # time remapping multiplier
235235
new_length = int(params["end_frame"]) * length_multiplier # new length (in frames)
236-
bpy.context.scene.frame_end = new_length
237236
bpy.context.scene.render.frame_map_old = 1
238237
bpy.context.scene.render.frame_map_new = length_multiplier
239-
if params["start_frame"] == params["end_frame"]:
240-
bpy.context.scene.frame_start = params["end_frame"]
241-
bpy.context.scene.frame_end = params["end_frame"]
238+
239+
# Set render length/position
240+
if "preview_frame" in params:
241+
bpy.context.scene.frame_start = params["preview_frame"]
242+
bpy.context.scene.frame_end = params["preview_frame"]
243+
else:
244+
bpy.context.scene.frame_start = params["start_frame"]
245+
bpy.context.scene.frame_end = new_length
242246

243247
# Render the current animation to the params["output_path"] folder
244248
bpy.ops.render.render(animation=params["animation"])

src/blender/scripts/fly_by_1.py

+10-6
Original file line numberDiff line numberDiff line change
@@ -114,25 +114,29 @@ def load_font(font_path):
114114
# params are automatically set by OpenShot
115115
bpy.context.scene.render.filepath = params["output_path"]
116116
bpy.context.scene.render.fps = params["fps"]
117+
if "fps_base" in params:
118+
bpy.context.scene.render.fps_base = params["fps_base"]
117119
bpy.context.scene.render.image_settings.file_format = params["file_format"]
118120
bpy.context.scene.render.image_settings.color_mode = params["color_mode"]
119121
bpy.context.scene.render.film_transparent = params["alpha_mode"]
120122
bpy.data.worlds[0].color = params["horizon_color"]
121123
bpy.context.scene.render.resolution_x = params["resolution_x"]
122124
bpy.context.scene.render.resolution_y = params["resolution_y"]
123125
bpy.context.scene.render.resolution_percentage = params["resolution_percentage"]
124-
bpy.context.scene.frame_start = params["start_frame"]
125-
bpy.context.scene.frame_end = params["end_frame"]
126126

127127
# Animation Speed (use Blender's time remapping to slow or speed up animation)
128128
length_multiplier = int(params["length_multiplier"]) # time remapping multiplier
129129
new_length = int(params["end_frame"]) * length_multiplier # new length (in frames)
130-
bpy.context.scene.frame_end = new_length
131130
bpy.context.scene.render.frame_map_old = 1
132131
bpy.context.scene.render.frame_map_new = length_multiplier
133-
if params["start_frame"] == params["end_frame"]:
134-
bpy.context.scene.frame_start = params["end_frame"]
135-
bpy.context.scene.frame_end = params["end_frame"]
132+
133+
# Set render length/position
134+
if "preview_frame" in params:
135+
bpy.context.scene.frame_start = params["preview_frame"]
136+
bpy.context.scene.frame_end = params["preview_frame"]
137+
else:
138+
bpy.context.scene.frame_start = params["start_frame"]
139+
bpy.context.scene.frame_end = new_length
136140

137141
# Render the current animation to the params["output_path"] folder
138142
bpy.ops.render.render(animation=params["animation"])

0 commit comments

Comments
 (0)