本帖最后由 liyuanhe211 于 2019-10-14 03:11 编辑
本程序可随意传播、使用、改写。但将本文的教程复制至本站之外(含其图片,图片可编辑但不可去除水印),需注明作者及出处。
VMD中实现带焦点虚化的渲染颇为不便,结合Techyon实现时,必须使用Perspective显示模式(感觉戳到眼睛里)、虚化效果很差(采样率很低)、难以自定义效果。且必须自己尝试多次才能确定出合适的焦点深度。
为了解决这个问题我写了一个简单的程序辅助实现这一目的。
程序仅在Windows 8.1, 及最新的 VMD 1.9.3下测试并打包;不保证其他平台可用,但程序代码本身(除已存的程序路径外)是跨平台的、可以自行尝试。
准备工作:安装 VMD 1.9.3 和 POV-Ray 3.7 (程序包里已附带),其中 POV-Ray 3.7 请安装到默认目录(否则自己找到并记住可执行文件 pvengine64.exe 的路径)
该程序支持VMD中可显示的任意表示方式,使用CPK表示完整分子时比较方便(其他情况(如蛋白的NewCartoon方式)在本文最后说明)。
首先在VMD中调整出想要的样子。如下图所示,此处我们假设希望通过焦点模糊突出箭头所示的羰基。
打开程序,首先点击【Gen .pov Filename】按钮,程序会询问最终渲染图片的保存路径,正常命名即可。
(注:虽然程序本身其实无此限制,但为了改掉一些坏毛病,程序会检查并禁止路径中带有空格)
正确选择保存路径和文件名后,文件路径会自动被复制到剪切板中(不必Ctrl+C)
此时打开VMD的渲染控制,按照程序界面上的说明,做如下设定: 1. 选择渲染器为POV-Ray 3.6 2. 清空Filename栏,并直接Ctrl+V (程序已将所需的路径复制到剪切板了) 3. 清空Render Command 4. 点击 Start Rendering
这个过程只产生渲染文件而不进行渲染,应该瞬间结束。
随后点击程序中的【Load VMD generated .pov file】按钮载入文件。
随后需确定焦点所在的位置。
程序通过原子位置、或几个原子的几何重心确定焦点位置。
通过 VMD 的 Pick 模式(快捷键为 P)可以方便的在命令行窗口读到所关心原子的序数,此处C=O的序数分别是 Molecule ID为 1 的分子的 25 和 26 号原子
将此信息按格式输入程序 [Focal atoms] 中: 完整写法为 [Molecule-ID]:[Representation-ID]:[atom_index],对上述原子是 "1:0:25 1:0:26"(不含引号,下同) 如果 Molecule-ID = 0 或 Representation-ID = 0 可以省去 例如上面的分子 Molecule-ID = 1,不能省去,但体系只有一个Representation(在 VMD-Graphics-Representations 中观察),故可简写为 "1:25 1:26"
点击【Submit】按钮后即可开始渲染。如果 POV-Ray 未装在默认位置,请自行寻找其可执行文件并告诉程序,程序会予以记录,下次就不用选择了。
程序进行渲染时有几个参数,数值可用鼠标滚轮调整。各参数的效果示例如下,懂一点摄影的话很容易理解:
Resolution:生成图像的分辨率。理论上支持无穷高的分辨率。若一开始不确定下面各参数的合适范围,可先渲染小图,再渲染高分辨的图片。另外程序提供一个不更改设置的情况下渲染低分辨图片的按钮,可用于快速预览。
Depth of view:景深。决定虚化的程度。相当于相机光圈:
Depth of view = 50, 100, 200
Blur Sampling:每个模糊进行的采样数量,数值越大效果越“光滑”,但渲染时间也呈指数增加。相当于相机底片的ISO。超过85基本就完全没有颗粒感了,分辨率不十分高的时候70即可以接受。程序下方的Draft按钮即是使用很低的采样率实现快速渲染供预览使用。
Blur sampling = 1, 60, 70, 85(在2核4线程的笔记本上渲染分别耗时 1s, 16s, 35s, 2 min 4 s)
使用低采样率预览的Draft按钮
Orthographicality:透视/正交投影间的渐变,数值越大越接近正交投影,数值越小越产生“戳到眼睛里”的感觉。相当于相机离物体的远近(长焦换鱼眼)
Orthographicality = 100, 30, 2 (前两个切换着看会比较明显)
Field width:视野的宽度,相当于相机焦距,数值越小视野越小。相当于变焦镜头推拉。
Field width = 20, 50, 100
由于程序需要 CPK 模式在 POV-Ray 文件中产生球面的球心位置来定位焦点,故若分子不以 CPK 模式需要做如下调整:
以下图所示 NewCartoon 方式显示的蛋白为例
1. 调好所有效果后,最后在VMD中创建一个以 CPK模式显示的、完整分子的(Selected Atom = All)Representation
2. 记录这个多余的Representation的序号(从0开始),此处为 1
3. 正常查看所需焦点的原子序号,如此处所指为 2 号分子的 869号 原子
4. 按完整格式填写焦点原子 ([Molecule-ID]:[Representation-ID]:[atom_index]),此处为 2:1:869
5. 【关键】:在 [Remove CPK Molecules] 一栏中填入需要删除的、之前多余的 CPK Representation,格式为([Molecule-ID]:[Representation-ID]),此处为 2:1
6. 其他参数正常设置,提交。
得到效果如图
这是一个自用程序,我用VMD大多是显示小分子,故可能未考虑到一些我不使用的情况。
已知的问题:- 效率:Submit 大分子(数千原子)时较慢,约需几秒,因为此处渲染过程完全是决速步,故而暂未打算优化,稍等片刻即可。
- 参数正交性:各参数已经过变换,使得调整相应量时尽量不相互依赖,但由于使用了一些近似(诸如小角时 sin(x)=x),如果把参数调的特别离谱时,可能调整一个参数也连带需要调整另一参数,多加尝试即可。
遇到Bug时,请提供:
1. 载入VMD的结构文件
2. VMD中“File-Save visualization state”功能产生的状态文件。
3. 本程序界面(GUI)截图
4. 如果程序崩溃,提供本程序附带的CMD窗口(黑窗口)的截图
20170406: 增加了一个“Draft”按钮,用来自动以低质量生成图片用于预览(在一般电脑上一般1~2秒即可渲染完的低质量图片)用于调试参数。
游客,本帖隐藏的内容需要积分高于 20 才可浏览,您当前积分为 0
噫,好像荣幸的成为了本论坛第一批加水印的图
|