VMD初始化文件(vmd.rc)我的推薦設置
VMD初始化文件(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://www.shanxitv.org/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
}