Skip to content

Commit

Permalink
Fixing Blender animated titles to correctly use the project FPS when …
Browse files Browse the repository at this point in the history
…rendering - duration and video_timebase were invalid in FPS which was different than 25.0 FPS.
  • Loading branch information
jonoomph committed Mar 29, 2023
1 parent 9f2041f commit 3d68a9c
Show file tree
Hide file tree
Showing 22 changed files with 33 additions and 23 deletions.
2 changes: 1 addition & 1 deletion src/blender/scripts/blinds.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ bpy.context.scene.render.resolution_percentage = params["resolution_percentage"]

# Animation Speed (use Blender's time remapping to slow or speed up animation)
length_multiplier = round(params["length_multiplier"]) # time remapping multiplier
new_length = round(params["end_frame"]) * length_multiplier # new length (in frames)
new_length = params["end_frame"] * length_multiplier # new length (in frames)
bpy.context.scene.render.frame_map_old = 1
bpy.context.scene.render.frame_map_new = length_multiplier

Expand Down
2 changes: 1 addition & 1 deletion src/blender/scripts/blur.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ bpy.context.scene.render.resolution_percentage = params["resolution_percentage"]

# Animation Speed (use Blender's time remapping to slow or speed up animation)
length_multiplier = round(params["length_multiplier"]) # time remapping multiplier
new_length = round(params["end_frame"]) * length_multiplier # new length (in frames)
new_length = params["end_frame"] * length_multiplier # new length (in frames)
bpy.context.scene.render.frame_map_old = 1
bpy.context.scene.render.frame_map_new = length_multiplier

Expand Down
2 changes: 1 addition & 1 deletion src/blender/scripts/colors.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ render.resolution_percentage = params["resolution_percentage"]

# Animation Speed (use Blender's time remapping to slow or speed up animation)
length_multiplier = round(params["length_multiplier"]) # time remapping multiplier
new_length = round(params["end_frame"]) * length_multiplier # new length (in frames)
new_length = params["end_frame"] * length_multiplier # new length (in frames)
render.frame_map_old = 1
render.frame_map_new = length_multiplier

Expand Down
2 changes: 1 addition & 1 deletion src/blender/scripts/dissolve.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@ bpy.ops.ptcache.free_bake_all()

# Animation Speed (use Blender's time remapping to slow or speed up animation)
length_multiplier = round(params["length_multiplier"]) # time remapping multiplier
new_length = round(params["end_frame"]) * length_multiplier # new length (in frames)
new_length = params["end_frame"] * length_multiplier # new length (in frames)
render.frame_map_old = 1
render.frame_map_new = length_multiplier

Expand Down
2 changes: 1 addition & 1 deletion src/blender/scripts/earth.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@ render.resolution_percentage = params["resolution_percentage"]

# Animation Speed (use Blender's time remapping to slow or speed up animation)
length_multiplier = round(params["length_multiplier"]) # time remapping multiplier
new_length = round(params["end_frame"]) * length_multiplier # new length (in frames)
new_length = params["end_frame"] * length_multiplier # new length (in frames)
render.frame_map_old = 1
render.frame_map_new = length_multiplier

Expand Down
2 changes: 1 addition & 1 deletion src/blender/scripts/explode.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ bpy.ops.ptcache.free_bake_all()

# Animation Speed (use Blender's time remapping to slow or speed up animation)
length_multiplier = round(params["length_multiplier"]) # time remapping multiplier
new_length = round(params["end_frame"]) * length_multiplier # new length (in frames)
new_length = params["end_frame"] * length_multiplier # new length (in frames)
render.frame_map_old = 1
render.frame_map_new = length_multiplier

Expand Down
2 changes: 1 addition & 1 deletion src/blender/scripts/fly_by_1.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ bpy.context.scene.render.resolution_percentage = params["resolution_percentage"]

# Animation Speed (use Blender's time remapping to slow or speed up animation)
length_multiplier = round(params["length_multiplier"]) # time remapping multiplier
new_length = round(params["end_frame"]) * length_multiplier # new length (in frames)
new_length = params["end_frame"] * length_multiplier # new length (in frames)
bpy.context.scene.render.frame_map_old = 1
bpy.context.scene.render.frame_map_new = length_multiplier

Expand Down
2 changes: 1 addition & 1 deletion src/blender/scripts/fly_by_two_titles.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ bpy.context.scene.render.resolution_percentage = params["resolution_percentage"]

# Animation Speed (use Blender's time remapping to slow or speed up animation)
length_multiplier = round(params["length_multiplier"]) # time remapping multiplier
new_length = round(params["end_frame"]) * length_multiplier # new length (in frames)
new_length = params["end_frame"] * length_multiplier # new length (in frames)
bpy.context.scene.render.frame_map_old = 1
bpy.context.scene.render.frame_map_new = length_multiplier

Expand Down
2 changes: 1 addition & 1 deletion src/blender/scripts/glare.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ bpy.context.scene.render.resolution_percentage = params["resolution_percentage"]

# Animation Speed (use Blender's time remapping to slow or speed up animation)
length_multiplier = round(params["length_multiplier"]) # time remapping multiplier
new_length = round(params["end_frame"]) * length_multiplier # new length (in frames)
new_length = params["end_frame"] * length_multiplier # new length (in frames)
bpy.context.scene.render.frame_map_old = 1
bpy.context.scene.render.frame_map_new = length_multiplier

Expand Down
2 changes: 1 addition & 1 deletion src/blender/scripts/glass_slider.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ bpy.context.scene.render.resolution_percentage = params["resolution_percentage"]

# Animation Speed (use Blender's time remapping to slow or speed up animation)
length_multiplier = round(params["length_multiplier"]) # time remapping multiplier
new_length = round(params["end_frame"]) * length_multiplier # new length (in frames)
new_length = params["end_frame"] * length_multiplier # new length (in frames)
bpy.context.scene.render.frame_map_old = 1
bpy.context.scene.render.frame_map_new = length_multiplier

Expand Down
2 changes: 1 addition & 1 deletion src/blender/scripts/lens_flare.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ bpy.context.scene.render.resolution_percentage = params["resolution_percentage"]

# Animation Speed (use Blender's time remapping to slow or speed up animation)
length_multiplier = round(params["length_multiplier"]) # time remapping multiplier
new_length = round(params["end_frame"]) * length_multiplier # new length (in frames)
new_length = params["end_frame"] * length_multiplier # new length (in frames)
bpy.context.scene.render.frame_map_old = 1
bpy.context.scene.render.frame_map_new = length_multiplier

Expand Down
2 changes: 1 addition & 1 deletion src/blender/scripts/magic_wand.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ bpy.ops.ptcache.free_bake_all()

# Animation Speed (use Blender's time remapping to slow or speed up animation)
length_multiplier = round(params["length_multiplier"]) # time remapping multiplier
new_length = round(params["end_frame"]) * length_multiplier # new length (in frames)
new_length = params["end_frame"] * length_multiplier # new length (in frames)
render.frame_map_old = 1
render.frame_map_new = length_multiplier

Expand Down
2 changes: 1 addition & 1 deletion src/blender/scripts/neon_curves.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ bpy.context.scene.render.resolution_percentage = params["resolution_percentage"]

# Animation Speed (use Blender's time remapping to slow or speed up animation)
length_multiplier = round(params["length_multiplier"]) # time remapping multiplier
new_length = round(params["end_frame"]) * length_multiplier # new length (in frames)
new_length = params["end_frame"] * length_multiplier # new length (in frames)
bpy.context.scene.render.frame_map_old = 1
bpy.context.scene.render.frame_map_new = length_multiplier

Expand Down
2 changes: 1 addition & 1 deletion src/blender/scripts/picture_frames_4.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ bpy.context.scene.render.resolution_percentage = params["resolution_percentage"]

# Animation Speed (use Blender's time remapping to slow or speed up animation)
length_multiplier = round(params["length_multiplier"]) # time remapping multiplier
new_length = round(params["end_frame"]) * length_multiplier # new length (in frames)
new_length = params["end_frame"] * length_multiplier # new length (in frames)
bpy.context.scene.render.frame_map_old = 1
bpy.context.scene.render.frame_map_new = length_multiplier

Expand Down
2 changes: 1 addition & 1 deletion src/blender/scripts/rotate_360.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ bpy.context.scene.render.resolution_percentage = params["resolution_percentage"]

# Animation Speed (use Blender's time remapping to slow or speed up animation)
length_multiplier = round(params["length_multiplier"]) # time remapping multiplier
new_length = round(params["end_frame"]) * length_multiplier # new length (in frames)
new_length = params["end_frame"] * length_multiplier # new length (in frames)
bpy.context.scene.render.frame_map_old = 1
bpy.context.scene.render.frame_map_new = length_multiplier

Expand Down
2 changes: 1 addition & 1 deletion src/blender/scripts/slide_left_to_right.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ bpy.context.scene.render.resolution_percentage = params["resolution_percentage"]

# Animation Speed (use Blender's time remapping to slow or speed up animation)
length_multiplier = round(params["length_multiplier"]) # time remapping multiplier
new_length = round(params["end_frame"]) * length_multiplier # new length (in frames)
new_length = params["end_frame"] * length_multiplier # new length (in frames)
bpy.context.scene.render.frame_map_old = 1
bpy.context.scene.render.frame_map_new = length_multiplier

Expand Down
2 changes: 1 addition & 1 deletion src/blender/scripts/snow.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ bpy.ops.ptcache.free_bake_all()

# Animation Speed (use Blender's time remapping to slow or speed up animation)
length_multiplier = round(params["length_multiplier"]) # time remapping multiplier
new_length = round(params["end_frame"]) * length_multiplier # new length (in frames)
new_length = params["end_frame"] * length_multiplier # new length (in frames)
bpy.context.scene.render.frame_map_old = 1
bpy.context.scene.render.frame_map_new = length_multiplier

Expand Down
2 changes: 1 addition & 1 deletion src/blender/scripts/spacemovie_intro.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ bpy.context.scene.render.resolution_percentage = params["resolution_percentage"]

# Animation Speed (use Blender's time remapping to slow or speed up animation)
length_multiplier = round(params["length_multiplier"]) # time remapping multiplier
new_length = round(params["end_frame"]) * length_multiplier # new length (in frames)
new_length = params["end_frame"] * length_multiplier # new length (in frames)
bpy.context.scene.render.frame_map_old = 1
bpy.context.scene.render.frame_map_new = length_multiplier

Expand Down
2 changes: 1 addition & 1 deletion src/blender/scripts/wireframe_text.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ bpy.context.scene.render.resolution_percentage = params["resolution_percentage"]

# Animation Speed (use Blender's time remapping to slow or speed up animation)
length_multiplier = round(params["length_multiplier"]) # time remapping multiplier
new_length = round(params["end_frame"]) * length_multiplier # new length (in frames)
new_length = params["end_frame"] * length_multiplier # new length (in frames)
bpy.context.scene.render.frame_map_old = 1
bpy.context.scene.render.frame_map_new = length_multiplier

Expand Down
2 changes: 1 addition & 1 deletion src/blender/scripts/zoom_clapboard.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ bpy.context.scene.render.resolution_percentage = params["resolution_percentage"]

# Animation Speed (use Blender's time remapping to slow or speed up animation)
length_multiplier = round(params["length_multiplier"]) # time remapping multiplier
new_length = round(params["end_frame"]) * length_multiplier # new length (in frames)
new_length = params["end_frame"] * length_multiplier # new length (in frames)
bpy.context.scene.render.frame_map_old = 1
bpy.context.scene.render.frame_map_new = length_multiplier

Expand Down
11 changes: 9 additions & 2 deletions src/windows/models/files_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -321,8 +321,9 @@ def add_files(self, files, image_seq_details=None, quiet=False,
if clip and clip.info.duration > 0.0:
# Update file details
new_file.data["media_type"] = "video"
duration = new_file.data["duration"]

if seq_info and "fps" in seq_info:
if seq_info and "fps" in seq_info and "length_multiplier" in seq_info:
# Blender Titles specify their fps in seq_info
fps_num = seq_info.get("fps", {}).get("num", 25)
fps_den = seq_info.get("fps", {}).get("den", 1)
Expand All @@ -332,9 +333,15 @@ def add_files(self, files, image_seq_details=None, quiet=False,
fps_num = get_app().project.get("fps").get("num", 30)
fps_den = get_app().project.get("fps").get("den", 1)
log.debug("Image Sequence using project FPS: %s / %s" % (fps_num, fps_den))

# Adjust FPS (difference between 25 FPS and actual FPS)
duration *= 25.0 / (float(fps_num) / float(fps_den))
new_file.data["duration"] = duration
new_file.data["fps"] = {"num": fps_num, "den": fps_den}
new_file.data["video_timebase"] = {"num": fps_den, "den": fps_num}

log.info(f"Imported '{new_path}' as image sequence with '{fps_num}/{fps_den}' FPS")
log.info(f"Imported '{new_path}' as image sequence with '{fps_num}/{fps_den}' FPS "
f"and '{duration}' duration")

# Remove any other image sequence files from the list we're processing
match_glob = "{}{}.{}".format(seq_info.get("base_name"), '[0-9]*', seq_info.get("extension"))
Expand Down
5 changes: 4 additions & 1 deletion src/windows/views/blender_listview.py
Original file line number Diff line number Diff line change
Expand Up @@ -682,7 +682,10 @@ def __init__(self, parent, *args):
# All animated titles are created at an assumed default 25.0 FPS
self.fps = self.app.project.get("fps")
fps_float = self.fps["num"] / float(self.fps["den"])
self.project_fps_diff = fps_float / 25.0

# NOTE: Blender can only use INT precision when remapping
# frames. 1X, 2X, 3X, etc... not 1.2X
self.project_fps_diff = round(fps_float / 25.0)

# Init dictionary which holds the values to the template parameters
self.params = {}
Expand Down

0 comments on commit 3d68a9c

Please sign in to comment.