diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-05-28 20:06:38 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-05-28 20:06:38 +0400 |
commit | 9ffb1c1dd85965612e09284e87642c2d6e1c09e1 (patch) | |
tree | 760ab6fbdce9d6aa691637302588546a768368fb /release/scripts | |
parent | e9d6b4db964ce98f04ecb23dbfbe8a11ee64d27b (diff) |
bpy.utils.time_to_frame() and frame_to_time() utility functions.
Diffstat (limited to 'release/scripts')
-rw-r--r-- | release/scripts/modules/bpy/utils.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/release/scripts/modules/bpy/utils.py b/release/scripts/modules/bpy/utils.py index 2824d6245e5..2e6d1bf8fbc 100644 --- a/release/scripts/modules/bpy/utils.py +++ b/release/scripts/modules/bpy/utils.py @@ -391,6 +391,11 @@ def smpte_from_frame(frame, fps=None, fps_base=None): Returns an SMPTE formatted string from the frame: "HH:MM:SS:FF". If *fps* and *fps_base* are not given the current scene is used. + + :arg time: time in seconds. + :type time: number or timedelta object + :return: the frame. + :rtype: float """ if fps is None: @@ -402,6 +407,56 @@ def smpte_from_frame(frame, fps=None, fps_base=None): return smpte_from_seconds((frame * fps_base) / fps, fps) +def time_from_frame(frame, fps=None, fps_base=None): + """ + Returns the time from a frame number . + + If *fps* and *fps_base* are not given the current scene is used. + + :arg frame: number. + :type frame: the frame number + :return: the time in seconds. + :rtype: timedate.timedelta + """ + + if fps is None: + fps = _bpy.context.scene.render.fps + + if fps_base is None: + fps_base = _bpy.context.scene.render.fps_base + + from datetime import timedelta + + return timedelta((frame * fps_base) / fps) + + +def time_to_frame(time, fps=None, fps_base=None): + """ + Returns a float frame number from a time given in seconds or + as a timedate.timedelta object. + + If *fps* and *fps_base* are not given the current scene is used. + + :arg time: time in seconds. + :type time: number or a timedate.timedelta object + :return: the frame. + :rtype: float + """ + + if fps is None: + fps = _bpy.context.scene.render.fps + + if fps_base is None: + fps_base = _bpy.context.scene.render.fps_base + + from datetime import timedelta + + if isinstance(time, timedelta): + time = time.total_seconds() + + return (time / fps_base) * fps + + def preset_find(name, preset_path, display_name=False, ext=".py"): if not name: return None |