Difference between revisions of "Movie fade"

From PyMOLWiki
Jump to: navigation, search
m (fix imports)
(moved to github)
Line 1: Line 1:
 
{{Infobox script-repo
 
{{Infobox script-repo
 
|type      = Python Module
 
|type      = Python Module
|author    = [[User:Inchoate|Jason Vertrees]]
+
|filename  = movie_fade.py
|license  = [http://www.opensource.org/licenses/BSD-2-Clause BSD]
+
|author    = [[User:Inchoate|Jason Vertrees]] and [[User:Speleo3|Thomas Holder]]
 +
|license  = BSD-2-Clause
 
}}
 
}}
  
= Overview =
+
This script will help fade in and out settings in a movie. Just specify the setting, it's initial value at an initial frame and it's ending value and frame.
This script will help fade in and out settings in a movie. Just specify the setting, it's initial value at an initial frame and it's ending value and frame. For example, to fade in sticks from fully transparent to fully opaque across 60 frames do,
 
  
<source lang="python">
+
== Usage ==
movie_fade stick_transparency, 1, 1., 60, 0.
 
</source>
 
  
For help, type,
+
movie_fade setting, startFrame, startVal, endFrame, endVal [, selection ]
<source lang="python">
 
# syntax
 
  
movie_fade ?
+
== Examples ==
  
# usage
+
To fade in sticks from fully transparent to fully opaque across 60 frames do:
  
help movie_fade
+
<source lang="python">
 +
mset 1x60
 +
movie_fade stick_transparency, 1, 1., 60, 0.
 
</source>
 
</source>
  
 +
More complex example which involves camera motion:
  
 
<source lang="python">
 
<source lang="python">
from pymol import cmd, stored
+
fetch 1rx1, async=0
import string
+
as cartoon
import math
+
show surface
#
+
mset 1x80
# Movie fades work great, when there is only one mdo command
+
movie.roll
# per frame. mdo does NOT save a stack of commands per frame
+
movie_fade transparency1, 0., 40, 1.
# as one might thing it just consistently updates itself.
+
movie_fade transparency, 41, 1., 80, 0.
#
+
</source>
def mStore(frame, theCommand):
 
print "Storing %s into frame %d" % (theCommand, frame)
 
if len(stored.mdoCache)<frame:
 
diff = frame - len(stored.mdoCache)
 
for x in range(diff): stored.mdoCache.append("")
 
stored.mdoCache[frame-1] = stored.mdoCache[frame-1] + ";" + theCommand
 
  
def mRunCache():
+
== See Also ==
for f in range(len(stored.mdoCache)):
 
cmd.mdo(f+1, stored.mdoCache[f])
 
  
def mClearCache():
+
* [[mdo]]
for f in range(len(stored.mdoCache)):
+
* [[mappend]]
cmd.mdo(f+1, "")
+
* [[set]]
stored.mdoCache = []
 
 
 
def movie_fade( setting, startFrame, startVal, endFrame, endVal, smoothing="linear"):
 
"""fades and smooth transitions"""
 
 
 
try:
 
from pymol import stored
 
stored.mdoCache
 
except AttributeError:
 
print "mdoCache not found, creating new."
 
stored.mdoCache = []
 
 
 
startFrame = float(startFrame)
 
endFrame  = float(endFrame)
 
startVal  = float(startVal)
 
endVal    = float(endVal)
 
frameRange = math.fabs(endFrame-startFrame)
 
 
 
# boundary conditions to control the stricly <
 
# aspect of the range function
 
if startFrame<endFrame: endFrame = endFrame + 1.
 
if startFrame>endFrame: endFrame = endFrame - 1.
 
 
 
for fr in range(int(startFrame), int(endFrame)):
 
fracV2 = float((fr-startFrame)/frameRange)
 
fracV1 = 1.0 - fracV2
 
 
totalIntensity = fracV1 * startVal + fracV2 * endVal
 
if len(string.split(setting,','))==1:
 
mStore(fr,  "set %s, %1.3f, quiet=1" % (setting, totalIntensity))
 
else:
 
(s1,s2) = string.split(setting,',')
 
mStore(fr,  "set %s, %1.3f, %s, quiet=0" % (s1.strip('"'), totalIntensity, s2.strip('"')))
 
mRunCache()
 
cmd.extend("movie_fade", movie_fade)
 
cmd.extend("movie_fade_clear_cache", mClearCache)
 
</source>
 
  
 
[[Category:Script_Library]]
 
[[Category:Script_Library]]
 
[[Category:UI_Scripts]]
 
[[Category:UI_Scripts]]

Revision as of 05:15, 25 February 2013

Type Python Module
Download movie_fade.py
Author(s) Jason Vertrees and Thomas Holder
License BSD-2-Clause
This code has been put under version control in the project Pymol-script-repo

This script will help fade in and out settings in a movie. Just specify the setting, it's initial value at an initial frame and it's ending value and frame.

Usage

movie_fade setting, startFrame, startVal, endFrame, endVal [, selection ]

Examples

To fade in sticks from fully transparent to fully opaque across 60 frames do:

mset 1x60
movie_fade stick_transparency, 1, 1., 60, 0.

More complex example which involves camera motion:

fetch 1rx1, async=0
as cartoon
show surface
mset 1x80
movie.roll
movie_fade transparency,  1, 0., 40, 1.
movie_fade transparency, 41, 1., 80, 0.

See Also