请选择 进入手机版 | 继续访问电脑版

计算化学公社

 找回密码
 现在注册!
查看: 1119|回复: 1

[建模与可视化] 用VMD的环境光遮蔽(AO)技术渲染电影级分子轨道和视频

[复制链接]

589

帖子

14

威望

2072

eV
积分
2941

Level 5 (御坂)

发表于 2019-3-9 11:31:03 | 显示全部楼层 |阅读模式
本帖最后由 ggdh 于 2019-3-10 08:36 编辑

一、简介
环境光遮蔽(Ambient Occlusion),简称“AO”,是一种非常复杂的光照技术,通过计算光线在物体上的折射和吸收,在受影响的位置上渲染出适当的阴影,添加渲染深度,从而进一步丰富标准光照渲染器的效果,综合改善细节尤其是暗部阴影,增强空间的层次感、真实感,同时加强和改善画面明暗对比,增强画面的艺术性。

二、使用vmd渲染带AO效果轨道图
首先参考sob的帖子
使用Multiwfn+VMD快速绘制高质量分子轨道等值面图
用VMD绘制艺术级轨道等值面图的方法

在VMD里使用环境光遮蔽改进渲染效果
在第二个博文中,先按sob教的方法操作,最后渲染图片之前按把分子和轨道按第三个帖子的方法操作,如下图所示

ds.png
然后把分子和轨道的材质选成AO开头的比如AOShiny。这种材质是专为AO优化的,如果用别的材质,可能需要自己慢慢调试材质参数和AO参数。这里需要指出,AO渲染的一个问题就是没有所见所得,也就是在vmd窗口中观察到的和实际渲染的效果差别很大,所以调节参数后,必须要产生图片才能知道最终结果。
最后渲染的时候一定要用Tychon 或者Tychon Internal,只有这两个渲染器支持AO。
得到的轨道效果如下,和sob的艺术级轨道比,另有一番风味,就叫电影级好了
ao-effect.jpg
关于背景虚化的一点说明:
虚化时候,把aasamples 调大,比如到1000,而把aosamples调小,比如调到1,景深越小,虚化越强,而焦距需要自己慢慢试,网上好像有TCl脚本可以算的,但是就不在此文范围了。
另外可以参考yuanhe的VMD + POV-Ray 实现焦点虚化的辅助程序

三、使用vmd 的 GPU-accelerated TachyonL-OptiX制作AO渲染视频
带AO效果的图渲染起来比较慢,如果是对较大体系做渲染,并且视频需要很多帧,那么就要启动GPU加速的TachyonL-OptiX渲染方法了。
首先用vmd做视频的方法先参考sob的博文:
用VMD做太极拳动画
VMD制作体系旋转演示播放轨迹的gif动画的简单方法
通过键级曲线和ELF/LOL/RDG等值面动画研究化学反应过程
我们就以第三篇博文中“5.制作LOL等值面图变化的动画”为例,介绍如何制作带AO效果的视频
前提条件:
1.LINUX系统(不需要图形界面)(必须使用LINUX系统,因为windows版本的vmd没有这个功能)
2.安装了CUDA 8.0以上版本
3.安装了带OpitX的vmd版本,比如我用的版本是:vmd-1.9.3.bin.LINUXAMD64-CUDA8-OptiX4-OSPRay111p1.opengl.tar.gz(其中OptiX是使用CUDA加速渲染的技术,而OSPRay是Intel Phi加速渲染的技术)
4.安装图片处理工具Imagemagick或者视频处理工具ffmpeg。
正式开始:
前面一路按照sob的方法操作(详见通过键级曲线和ELF/LOL/RDG等值面动画研究化学反应过程),然后把vmd脚本isoall.tcl改一下,其中改动的地方我添加注释如下:
color Display Background white
set isoval 0.6
display depthcue off
display projection Orthographic
axes location Off
display shadows on                                                        #打开阴影                           
display ambientocclusion on                                            #打开ao
render aasamples TachyonLOptiXInternal 24                     #设置抗锯齿强度,越大越平滑,但是渲染就越慢
render aosamples TachyonLOptiXInternal 24                     #设置ao取样大小,这个参数和上面的抗锯齿强度相乘决定了渲染一个图片的速度
for {set i 1} {$i<=60} {incr i} {
set name [format %04d $i]
puts "Processing $name.cub..."
mol default style CPK
mol new $name.cub
scale to 0.4
rotate x by -45
translate by 0.000000 0.20000 0.000000
mol modstyle 0 top CPK 0.500000 0.300000 12.000000 10.000000
color change rgb 10 0.4500000 0.4500000 0.4510000
mol modmaterial 0 top AOChalky                                      #分子材料改为AOChalky
mol addrep top
mol modstyle 1 top Isosurface $isoval 0 0 0 1 1
mol modmaterial 1 top AOShiny                                        #表面材料改为AOShiny
mol modcolor 1 top ColorID 12
#render snapshot $name.bmp
render TachyonLOptiXInternal $name.tga                           #把直接截图改成使用 TachyonLOptiXInternal 渲染                           
mol delete top
}
使用命令:
  1. vmd -dispdev text -e isoall.tcl -eofexit  
复制代码
批量产生图片。注意这里不需要启动vmd的图形界面,因此可以远程登陆linux系统进行该操作。
然后使用命令:
  1. convert *.tga -delay 20 -loop 0 movie.gif
复制代码
将所有的tga文件转成gif动画
或者使用命令:
  1. ffmpeg -framerate 15 -pattern_type glob -i "*.png"  -c:v libx264 -pix_fmt yuv420p movie.mp4
复制代码
做成H.264视频,最后效果如下,这里受限于gif的256色,效果打了折扣
movie1.gif

四、使用AO+TachyonL-OptiX制作动力学轨迹动画
下面附上一段把动力学轨迹中的每一帧使用ao+TachyonL-OptiX渲染成图片的tcl脚本。这个脚本不能直接用。关键地方我都写上注释,使用时需根据自己的实际情况修改。
--------------------------------------------------------------------------------------------------------------------
mol new {1.gro} type {gro}                                        #这里读入gromcs轨迹
mol addfile {1.trr} type {trr} waitfor all                        #读入轨迹时一定要加waitfor all 否则轨迹每读完就执行后面的命令会出错
###下面绿色的部分是分子样式的设置,根据自己的喜好修改
display resize 1280 720                                              #最后产生图片的尺寸,这里如果像第三部分中那样使用非gui模式的vmd,可以把display的尺寸设置的比实际屏幕大
color Display Background white
display projection Orthographic
display depthcue off
axes location Off
display resetview
rotate x by 90.000000
translate by 0.0 0.5 0.0
mol modselect 0 0 all not resname AAA
mol modmaterial 0 0 Transparent
material change opacity Transparent 0.100000
mol modstyle 0 0 DynamicBonds 1.6 0.200000 30.000000
mol modcolor 0 0 ResName
color Resname BBB silver
color Resname CCC silver
mol addrep 0
mol modselect 1 0 resname AAA
mol modcolor 1 0 Name
mol modstyle 1 0 VDW 0.900000 30.000000
mol modmaterial 1 0 AOShiny
color change rgb 10 0.4500000 0.4500000 0.4510000
###下面红色的部分是开启ao以及ao的参数设置,渲染的速度和需要渲染的分子数量,两个参数的乘积越,以及屏幕分辨率有关
display shadows on
display ambientocclusion on
render aasamples TachyonLOptiXInternal 12
render aosamples TachyonLOptiXInternal 2
###下面的蓝色部分是逐帧渲染的函数
proc make_movie {} {
    set num [molinfo top get numframes]
    # loop through the frames
    for {set i 1} {$i < $num} {incr i} {
        # go to the given frame
        set filename [format "%05d" $i].tga          #这里%05d 的意思就是输出图片的名称是00001.tga,00002tga。。。
        animate goto $i
        display update
        render TachyonLOptiXInternal $filename
        }
}
make_movie              #最后调用函数开始逐帧渲染
--------------------------------------------------------------------------------------------------------------------
渲染完成后,可以使用imagemagick中的mogrify 命令批量修改图片
使用ffmpeg 命令把图片合并成视频文件
使用premiere 后处理视频文件。。


评分

参与人数 12威望 +1 eV +55 收起 理由
lonemen + 5 精品内容
qczgzly + 5 好物!
一颗赛艇 + 5 精品内容
nachtmusik + 5 GJ!
TDHFjiang + 5 谢谢分享
yjmaxpayne + 5 好物!
ymygca + 5 好物!
kulaomega + 5 牛!
中二晚期 + 5
sobereva + 1
让你变成回忆 + 5 GJ!
captain + 5 牛!

查看全部评分

245

帖子

4

威望

1281

eV
积分
1606

Level 5 (御坂)

发表于 2019-4-2 23:56:55 | 显示全部楼层
蚕豆画的真好
您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

手机版|北京科音自然科学研究中心|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949-1号 )

GMT+8, 2019-8-21 12:03 , Processed in 0.175624 second(s), 28 queries .

快速回复 返回顶部 返回列表