1.概述

在本教程中将重点向你展示如何通过VMD中的Tachyon制作一个高质量的可视化图像。本文假设你对vmd有一定了解(最基本的打开载入分子即可)。关于vmd制作图像的快速入门中文教程,本例所使用的工具和示例文件请见文末

2.工具链

2.1.Tychyon

Tachyon是为了利用多个计算机核心的优势而编写的光线追踪程序,其运行速度非常快,可以利用多个CPU核心的优势,快速生成高质量的图像,一般来说,光线追踪渲染器使用逼真的照明模型,可以正确地模拟阴影,这种照明与传统的点光源照明和定向照明配合使用,增加了分子结构图像的形状和深度的感觉,并减少了基于少量点光源的照明所产生的刺眼阴影的不利影响。此外这种照明模式特别善于模仿白垩质材料的外观,可以使分子图形更容易理解和具有美感。Tachyon现在已经内置在VMD中,版本在1.9后的无需安装,属于VMD中提供的高级渲染功能之一。


Figure 1:为使用Tychyon渲染的各种生物体系图


Figure 2:为使用Tychyon渲染的各种期刊封面和材料体系图

2.2.MSMS

MSMS 是用 C 编程语言编写的用于计算分子表面的程序。同QuickSurf类似,相较于“Surf”,它的绘制速度更快,而且输出结果与“Surf”非常相似。

不同于“QuickSurf” 和 “Surf”内置在VMD中,直接点击就能使用。MSMS需要额外下载到了VMD安装目录中,这里准备了三种常见操作系统下(mac,win,linux)的二进制程序文件(见文末),其中win32适用与32与64位操作系统。如下:

Figure 3:

安装方法:

  • 按需解压以上压缩包
  • 把二进制程序文件放到vmd安装目录即可,以win系统为例:

Figure 4:

3.例子:水中的DNA和蛋白质

本教程包含了水盒子中DNA和蛋白质的结构(ssbFigure.psf)和坐标(ssbFigure.pdb)文件,以该体系的原子为例载入vmd使用Tychyon等插件进行可视化渲染。你也可以使用自己体系模型只要是VMD支持可视化的文件即可。开始可视化渲染前,请开启“GLSL”渲染模块。


Figure 5:

此外,如果显卡比较老或者驱动有兼容性问题,没法在vmd main 窗口开启Display–>Rendermode—>GLSL的话,很多VMD里的效果都没法正确显示,比如最基本的透明效果,而使用Tachyon渲染输出后则所有效果都可以正确表现出来。

3.1 第一步:创建分子图形表现方法

3.1.1.创建不同的分子/原子选区

从VMD Main窗口图形菜单中打开图形表现窗口(Graphics->Representations)。所使用的每一个表现方法都是从你系统中存在的分子/原子组分的选择开始的。

创建不同分子/原子选区示例如下:

更多选择语法见vmd教程

#以下为不同的四个选区:
1.“protein”              #表示蛋白质这个组分
*创建你的原子显示方法:*
2. “nucleic”              #表示核酸这个组分(该体系中的DNA)
3. “same residue as water and {within 4 of protein} and {within 4 of nucleic}”  #蛋白质和核酸组分周围4埃的水分子
4. “ion and x*x+y*y+z*z < 35*35”    #下图圆锥范围内的离子


Figure 6:

本例子中选择以下三种选区用于展示:

protein              #表示蛋白质这个组分
nucleic              #表示核酸这个组分(该体系中的DNA)
water and noh        #表示水中的氧原子


Figure 7:

3.1.2.选择绘制方法

一个绘制方法与你创建的每个选区相关联,这些方法可以从根本上影响一个选区的外观。从 "Draw style "按钮下的 "Drawing Method "下拉菜单中为一个选区选择表现方法。由于Tachyon真实地处理了阴影,有裂纹和缝隙的表示法看起来有三维深度,因此 “vdW”、"Surf " 和 "MSMS "等绘制方法都是不错的选择(见图8)。

如今1.9版本的早已经支持“QuickSurf”,推荐 使用"MSMS "和QuickSurf表示法而不是 “Surf”,因为它的绘制速度更快,而且输出结果非常相似。其他经常使用的表示方法包括:“NewCartoon”,它强调了蛋白质的二级结构;“Licorice”,它很好地表示了原子的细节,而没有大量的“vdW”表示。


Figure 8:使用不同绘画风格渲染的SSB结构示例。

本例子使用对水溶液,DNA和蛋白质选区分别使用以下绘制方法:

选区(Selctions) 绘制方法(Drawing Method)
蛋白质(protein) MSMS
DNA (nucleic) VDW
水溶液(water and noh) MSM

水溶液选择 "MSMS "绘制方法,并将“Probe”的值改为6.5(取消勾选 "Apply Changes Automatically "将加快这一过程,但不要忘记点击 "Apply"按钮)。如下:

Figure 9:

3.1.3.选择材质

VMD中的材质指定了光与每个表现形式的互动方式,在Tachyon中看起来最好的VMD材料通常是非常漫反射的。有一些预定义的材料,适合大多数绘制任务。有几种材料(前缀为 “AO”)被添加到VMD中,以便与我们将在Tachyon中使用的环境遮蔽照明模型很好地协作。 这个照明模型很好地模仿了明亮的天空,并真实地表现了阴影,给人一种深度的感觉。

建议在用Tachyon渲染时使用这些材料或对其稍作修改。 本例图中的DNA(nucleic)和蛋白质(protein)组分都是使用“AOChalky”制作的。可以通过vmd Main窗口Graphics–>material(可从VMD主窗口的图形菜单中访问)调整几个参数来创造不同的外观,建议好奇的读者对每一个参数进行试验。


Figure 10:带有 DNA 的 SSB 使用不同的蛋白质材料呈现。所有渲染中的蛋白质颜色和照明都是相同的。注意材质的选择对最终渲染亮度的影响.

本例子使用分别使用以下下材质渲染水溶液,DNA和蛋白质:

选区(Selctions) 材质(Material)
蛋白质(protein) AOChalky
DNA (nucleic) AOChalky
水溶液(water and noh) WaterBox(自定义)

自定义材质“WaterBOX”步骤如下:

  • 打开Graphics---->Materials 窗口

  • 从 "Materials "窗口中选择 "AOChalky "材料,以此材料为基础,点击 "Create New "按钮

  • 将这个新材料的名称改为 “WaterBox”,勾选 “Angle-Modulated Transparency”,将Opacity值降至0.2。


Figure 11:

3.1.4.选择颜色

当使用图形表示窗口的“Coloring Method”下拉菜单中的“ColorID”选项为每个表示使用单一颜色时会使系统中不同分子之间形成最佳对比,图像通常看起来最好。可以通过调整颜色控制窗口的颜色定义选项卡中的滑块来修改给定颜色ColorID的颜色(VMD mian 窗口:Graphics---->Colors窗口)。

本例子使用分别使用以下颜色渲染水溶液,DNA和蛋白质:

选区(Selctions) 颜色(ColorID)
蛋白质(protein) IceBlue(ColorID=15)
DNA (nucleic) magenta(ColorID=27)
水溶液(water and noh) Cyan(ColorID=10)

这些颜色的均能自定义,可以根据自己渲染的需求来设置的,如下:


Figure 12:

3.2 第二步:设置显示选项

显示设置窗口可以从VMD Main的 "Diplay "菜单底部进入。

透视(Perspective)和正交投影(orthographic projections):VMD同时支持透视和正交投影,可以在VMD Main的“Display”菜单中进行切换。透视投影使更多的物体看起来更小,正交投影使物体具有相同的物理尺寸无论距离多远,大小都一样。本例图像是用透视投影法(Perspective)渲染的。

光源:默认光源设定(Light 0+Light 1)下水盒子右上角两个面看起来偏黑,不好看甚至影响对颜色的判断。此时可以选Display里面的Light 2或3开启没使用的光源,以使得暗处被照亮。还可以用“Mouse”菜单(默认是:Rotate Mode,用来旋转体系模型的) ----> Move Light,选择光源编号,然后按住鼠标左键在图形窗口中拖动来自行移动光源,自由发挥,怎么移动好看怎么来。(本例在默认基础开启了Light 2,即:Light 0+Light 1+Light 2)

Figure 13:


Figure 14:vmd 窗口的截图,未渲染。左图为默认设定,右图为添加光源后,手动光源后的效果

第1组选项:显示设置窗口中的第一组选项对渲染输出影响不大,可以随意玩弄这些设置。(本例为默认设置)

第2组选项:选项(Screen Hgt and Screen Dist)只有在使用透视投影时才重要。当 Screen Hgt 设置为 1.0 且 Screen Dist 设置为 -1.0 时,放大的默认透视图看起来更好,但每次重置 VMD 中的视图时(例如,按下 = 键时),你都必须大量更改缩放比例.(本例Screen Hgt设置为 1.0,Screen Dist 设置为 -1.0)

**第3组选项:**第三组选项控制雾气,但只在VMD主窗口的 "Display "菜单中打开“Depth Cueing”时影响输出。(本例设置Cue mode设linear)

第4组选项:就本例子的目的而言,第四组—外部渲染器选项是显示设置窗口中最重要的部分。 对于使用Tachyon的高质量渲染,请打开ShadowsAmb OcclAO AmbientAO Direct的值取决于你使用的灯光数量,你希望你的点光源(AO Direct)与环境光(AO Ambient)相比有多强,以及你个人对褪色图像的偏好。

本例用Tachyon或Tachyon(Internal,n-memory rendering)与环境遮挡照明渲染VMD图像或视频的基本过程如下:

  • 完成 3.1 第一步(创建分子的表现方法)。
  • 设置基本显示选项(光源设置以及第1组第3组选项的设置)。
  • 启动环境遮挡照明(Display->Display Settings—>ShadowsAmb occl 打开为on)。
  • 设置“AO Ambient”(环境光系数)和“AO Direct”(点光源系数)的值,有以下设置经验:

​ 通过操纵“AO Ambient”和“AO Direct”系数来调整效果,这两个系数分别缩放来自环境光和标准 VMD 光的照明贡献。

经验1:“ AO Ambient”值在0.71.0 之间,“AO Direct”值在0.10.4之间, “ AO Ambient”+“AO Direct”=1

经验2:AO Direct × num.Lights(开启光源的个数) + AOAmbient=1.8

本例结合经验1和经验2:AO Direct(0.3) ×num.Lights(3[Light 0,Light 1,Light 2])+AOAmbient(0.9)= 1.8

本例显示设置参数如下:


Figure 15:

3.3 第三步:启动渲染

由于使用环境遮挡照明进行渲染会增加计算复杂性,因此强烈建议在多处理器或多核工作站上运行 VMD 和 Tachyon 以获得最佳性能。

3.3.1.使用vmd图形化界面渲染

使用vmd图形化界面渲染步骤如下:

  • 在vmd main界面,只要选中File->Render>Tachyon (interal, in-memory rendering)

  • 点Start Rendering,就可以直接调用Tachyon渲染当前窗口里的图像,得到.tga文件(输出文件名可自定义),可以用ps等图像编辑程序打开再进行后期制作,如下:

    Figure 16:

Figure 17:.tga格式图片用ps打开。

按上述的方法调用Tachyon渲染出的图像和窗口尺寸相同。如果想渲染出定义大小与分辨率的的图像可按照以下步骤:

  • 在vmd main界面,只要选中File->Render>Tachyon
  • Start Rendering,就可以直接调用Tachyon渲染当前窗口里的图像,会得到了Tachyon渲染器的输入文件.dat文件(输出文件名可自定义)和.dat.bmp文件(由render Command默认命令控制输出的bmp文件)
#使用Tachyon输出时,render Command默认命令如下: (双引号里为tachyon程序所在目录)
"D:\InstallList\myVMD\\tachyon_WIN32.exe" -aasamples 12 %s -format BMP -o %s.bmp
#你也可以使用以下命令去自定义输出图像的像素,例子如下
"D:\InstallList\myVMD\\tachyon_WIN32.exe" -aasamples 12 %s -format TARGA -res 1600 1200 -o %s.tga

如下:


Figure 18:

3.3.2.使用命令行进行渲染

启动渲染不仅可以使用vmd图形化界面操作还可以使用Tachyon脚本更加灵活根据自己对图形的需求快捷启动渲染,这里分别举例下在windows和linux系中的两种渲染脚本,仅供参考。

在使用Tachyon脚本启动渲染前有必要了解下关于Tachyon程序有关渲染相关命令选项的使用方法,如下:

#在windows dos命令行界面输入:tachyon_WIN32.exe -h
#在linux 命令行输入:tachyon_LINUXAMD64 -h
#即可显示以下使用帮助信息:
支持的模型文件格式:filename.dat --  源自这个软件包(tachyon)的模型文件。filaname.ac  -- AC3D模型文件。filename.nff -- Eric Haines的SPD使用的NFF场景格式。有效选项 (**表示默认选项)
----------------------------------------------
消息选项:+V 冗长的信息开-V 关闭粗略信息 **速度调节选项:-raydepth xxx     (最大射线递归深度)-numthreads xxx   (** 默认是自动确定的)-nobounding-boundthresh xxx  (** 默认阈值为16)阴影选项:-fullshade     (** 最佳质量的渲染(也是最慢的))-mediumshade   (渲染质量好,但没有阴影)-lowshade      (低质量的渲染,预览(快速的))-lowestshade   (最差质量的渲染,预览(也是最快))照明选项:-rescale_lights xxx   (按指定的系数重新调整光照强度值(在其他光照覆盖生效之前执行))-auto_skylight xxx    (强制使用环境遮挡照明,自动调整直接光源的比例以补偿环境遮挡因素。 (使用值0.7作为一个好的起点)。)-add_skylight xxx     (强制使用环境遮挡照明,手动调整直接光源的比例以补偿环境遮挡因素。)-skylight_samples xxx (要拍摄的样品射线的数量。)阴影镜面高光选项:-shade_phong         (冯氏镜面高光照片)-shade_blinn       **(布林恩的镜面高光)-shade_blinn_fast    (快速逼近Blinn的高光)-shade_nullphong     (禁用镜面高光功能)阴影透明度选项:-trans_max_surfaces xxx     (将显示的透明面的数量限制在指定的数量内)-trans_orig               **(原先的执行)-trans_raster3d             (基于角度的Raster3D不透明度调节)-trans_vmd                  (VMD中使用的不透明度后乘法)透明表面的阴影选项:-shadow_filter_on     **(透明物体投射阴影。)-shadow_filter_off      (透明的物体不会投射出阴影)雾气遮蔽选项:-fog_radial        **(径向雾化实施)-fog_vmd              (VMD中使用的类似于OpenGL的平面雾化器)表面正常/绕行顺序固定模式:-normalfixup [off | flip | guess]  **(默认为off)抗锯齿选项:-aasamples xxx  **(每个像素采取的最大超样本数,( 默认为0,或者是确定的场景文件,值越大锯齿越不明显)输出选项:-res Xres Yres      (重载场景定义的输出图像的尺寸)-o outfile.tga      (设置输出文件名)-clamp            **(钳制像素值为[0到1](默认值)。)-normalize          (将像素值归一化为[0至1] 。)-gamma val          (归一化应用伽马校正)-format BMP         (输出24位Windows BMP 格式文件(未压缩))-format JPEG        (XXX 没有被编译到这个二进制文件中 XXX)-format PNG         (XXX 没有被编译到这个二进制文件中 XXX)-format PPM         (输出24位 PPM 格式文件(未压缩))-format PPM48       (输出48位 PPM 格式文件(未压缩))-format PSD48       (输出48位 PSD48 格式文件(未压缩))-format RGB         (输出24位 SGI RGB 格式文件(未压缩))-format TARGA     **(输出24位 Targa 格式文件(未压缩))动画相关的选项:-camfile filename.cam  (使用摄像机位置的文件制作动画。)-nosave                (禁止将输出帧写入磁盘 (只用于做实时渲染))互动式太空球/太空导航仪控制:-spaceball      (启用太空球/太空导航仪的摄像飞行。)-spaceballport  (串行端口设备名称(仅适用于串行设备))

在windows使用脚本例子:

步骤如下:

  • 使用File->Render>Tachyon方法得到 .dat文件后,可以作为Tachyon渲染器的输入文件(本例vmdscene.dat)。
  • 在和.dat文件同一文件夹下新建run_dos.bat(dos下的批处理文件)文件,编辑文件内容如下:
::dos脚本run_dos.bat,以输入文件vmdscene.dat为例子
tachyon_WIN32.exe vmdscene.dat -aasamples 24 -trans_vmd -res 1024 768 -format BMP -o ssb.bmp
  • 双击run_dos.bat文件,开始启动渲染,需要等待几分钟(看设备性能了)

在linux中使用使用脚本例子:

在此提供了两个用Tachyon渲染图像的例子脚本,需要在编辑已安装的Tachyon/VMD路径。

步骤如下:

  • 使用File->Render>Tachyon方法得到 .dat文件后,可以作为Tachyon渲染器的输入文件(本例vmdscene.dat)。
  • 在和.dat文件同一文件夹下新建run.sh或者runHDR.sh文件,编辑文件内容如下:

脚本1:

# run.sh
#!/bin/bashecho "Running tachyon with AO lighting"#编辑以下你安装Tachyon/VMD的路径,(以下两种方式二选一)
# TCB lab install location
# setenv TACHYONBIN /Projects/vmd/pub/linux64/lib/vmd186b13/tachyon_LINUXAMD64# typical install location,tachyon_LINUXAMD64安装路径的例子:
setenv TACHYONBIN /usr/local/lib/vmd/tachyon_LINUXAMD64 $TACHYONBIN -trans_vmd -rescale_lights 0.3 -add_skylight vmdscene.dat -o ssb.tga

脚本2:

#runHDR.sh
#!/bin/bashecho "Running tachyon with AO lighting"# TCB lab install location
# setenv TACHYONBIN /Projects/vmd/pub/linux64/lib/vmd186b13/tachyon_LINUXAMD64# typical install location
setenv TACHYONBIN /usr/local/lib/vmd/tachyon_LINUXAMD64 $TACHYONBIN -trans_vmd -rescale_lights 0.3 -add_skylight 1.0 vmdscene.dat -normalize -format PSD48 -o ssb.psd
  • 执行脚本1或者2:
#执行脚本1:
chmod +x ./run.sh
./run.sh#执行脚本2:
chmod +x ./runHDR.sh
./run.sh

3.3.3. 渲染后的效果图:

以下为使用vmd中Tachyon渲染出的透明逼真水盒子图的最终效果图


Figure 19:

3.4 总结

至此本文通过一个DNA和蛋白质在水中的分子体系示例展示了使用VMD中的Tachyon和MSMS插件渲染高质量的图的一个基本流程:从3.1到3.3。算是一个简单的关于Tachyon插件的使用指南。此外还有更多可视化方案等着您去探索,基本流程均如本例所示,在此在分享关于本例的两种可视化方案,供参考使用,如下:红色线框部分,为基于本例可视化方案的关于表现方法(Drawing Method,Color,Materials)的修改。


Figure 20:


Figure 20:

4.参考链接

1.Publication Figure Rendering With Tachyon

2.Rendering with Tachyon: a practical guide

5.最后

关注微信公众号:“理论与计算化学初学者” 在对话框回复:“vmd渲染” 三个关键词,即可获得VMD免安装程序 ,MSMS程序插件,vmd快速入门中文教程及所有示例文件。

使用VMD中的Tachyon渲染出透明逼真的水盒子效果相关推荐

  1. java根据Freemarker模板渲染出Excel文件并在浏览器中下载

    **java根据Freemarker模板渲染出Excel文件并在浏览器中下载** 准备工作 1.导入的依赖 2.创建模板 Freemrker语法大全: [Freemarker语法使用请点击该链接跳转学 ...

  2. 在Maya中想要使用Arnold渲染出高质量作品,这些技巧很重要

    Arnold是Autodesk的一款光线追踪渲染程序,用于计算计算机生成的三维场景,近年来已成为全球专业电影制作中使用最广泛的渲染程序之一.超过 300 家领先的工作室和制作公司使用 Arnold 作 ...

  3. 3dmax:成功解决3dmax三维设计软件中的VR渲染设置出图为黑色(一片漆黑)

    3dmax:成功解决3dmax三维设计软件中的VR渲染设置出图为黑色(一片漆黑) 目录 3dmax三维设计软件中的VR渲染设置出图为黑色(一片漆黑) 解决方法

  4. 帮用户解决以往消费中的例如信息不透明、使用不便捷、无法按照服务质量付费等痛点(转)...

    在所有还算得上成功的互联网公司中,大众点评一直是一个异类. 它既不会像其它公司那样像坠落凡间的天使,只需要短短几年的修复,迅速克隆一个"美国公司",就立马可以腾云驾雾,再次回到天堂 ...

  5. dx绘制2d图像_在DirectX 中进行2D渲染

    http://flcstudio.blog.163.com/blog/static/756035392008115111123672/ 最近,我看到很多关于DirectX8在最新的API中摒弃Dire ...

  6. 3D图形学(10):游戏中的加速渲染算法

    内容引自<Real Time Rendering 3rd> 一.空间数据结构(Spatial Data Structures) 空间数据结构(Spatial Data Structures ...

  7. MAYA教程——Hypershade中的Maya渲染节点

    1.概述 Maya的Hypershade中的渲染节点如图1所示. 图1 Hypershade中的渲染节点 Maya中的渲染节点大致由材质(Materials).纹理(Textures).灯光(Ligh ...

  8. vue 父页面中的方法 调用_解决Vue中页面成功渲染数据undefined的问题

    前言 这个标题不太好取. 本文需要下面的知识: https://zhuanlan.zhihu.com/p/260811233​zhuanlan.zhihu.com 问题描述 我最近的一个功能需求是通过 ...

  9. echart 实例显示位置_技术分享:如何在Unity中使用实例化渲染?

    编者按 在日常开发中,通常说到优化.提高帧率时,总是会提到批量渲染.之前简单总结了静态合批(点此查看全文)以及动态合批(点此查看全文),这次作者将和大家聊聊实例化渲染. 作者:枸杞忧天 (本文内容由公 ...

最新文章

  1. 把字符串转换为日期时间
  2. Java实用教程笔记 接口与实现
  3. oracle数据库是db还是dbnms,Oracle数据库中各种类型的文件损坏与修复过程详解(2)...
  4. C# foreach的二种基本用法
  5. 周报措辞规范(周报规范用语、不规范用语)
  6. arm ffmpeg报错:Invalid data found when processing input(没解决)(在ubuntu上能正常运行)(重新交叉编译后问题解决)
  7. recv、recvfrom、recvmsg函数
  8. 深度学习pytorch--MNIST数据集
  9. 【Pytorch神经网络理论篇】 26 基于空间域的图卷积GCNs(ConvGNNs):定点域+谱域+图卷积的操作步骤
  10. java文件编码格式环境变量_Jenkins maven 构建乱码,修改file.encoding系统变量编码为UTF-8...
  11. PHP_VERSION获取php版本
  12. PairOfDice示例
  13. Java 开发新选择?Apache NetBeans IDE 9.0 正式发布
  14. C++面试题:内存的分配方式有几种?
  15. plaintextedit指定一行一行的高亮显示_RDKit | 基于RDKit的指定原子或键高亮
  16. 噇字符集linux,gbk编码
  17. 《AutoCAD 2013中文版从入门到精通》—— 导读
  18. 论傻瓜交换机接到有vlan的网管交换机为什么可以通信
  19. 【调剂】西安工业大学刘欢教授“宽光谱量子点成像”科研团队接收5名调剂学生...
  20. 理解 Python 中的装饰器

热门文章

  1. access课程均不及格_二级ACCESS上机总结重点,小抄
  2. 计算机编程 寒假项目总结,我的软件工程之路--寒假总结
  3. 使用Openoffice实现并发多进程word文档转换预览
  4. Mysql 索引 与 多表查询性能优化
  5. 代码随想录训练营day1
  6. php程序员 合川_PHP程序员将何去何从?
  7. dataGrip连接clickhouse时,时间字段显示差八小时问题
  8. HTML CSS xmind总结
  9. 【pandas数据清洗与处理】项目5-城市餐饮店铺选址分析
  10. 在Linux(unix)中,以波浪线“~”开始的文件名