• 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
    }

    久久精品国产99久久香蕉