计算化学公社

 找回密码 Forget password
 注册 Register
Views: 35361|回复 Reply: 42
打印 Print 上一主题 Last thread 下一主题 Next thread

[VMD] VMD初始化文件(vmd.rc)我的推荐设置

  [复制链接 Copy URL]

5万

帖子

99

威望

5万

eV
积分
112349

管理员

公社社长

VMD初始化文件(vmd.rc)我的推荐设置
My recommended settings of VMD initialization file (vmd.rc)

文/Sobereva@北京科音
First release: 2020-Apr-1   Last update: 2023-Apr-4


VMD(http://www.ks.uiuc.edu/Research/vmd/)是用得极为广泛的化学体系可视化程序,由于其极度灵活,有很多技巧可以使其用起来更方便。

VMD启动时会先用初始化文件对一些设置进行初始化,即执行里面的各种命令,用户也可以往里添加额外的命令。对于Windows版来说,这个文件就是VMD目录下的vmd.rc。对于Linux版来说,这个文件叫.vmdrc,VMD会先在当前目录下搜索,没有的话就去找~/.vmdrc,还没有的话去找$VMDDIR/.vmdrc(这里$VMDDIR环境变量是没有预先定义的),如果还找不到此文件,就会用默认设置。
注:Linux下的.vmdrc文件默认出现在安装目录下,比如以默认路径安装会出现为/usr/local/lib/vmd/.vmdrc,但如果不配置VMDDIR环境变量的话这个文件并不会被VMD在启动时自动载入。Linux下.vmdrc一般都是自行在用户主目录下创建。

在此我将我自己的初始化文件里的设置进行分享,其中额外添加的内容如下(放到原有内容后头即可)。下文的叙述是对撰文时最新版本VMD 1.9.3而言的。

mol default style {Lines 2.0}
display depthcue off
#color Display Background white
#axes location Off
display rendermode GLSL
display distance -8.0

proc bw {} {color Display Background white}
proc bb {} {color Display Background black}

user add key Right {animate next}
user add key Left {animate prev}
user add key Up {animate goto [expr $vmd_frame([molinfo top])+10]}
user add key Down {animate goto [expr $vmd_frame([molinfo top])-10]}
user add key b {mol bondsrecalc all; topo retypebonds}

proc bt {} {
global vmd_frame
trace variable vmd_frame([molinfo top]) w updatebond
}
proc updatebond {args} {
mol bondsrecalc all
topo retypebonds
}
proc bn {} {
global vmd_frame
trace vdelete vmd_frame([molinfo top]) w updatebond
}

proc fog {} {
display depthcue on
display cuemode Linear
display cuestart 1.75
display cueend 2.5
}

下面解释一下做这些设置有什么好处。

程序默认的显示方式是Lines,但是线的粗细太细,往往看不清楚,所以用mol default style {Lines 2.0}将默认的显示方式改为两倍粗细的Lines。

程序默认开着雾化,即让距离镜头越远的物体的颜色混入越多的背景色。这会导致在黑色背景下物体的颜色显得不够鲜艳,而在白色背景下物体又显得有点雾蒙蒙,因此用display depthcue off将雾化效果关掉。

#color Display Background white这行是被注释掉的。如果你想让VMD启动后默认就用白背景,就把#去掉。

#axes location Off这行也是被注释掉的,如果你想让VMD默认不显示坐标轴,就把#去掉。

VMD默认用称作Normal的Rendermode,但此时有些材质的显示效果很差,甚至Transparent材质根本没法正确显示出透明效果。因此通过display rendermode GLSL将默认的Rendermode设为效果好得多的GLSL。

有很多人肯定早已发现画面边缘的物体畸变得特别厉害,很难看。通过display distance -8.0语句可以充分避免。但导致一个问题就是原本在窗口左下方的坐标轴看不到了,需要坐标轴的时候可以选Display - Axes - Origin让坐标轴显示在窗口中央。

下面这两行是自定义命令。在VMD的文本窗口里输入bw(意为background white)就可以令背景立刻变为白的,输入bb就可以令背景立刻变为黑的,非常方便。
proc bw {} {color Display Background white}
proc bb {} {color Display Background black}


下面的内容是设置用户自定义快捷键。载入轨迹后,在图形窗口处于被激活的状态时(激活窗口就是鼠标点击这个窗口的意思),按左、右键就可以分别后退1帧、向前1帧,按上、下键就可以分别增加10帧、后退10帧。这使得观看轨迹方便很多。
user add key Right {animate next}
user add key Left {animate prev}
user add key Up {animate goto [expr $vmd_frame([molinfo top])+10]}
user add key Down {animate goto [expr $vmd_frame([molinfo top])-10]}


关于VMD判断原子间连接关系的问题我在《谈谈VMD可视化程序的连接关系的判断和设置问题》(http://sobereva.com/534)里有非常详细的说明。为了能很方便地让VMD对当前帧根据当前结构重新判断连接关系,增加了下面这句。图形窗口处于激活状态时按b键(意为bond)就能重新判断连接关系。
user add key b {mol bondsrecalc all; topo retypebonds}

如果想播放的时候实时自动更新连接关系,而不需要每次都按b键,靠以下语句可以实现。也就是定义了一个bt命令,如果在命令行窗口输入了bt,那么每当当前top体系的帧号发生了变化,就会调用updatebond命令自动来更新连接关系。这样做的代价就是对较大体系,每播放一帧都要根据距离重新判断连接关系,播放时会比较卡。
proc bt {} {
global vmd_frame
trace variable vmd_frame([molinfo top]) w updatebond
}
proc updatebond {args} {
mol bondsrecalc all
topo retypebonds
}


下面的内容定义bn命令。如果不想自动更新成键方式了,可以输入bn命令取消掉对帧号的跟踪即可。
proc bn {} {
global vmd_frame
trace vdelete vmd_frame([molinfo top]) w updatebond
}


雾化效果绝非毫无意义。只要恰当使用,就可以让近距离的物体完全不受影响,而让偏远的原子恰当地雾化,避免扰乱视觉、妨碍清楚地观看近距离的物体。下面的语句是自定义命令,只要在文本窗口输入fog,就可以打开雾化并且使用在我来看比较合适的雾化设置。如果觉得实际效果不好,需要进一步调节,可以用Display - Display Settings,修改里面的Cue Start和Cue End。
proc fog {} {
display depthcue on
display cuemode Linear
display cuestart 1.75
display cueend 2.5
}

评分 Rate

参与人数
Participants 17
eV +73 收起 理由
Reason
lunioneer + 4 赞!
kissw + 1 谢谢
石头砸鱼 + 4 谢谢
Lixiaolong + 3 好物!
Frozen-Penguin + 5 好物!
halouhapily + 4 好物!
TyDRfan + 5 赞!
LuLu-Chem + 4 赞!
丁越 + 5 赞!
verslalumiere + 4 233333
哇哇吐 + 5 谢谢
ezez + 5 赞!
exity + 5 好物!
leebo + 5 好物!
lijiayisjtu + 4 好物!
dazhong_jl + 5 赞!
liyuanhe211 + 5 好物!

查看全部评分 View all ratings

北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取北京科音培训的最新消息、避免错过网上有价值的计算化学文章!
欢迎加入人气非常高、专业性特别强的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

3098

帖子

28

威望

1万

eV
积分
16887

Level 6 (一方通行)

2#
发表于 Post on 2020-4-1 02:57:56 | 只看该作者 Only view this author
咦?两个同名的bb命令会冲突吗?

5万

帖子

99

威望

5万

eV
积分
112349

管理员

公社社长

3#
 楼主 Author| 发表于 Post on 2020-4-1 03:13:13 | 只看该作者 Only view this author
liyuanhe211 发表于 2020-4-1 02:57
咦?两个同名的bb命令会冲突吗?

是个bug,已改
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取北京科音培训的最新消息、避免错过网上有价值的计算化学文章!
欢迎加入人气非常高、专业性特别强的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

1187

帖子

5

威望

2841

eV
积分
4129

Level 6 (一方通行)

4#
发表于 Post on 2020-4-1 10:27:14 | 只看该作者 Only view this author
本帖最后由 snljty 于 2022-9-11 11:22 编辑

我的rc里面加了这样几个内容。
从Multiwfn里面提供的Tachyon渲染高质量图片的命令直接加到了vmd里。
比如
  1. proc Tach_MidShad {{graph_name vmdscene}} {
  2.     render Tachyon ${graph_name}.dat \
  3.     tachyon_WIN32.exe ${graph_name}.dat -format BMP -o ${graph_name}.bmp \
  4.     -trans_raster3d -res 1500 1500 -mediumshade -aasamples 24 -numthreads 2
  5. }
复制代码

然后用Tach_MidShad name就可以渲染成name.bmp。
加入了下列代码,在需要的时候用dump_view导出当前视图平移、旋转和缩放矩阵,然后拷贝下来,之后需要的时候用load_view再读取这个视图状态。
这对一系列相似结构,比如对于IRC每个点计算了某实空间函数的格点,想要批量作图,可以选择一个有代表性的结构,摆成合适的样子,导出视图状态,
自己保存下来,加入脚本,让vmd载入每一个文件时候都转成这个视图。
  1. set current_view {
  2.     {{1 0 0 0} {0 1 0 0} {0 0 1 0} {0 0 0 1}}
  3.     {{1 0 0 0} {0 1 0 0} {0 0 1 0} {0 0 0 1}}
  4.     {{0.322699 0 0 0} {0 0.322699 0 0} {0 0 0.322699 0} {0 0 0 1}}
  5. }

  6. proc dump_view {} {
  7.     global current_view
  8.     set current_view [molinfo top get {center_matrix rotate_matrix scale_matrix}]
  9.     puts $current_view
  10. }

  11. proc set_view {view} {
  12.     molinfo top set {center_matrix rotate_matrix scale_matrix} $view
  13. }

  14. proc body_diagonal_view {} {
  15.     # The rotation matrix is
  16.     # 1/sqrt(2)      0      1/sqrt(2)
  17.     # 1/sqrt(6)  2/sqrt(6) -1/sqrt(6)
  18.     # 1/sqrt(3)  1/sqrt(3)  1/sqrt(3)
  19.     display resetview
  20.     rotate x by 45
  21.     rotate y by [expr asin(sqrt(3)/3)/atan(1)*45]
  22.     rotate z by 30
  23. }
复制代码


后面加了两个命令,用来设置视角,以及在转成体对角线视角的。

评分 Rate

参与人数
Participants 6
eV +29 收起 理由
Reason
ThualishuT + 4 好东西!
hdhxx123 + 5 精品内容
lonemen + 5 太赞了!
中二晚期 + 5 GJ!
exity + 5 我个人还是习惯先tachyon渲染出dat文件,然.
冰释之川 + 5 GJ!

查看全部评分 View all ratings

117

帖子

0

威望

1951

eV
积分
2068

Level 5 (御坂)

5#
发表于 Post on 2020-4-1 18:43:08 | 只看该作者 Only view this author
SOB老师,有没有办法在vmd.rc文件里加入一些指令,使得三个窗口的初始大小和位置可以按需要设置呢?现在能查到的命令是诸如下面的:
display resize  500 500
display reposition  10  900
但是这两个命令设置的分别是OpenGL Display 窗口的大小和位置,其他两个窗口,尤其是Console窗口,完全没法自动设置(通过extensions - VMD Preference也没办法调节Console窗口)。现在只好每次打开程序都得手动调一调。
不知道SOB老师有没有办法。谢谢。

5万

帖子

99

威望

5万

eV
积分
112349

管理员

公社社长

6#
 楼主 Author| 发表于 Post on 2020-4-4 05:13:13 | 只看该作者 Only view this author
wanlichuan 发表于 2020-4-1 18:43
SOB老师,有没有办法在vmd.rc文件里加入一些指令,使得三个窗口的初始大小和位置可以按需要设置呢?现在能 ...

从原理上来说,貌似不可能有办法
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取北京科音培训的最新消息、避免错过网上有价值的计算化学文章!
欢迎加入人气非常高、专业性特别强的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

117

帖子

0

威望

1951

eV
积分
2068

Level 5 (御坂)

7#
发表于 Post on 2020-4-4 11:00:55 | 只看该作者 Only view this author
谢谢社长答复。为什么从原理上来说不可能通过vmd.rc来设置呢?

5万

帖子

99

威望

5万

eV
积分
112349

管理员

公社社长

8#
 楼主 Author| 发表于 Post on 2020-4-6 20:30:23 | 只看该作者 Only view this author
wanlichuan 发表于 2020-4-4 11:00
谢谢社长答复。为什么从原理上来说不可能通过vmd.rc来设置呢?

那个窗口是windows创建的,而VMD Main、OpenGL窗口是VMD程序创建的
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取北京科音培训的最新消息、避免错过网上有价值的计算化学文章!
欢迎加入人气非常高、专业性特别强的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

117

帖子

0

威望

1951

eV
积分
2068

Level 5 (御坂)

9#
发表于 Post on 2020-4-7 06:07:21 | 只看该作者 Only view this author
明白了,谢谢社长。

68

帖子

0

威望

1823

eV
积分
1891

Level 5 (御坂)

10#
发表于 Post on 2021-1-6 19:09:20 | 只看该作者 Only view this author
社长,这个设置对VMD1.9.4也是一样的吗?为什么修改了以后,输入相关命令都是invalid呢?

5万

帖子

99

威望

5万

eV
积分
112349

管理员

公社社长

11#
 楼主 Author| 发表于 Post on 2021-1-7 00:24:34 | 只看该作者 Only view this author
annaqz 发表于 2021-1-6 19:09
社长,这个设置对VMD1.9.4也是一样的吗?为什么修改了以后,输入相关命令都是invalid呢?

1.9.4根本都没正式发布,不要拿非正式版本说事
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取北京科音培训的最新消息、避免错过网上有价值的计算化学文章!
欢迎加入人气非常高、专业性特别强的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

68

帖子

0

威望

1823

eV
积分
1891

Level 5 (御坂)

12#
发表于 Post on 2021-1-7 09:57:40 | 只看该作者 Only view this author
好滴,明白啦。谢谢社长。

6

帖子

0

威望

1495

eV
积分
1501

Level 5 (御坂)

13#
发表于 Post on 2021-2-11 14:48:20 | 只看该作者 Only view this author
annaqz 发表于 2021-1-6 19:09
社长,这个设置对VMD1.9.4也是一样的吗?为什么修改了以后,输入相关命令都是invalid呢?

1.9.4也是有效的,我用着没问题
仔细读“对于Linux版来说,这个文件叫.vmdrc,VMD会先在当前目录下搜索,没有的话就去找~/.vmdrc,还没有的话去找$VMDDIR/.vmdrc(这里$VMDDIR环境变量是没有预先定义的),如果还找不到此文件,就会用默认设置。Linux下的.vmdrc文件是事先不存在的,一般都是在用户目录下自行创建。“

68

帖子

0

威望

1823

eV
积分
1891

Level 5 (御坂)

14#
发表于 Post on 2021-2-21 15:29:03 | 只看该作者 Only view this author
gcsun 发表于 2021-2-11 14:48
1.9.4也是有效的,我用着没问题
仔细读“对于Linux版来说,这个文件叫.vmdrc,VMD会先在当前目录下搜索 ...

好的,我再看一下。谢谢

245

帖子

0

威望

2572

eV
积分
2817

Level 5 (御坂)

15#
发表于 Post on 2021-7-15 16:00:44 | 只看该作者 Only view this author
snljty 发表于 2020-4-1 10:27
我的rc里面加了这样几个内容。
从Multiwfn里面提供的Tachyon渲染高质量图片的命令直接加到了vmd里。
比如 ...

太强了,非常感谢!

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-23 00:48 , Processed in 0.201756 second(s), 22 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list