[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47118] trunk/blender/release/scripts/ modules/bpy/utils.py: bpy.utils.time_to_frame() and frame_to_time() utility functions.
Campbell Barton
ideasman42 at gmail.com
Mon May 28 18:06:42 CEST 2012
Revision: 47118
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47118
Author: campbellbarton
Date: 2012-05-28 16:06:38 +0000 (Mon, 28 May 2012)
Log Message:
-----------
bpy.utils.time_to_frame() and frame_to_time() utility functions.
Modified Paths:
--------------
trunk/blender/release/scripts/modules/bpy/utils.py
Modified: trunk/blender/release/scripts/modules/bpy/utils.py
===================================================================
--- trunk/blender/release/scripts/modules/bpy/utils.py 2012-05-28 15:37:43 UTC (rev 47117)
+++ trunk/blender/release/scripts/modules/bpy/utils.py 2012-05-28 16:06:38 UTC (rev 47118)
@@ -391,6 +391,11 @@
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 @@
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
More information about the Bf-blender-cvs
mailing list