VMD制作体系旋转和轨迹播放的gif动画的简单方法
VMD制作体系旋转和轨迹播放的gif动画的简单方法
A simple way to create gif animations of system rotation and trajectory play using VMD
A simple way to create gif animations of system rotation and trajectory play using VMD
文/Sobereva@北京科音写于约2008年
用这个方法可以做出体系旋转演示的gif图,适合嵌入网页或幻灯片,比压成视频文件更清楚也往往更小,也无须调用videomach之类的,十分方便而且很快。而且可以保存进ppt保证演示时能够播放,不像视频文件嵌入ppt实际上只能作个视频文件的链接,而且很多视频还播放不了。
读者必须用Linux版VMD。且读者需要在Linux下安装ImageMagick,这样才脚本中调用的convert命令才能用。对于CentOS系统,运行yum install ImageMagick即可安装。
将以下内容保存为makegif.tcl文件。
proc makegif {dir} { set frame 0 for {set i 0} {$i < 360} {incr i 15} { set filename snap.[format "%04d" $frame].rgb render snapshot $filename incr frame rotate $dir by 15 } exec convert -delay 10 -loop 4 snap.*.rgb movie.gif foreach k [ls snap.*.rgb] { file delete $k} }
启动VMD后在tk console运行诸如source /sob/makegif.tcl。然后运行makegif y,这样体系就不断绕着y轴旋转并且截图,自动调用convert命令将图片合成为gif,储存在当前文件夹(即tkconsole输入pwd显示的文件夹)。如果绕x轴旋转就是makegif x,也可以是z。
对于Windows用户,也可以使用以上脚本产生一批图像文件后手动用ffmpeg、atani之类的软件合成gif。
实际效果如图:
(是否觉得蛋白部分显示效果有点像分子月刊的图呢?实现方法以后再谈)
如果想减小gif体积,有三种方法
1 缩小3D显示窗口
2 减少帧数,将makegif.tcl里面旋转角度和i变量的增量改大
3 减少颜色,默认是256色,减到16色体积可减小约一半。把makegif.tcl的convert命令后面加上-colors 16即可。但16色有点太狠了,尤其是颜色比较丰富的时候,32色才算勉强。
制作轨迹演示的gif动画
和上面方法用起来类似,脚本内容如下proc maketragif {start end {step 5} {color 32} {delay 5}} { for {set fn $start} {$fn < $end} {incr fn $step} { set filename snap.[format "%05d" $fn].rgb render snapshot $filename animate goto $fn } exec convert -delay $delay -loop 999 -colors $color snap.*.rgb movie.gif foreach k [ls snap.*.rgb] { file delete $k} }
同样先source一下这个脚本,然后可以用maketragif命令了
用法: maketragif 起始帧数 结束帧数 [步长] [颜色数] [动画中每帧间隔时间]
[]内代表非必需的参数
默认步长为5帧,颜色数32,每帧间隔5。
例如maketragif 350 650 5 64 10,代表350帧至650帧每5帧截一幅图,连结成gif,64种颜色,动画中每帧间隔为5。轨迹的动画生成在同目录movie.gif
当然也可以只输入maketragif 350 650,步长、颜色数、动画中每帧间隔时间都用默认的。