☰
OVITO分子动力学可视化:修正通道与渲染全流程解析
2026/10/26 16:38:32 网站建设 项目流程

简介:这份资料面向使用 LAMMPS 做分子动力学模拟、需要可视化与分析原子级数据的研究者,围绕 OVITO(Open Visualization Tool)整理了一份手册与学习总结,帮助读者从零建立对这款材料、物理、化学领域常用后处理工具的整体认识。压缩包内共 1 个 PDF 文件,约 2.14MB,内容按基本介绍、常用功能实现、各面板与功能详解三部分组织:既讲设计思想、安装与原子坐标、模拟盒、时间步长等基础概念,也覆盖局部温度显示与输出、速度分布轮廓、向量显示、粒子半透明、标记原子追踪内部运动等实操要点,并逐一说明主菜单、视图窗口、动画工具条以及修正通道中外部数据源、帧序列、LAMMPS dump 输入、模拟盒子、粒子类型和选择类修改器等模块。已有 3249 人学习,适合希望系统上手 OVITO、提升模拟结果分析效率的初学者与进阶用户查阅。

1. 分子动力学可视化的知识地图:从数据到图像的完整链路

很多人第一次打开 OVITO,会把它当成一个“分子动力学截图工具”——导入 dump 文件,转一转,调个颜色,导出 PNG,完事。但真正用久了会发现,OVITO 的核心不是渲染,而是一条从原始数据到最终图像的修正通道(Modification Pipeline)。这条通道决定了你能看到什么、能分析什么、以及结果可不可信。整份手册与总结围绕三个板块展开:基本概念(设计思想、安装、模拟体系与仿射变换等概念)、常用功能实现(局部温度、速度分布、向量显示、半透明、标记原子追踪内部运动)、以及各面板与功能的详细拆解(主菜单、视图窗口、动画工具条、修正通道、渲染标签、脚本编辑)。梳理下来,它其实是一张“输入 → 选择 → 修正 → 着色 → 显示 → 渲染”的地图,适合正在用 LAMMPS 做模拟、需要把 dump 数据讲成故事的人系统复习。

2. 修正通道:OVITO 的骨架与数据流方向

2.1 设计思想:为什么是“通道”而不是“图层”

OVITO 全称 the open Visualization tool,定位是对分子动力学结果进行显示与分析。它最重要的能力是处理“单粒子属性”——单个粒子的位置、速度、应力等,并且能处理任意数目的属性,包括标量、矢量和矩阵属性。设计思想是“修正通道”:从导入的数据出发,经过一个个“修正”,最终成为想要的显示。这个思路和图像软件的图层有本质区别:图层是叠加,通道是数据流的逐级变换,每一步都基于上一步的输出重新计算。

通道的数据流动方向是从下往上,依次为 Input、Modification、Display 三个板块;Modification 内部的修正顺序也是从下往上,越早的修正步骤越靠近 Input。这种数据流不破坏原有数据——即使添加了新的粒子属性,OVITO 也是另外保存的;每当改动某个修正步骤或参数,程序会自动根据原有数据立即重算并即时更新显示。手册里给的大致思路是:分析类 → 修正类 → 颜色类,选择类可以按需要加于任意位置。这句话值得背下来,因为它决定了你搭通道时的默认顺序。

提示:改变修正顺序时操作不能太快,否则程序会崩溃。这是手册里明确写出的血泪经验,别问为什么,问就是重开。

2.2 三个板块与修正编辑按钮

一开始修正通道是空的,只有(总有)Input 和 Display 两个板块。通道下方是属性栏,包含通道中各个条目的具体参数;通道上方有个下拉条,列出一系列可用的修正操作,点开即在 Modification 最上部插入一个修正。通道右边是修正编辑按钮:把勾去掉可以临时关闭某些修正单元,点中某修正可以直接删除,还有按钮可以改变修正顺序。

这里最容易翻车的地方是**“关闭”和“删除”混用**。勾去掉只是临时关闭,参数还在,适合对比“加了这个修正前后差别在哪”;删除则是彻底移除,参数丢失。复习时建议把这两个动作分开记:调试阶段用关闭,定稿阶段才删除。

2.3 Input 板块:数据入口决定了后面能做什么

Input 通常包含模拟盒子和粒子两个条目,有时还会包含其他条目(如 Color、Selection),取决于输入文件内的信息种类。点中输入文件,出现全部属性栏;点中 Simulation cell 或 Particle types,则只出现对应属性栏。

外部数据源属性包括输入文件名、路径和总的信息;帧序列属性是关于 dump 文件中帧的频率设置;LAMMPS dump file 属性栏随输入文件格式不同而不同,用于设置步长和列信息。关键动作是 Edit column mapping:dump 文件中粒子属性以列的形式保存,点开对话框后包含从数据文件开头部分扫描而得的各列信息,OVITO 提供多种属性选项,对各列进行选择后确认,即完成粒子属性的导入,此时属性栏中列选项自动变为 User-defined mapping to particle properties。

这一步不是可有可无的。OVITO 把属性分为标准属性和用户自定义属性两类:标准属性在 OVITO 里有特定含义,如坐标、颜色,导入后可直接指定;自定义属性可以用来挑选粒子、着色、进行其他计算。有时自定义属性显示效果不好,选为标准属性后则能正常显示。手册里那句“选为标准属性后,OVITO 可以更好地‘理解’、处理和显示该属性”,说的就是这件事。

标准属性数据类型/分量描述
PositionX, Y, Z粒子坐标
ColorR, G, B若给出,用于控制粒子显示颜色
RadiusReal若给出,用于控制粒子显示尺寸
Particle TypeInteger粒子类型标识,决定显示尺寸和颜色,除非给出 Radius 或 Color
Particle IdentifierInteger粒子独特 ID,粒子存储顺序变化时用于追踪粒子
TransparencyReal0~1 之间的值,控制粒子透明度
SelectionInteger粒子选择状态(1 选中,0 其他)

2.4 Modification 板块:四类修正的分工

Modification 下的修正按功能分为四类,复习时按类记比按字母记有效得多。

选择类 Selection:Manual selection 手动选择、Expression selection 用表达式选择、Select particle type 按粒子类型选择、Invert selection 反选、Clear selection 清除所有选择。选择状态本身就是一个粒子属性(Selection),所以它能被后续修正读取,也能被冻结——这一点在第 5 节标记原子的用法里会再次出现。

修正处理类 Modification:Affine transformation 仿射变换、Create bonds 创建化学键、Compute property 计算新的粒子属性、Delete selected particles 删除所选粒子、Freeze property 冻结粒子属性、Show periodic images 显示周期性图像、Slice 切片、Wrap at periodic boundaries 周期性图像中的挪移。这里的概念要分清:线性变换/合同变换 = 平移 + 旋转 + 镜像,仿射变换 = 平移 + 旋转 + 放缩。模拟体系 = 周期性边界条件 + 模拟单元,模拟单元 = 模拟盒子 + 粒子集合。

颜色处理类 Coloring:Color coding 着色、Assign color 涂色、Ambient occlusion 光线遮蔽。着色是按属性值映射颜色,涂色是直接赋固定颜色,光线遮蔽是给颜色乘上照明因子——三者目的完全不同,别混。

分析类 Analysis:Atomic strain 原子应变、Bin and reduce 收集和约化、Bond-angle analysis 键-角分析、Construct surface mesh 创建表面网格、Displacement vectors 位移矢量、Centrosymmetry parameter 中心对称参数、Cluster analysis 团簇分析、Common neighbor analysis 共近邻分析、Coordination analysis 坐标数、Histogram 直方图、Identify diamond structure 辨认金刚石结构、Voronoi analysis 泰森多边形分析、Wigner-Seitz defect analysis WS 缺陷分析。这一串名字看着吓人,但按“结构识别 / 缺陷分析 / 统计分布”三组归类后就清爽了:共近邻、金刚石结构、中心对称参数属于结构识别;WS 缺陷、原子应变、团簇属于缺陷与局部变形;直方图、坐标数、Bin and reduce 属于统计分布。

3. 常用功能实战:五个高频操作的复习重点

3.1 局部温度的显示和输出:一条完整的渲染链路

这个功能是整份手册里流程最完整的一个,主要按“导入 → 视图 → 修正、着色 → 显示 → 渲染输出”的顺序进行,值得当作模板背下来。

导入数据走主菜单 File → Open Local File,OVITO 能自动识别多种构型文件:LAMMPS 的 data、dump(后缀名写成 lammpstrj 也行),以及 xyz、poscar、imd、cfg、parcas、NetCDF、pdb 格式,还能导入 Visualization Toolkit 的网格文件 VTK(目前只支持三角网格)。导入多帧时,点中 Input 中的数据文件,点开 dump file 栏,勾选 File contain multiple timesteps 即“包含多个步长”,再点 Edit column mapping 把动能等列选为标准属性。

调整视图时,点中四个窗口中的一个作为主窗口,边框由白色变为黄色;点击窗口左上角文字出现视图菜单,第一项 Render Preview 用于预览输出,选定窗口将变为输出的样式,默认背景是白色。图中心处的彩色十字架是位置标示(position Marker),双击有粒子的区域可以自己定位它,双击空白区域则重新定位于盒子中心。鼠标左键拖动是绕位置标示中心旋转,右键或中键拖动是平行于当前投影面平移,滚轮缩放。

着色环节:Add Modification → Expression Selection 选择要显示的粒子,再 Add Modification → Color coding,属性栏中 Property 选 Kinetic Energy,Color gradient 选 Rainbow,点 Adjust range 后 End value 和 Start value 分别为最大和最小值,再手动调整截取想要的值的范围,勾选 Color only selected particles 仅对选择的粒子着色。由于动能总是 ≥0,将 Start value 设为负数只会影响底色。

渲染方式的选择是重点难点:对大量粒子体系使用遮光器 Ambient occlusion,对小结构和少量粒子体系用光线追踪渲染器 Tachyon 能获得更好的效果。二者区别在于,遮光器是计算每个粒子的照明因子,而 Tachyon 渲染器是对每个输出像素计算遮光;前者可以近乎实时显示,改善互动窗口的显示,后者不能。Ambient occlusion 的三个参数要会调:Shading intensity 阴影强度越大粒子看起来越暗;Number of exposure samples 近似为有限个平行光源均匀分布于体系四周,光源数目越少计算时间越短但影子越明显(造成不自然);Render buffer resolution 是单个粒子占有的像素数目,对大量粒子体系有必要增加该值,以使每个粒子在渲染缓存中至少有一个像素。

注意:OVITO 的 ambient occlusion 算法是先计算单个光源下表面粒子接收到的光量,光量与暴露面积(等于在该投影图中所占的像素数)成正比,最后把所有光源的贡献加和得到照明因子,输入的颜色属性乘上照明因子即得调和后的颜色并返回到 Color 属性。为了保证此属性不被别的颜色修正覆盖掉,应将此修正放到修正通道的最末位置。

坐标轴和颜色条都在叠层标签中:Add overlay → Coordinate tripod 添加三坐标轴图标,属性栏中 Offset X 可对三坐标整体水平移动,Coordinate axe 中可改三个坐标轴的颜色、方向,还能添加第四条轴;Add overlay → Color legend 添加颜色条,Position 中 Offset Y 可竖直移动,Labels 中 Custom title 输入颜色所代表的属性名称。

显示调整回到 Display:点 Simulation cell,不选 Render cell 则渲染时主窗口不显示外围框形线,其他窗口仍显示但不影响输出;若直接去掉 Display 中 Simulation cell 的勾,则四个窗口全都不显示外框线。点 Particles 出现 Particle display 栏目,Shading 有普通 Normal(三维)和平面 Flat 两种,Rendering quality 可选低、中、高和自动四档,Shape 有球形 Spherical 和方形 Square。Flat 和 Square 的区别在于,Flat 是把面向观察者的表面抹平,球形变为圆片、方形变为方片;Square 则是立体的方块,不因视角改变而变。

渲染输出在渲染标签下完成。帧数与格式并没有直接关系,可以选多帧输出多个图片,也可以选一帧输出动画,决定输出动画还是图片的是保存的格式:选 png 或 jpeg 输出图片格式,选 avi 等输出动画。Output image size 下点 Presets 更改分辨率,也可手工调整 Width 和 Height。小体系点击 Change renderer 把默认的 OpenGL 改为 Tachyon,最后点 Render Active Viewport 开始渲染。如果之前没设置文件格式和名称,则不会生成图片/动画——这是新手最常见的空手而归。

3.2 速度分布轮廓:直方图与散点图

Add Modification → Histogram,属性栏中 Property 选择要计算的属性量,Number of histogram bins 调节横轴间隔即直方图分辨率。为了观察局部分布,可以在 Fix x-axis range 和 Fix y-axis range 中选择范围,比如 x 填 -0.1 到 0.1、y 填 0 到 500,得到局部放大的图;不选 Select particles in range 则默认对所有粒子作图。

把数据保存为 txt 文本,得到的是横轴和纵轴的列数据,再用外部工具打开对比。这里有个容易忽略的细节:导入时可能要修改部分数据的长度使之对齐,保证外部工具能正常识别。手册里做过一个对照实验——y 设为 0~500 和 0~3000 时两图看起来没有区别,分析两横轴和两纵轴的数据得知它们相同,说明 OVITO 是按横轴范围来保存的,不受面板中 y 设置的影响。这个结论值得记:导出数据只受横轴范围约束。另外,利用 Scatter plot 修正可以作出任意两属性间的散点图。

3.3 让粒子半透明:用表达式把透明度变成位置的函数

通过设置粒子属性 Transparency 可以使粒子半透明,值在 0~1 之间,为 0 时完全不透明。设置该属性最简单的方法就是运用 Compute property 修正,用简单的数学公式让透明度成为位置的函数:

# Compute property 修正中的表达式示例 # ReducedPosition.X 将粒子的 X 坐标值简化为 0~1 # 表示从盒子的一边到另一边的范围 ReducedPosition.X

将此值分配给 Transparency 属性,则左边的粒子完全不透明,右边完全透明。参数说明:ReducedPosition 是归一化坐标,X 分量取值 0~1,正好落在 Transparency 的合法区间内,所以不需要额外缩放。注意,你可以只对选定的粒子进行透明化,在 Compute property 修正中检查 Compute only for selected particles 选项。这个技巧的价值在于:它示范了“任何标量属性都可以用表达式生成”,同样的套路可以拿来做渐变着色、按位置筛选等。

3.4 用标记原子显示内部运动:选择状态也能被冻结

运用标记原子可以清楚地展示固体内部的变形,另一个可能的应用是追踪模拟过程中流体内粒子的散射。做法分三步:

  1. 先对第 0 帧用 Slice 修正,选择一排原子,激活 Select particles 选项,以创建一种选定(而不是删除)。
  2. 然后应用 Freeze property 修正,在 Property to freeze 中选 Selection 作为要冻结的属性。修正器可自动采用 Slice 修正产生的选择状态,并使之随时间保持。
  3. 最后用 Assign color 修正来设置标记原子的颜色。

这三步的精髓是第二步:Selection 是一个粒子属性,所以它能被 Freeze property 冻结;冻结之后,后续帧里这排原子始终保持选中状态,颜色也就跟着它们走。复习时如果只记“标记原子”四个字,考场上大概率写不出 Freeze property 这一环——而这恰恰是整条链路的黑匣子。

4. 面板与渲染:容易被当成“界面说明”而略过的重点

4.1 主菜单与文件格式:导入导出不是对称的

File 用于导入、导出粒子文件或场景文件。Open Local File 选择本地文件,OVITO 会自动检测文件格式,可直接读取压缩文件 .gz;Open Remote File 有内置的 SSH 客户端,可以远程导入数据。导入格式包括 LAMMPS dump(支持文本和二进制)、LAMMPS data、XYZ(基本格式不含模拟单元信息,此时 OVITO 使用轴对齐粒子后的模拟盒子;扩展 XYZ 格式包含模拟单元、边界条件和每个粒子的力场)、POSCAR、IMD、CFG、PARCAS、NetCDF、PDB,以及只支持三角单元的 VTK。

导出格式则是另一套:POSCAR、LAMMPS data、LAMMPS dump、XYZ、IMD。导入格式多于导出格式,这个不对称性要记住。Load/Save State 导入/保存场景文件,包含视图、修正、显示设置等程序状态信息,可以单独导入场景,当导入不同的数据文件时结果也会跟着变;默认场景文件不包括粒子数据,而只保存对它们的引用。导出时要注意会导出修正后的结果,假如删除了某些粒子,则只会导出剩下的,修正通道会对每个动画帧进行重估。

Options → Settings 用于基本设置,如用户界面、显示、程序更新,以及视图设置如 camera(指示方向的三脚架)和场景颜色(不是输出时的背景色)。Camera 下有个选项 Restrict camera to keep major axis pointing upward,默认勾选,转动模型时会感到束缚,去掉它则可以自由转动——这个玄学般的“转不动”问题,答案就在这里。

4.2 视图窗口与动画工具条

视图窗口包括四个窗口,点中一个作为主窗口,边框由白色变为黄色。点击左上角出现视图菜单:Render Preview 用于预览输出,查看状态的图像未必是最后输出的图像,通过预览可以调整输出范围、长宽比;Show Grid 加 xy 平面网格;View Type 有多种可选视角,点 Create Camera 则视图中出现一个摄像头,点中摄像头右边出现 Camera 属性栏,选择类型和参数后再去 View Type 中选择这个摄像头,视角便改成该摄像头的角度。

动画工具条位于窗口下方,点开出现动画设置对话框,可控制动画长度。Frames per second 是帧率,影响最后生成动画的快慢;Animation start/end 是起始和结束时间,控制总帧数;Playback speed in viewports 是播放速度,如 ×1 表示一倍播放速度,该参数不影响最后生成的动画。最后这条是典型易错点:调了播放速度以为动画变快了,导出后一看没变。

4.3 渲染标签与脚本编辑

渲染标签负责图片和动画输出,前面 3.1 已把参数讲透,这里补一个判断逻辑:先定格式(图片还是动画),再定分辨率,再定渲染器(大体系 OpenGL + 遮光器,小体系 Tachyon),最后点 Render Active Viewport。顺序反了就会出现“渲染完发现没生成文件”的翻车现场。

Scripting 脚本编辑是手册目录里单列的一块,位置在叠层标签和监视程序标签之后。它的意义在于把手工搭的修正通道变成可复现的脚本——同一套分析流程换一个 dump 文件时,不用再点一遍菜单。复习时至少要记住它存在,并且知道它对应的是通道的可编程化,而不是另一套独立功能。

5. 易漏点与易错点:五条血泪经验

易漏点一:列映射没选标准属性。为什么漏:导入文件后直接看视图,觉得“能显示就行”,跳过了 Edit column mapping。怎么补:每次导入 dump 后强制打开列映射对话框,把坐标、动能、类型等关键列显式选为标准属性,自定义属性只留给确实需要特殊处理的量。

易漏点二:修正顺序搭反。为什么漏:通道从下往上流动这件事,界面上没有大字提示,新手习惯从上往下读。怎么补:记住“越早的修正越靠近 Input”,选择类可以插在任意位置,颜色类放最后,Ambient occlusion 必须放最末以免颜色被覆盖。

易漏点三:把播放速度和输出帧率混为一谈。为什么漏:两个参数都叫“速度/帧率”,面板挨得近。怎么补:Playback speed in viewports 只影响预览,Frames per second 才进最终动画;导出前回看一眼动画设置对话框。

易漏点四:渲染前没设格式和文件名。为什么漏:点完 Render Active Viewport 以为万事大吉,结果文件夹里空空如也。怎么补:渲染输出属性栏里先 Choose 格式和名称,确认自动打勾后再点渲染;图片选 png/jpeg,动画选 avi 等。

易漏点五:以为场景文件带着粒子数据。为什么漏:Save State 听起来像“保存全部”。怎么补:默认场景文件不包括粒子数据,只保存引用;换数据文件时结果会跟着变,这既是特性也是坑,交付前确认对方拿到的数据文件路径一致。

6. 复习清单:把手册压缩成一张可执行的检查表

复习到这个阶段,最有效的动作不是再读一遍手册,而是把流程变成一张按顺序执行的检查表。下面这张表按“导入 → 通道 → 显示 → 渲染 → 导出”排列,每一项都对应前面章节里的具体参数,考前或上手新体系时逐项过一遍即可。

阶段检查项对应参数/动作常见失败表现
导入文件格式识别File → Open Local File,支持 dump/data/xyz/poscar 等格式不识别,需转格式
导入多帧开关File contain multiple timesteps只有第 0 帧
导入列映射Edit column mapping,选标准属性属性显示异常或无法着色
通道顺序从下往上,分析→修正→颜色,选择类任意颜色被覆盖、结果不符
通道临时关闭 vs 删除勾选框 vs 删除按钮参数丢失、无法对比
显示主窗口边框变黄者为输出窗口渲染了错误的窗口
显示预览Render Preview 调范围与长宽比输出被裁切
渲染渲染器大体系 Ambient occlusion,小体系 Tachyon小体系颗粒感重
渲染格式与名称Choose 后自动打勾文件夹为空
导出修正后结果删除的粒子不会导出数据对不上

再补一个最小可复现的通道配置,方便对照记忆:

# 典型通道(从下往上读) Input: LAMMPS dump file # 勾选多帧,列映射选标准属性 Modification: Expression Selection # 按表达式选粒子 Modification: Color coding # Property=Kinetic Energy, Rainbow Modification: Ambient occlusion # 放最末,避免颜色被覆盖 Display: Simulation cell / Particles # 关 Render cell 可隐藏外框 Render: png 或 avi + 分辨率 + 渲染器 # 先定格式再渲染

最后说一个我自己的习惯。早些年做模拟分析,我总是一口气把通道搭完再渲染,结果经常在最后一步发现颜色不对、范围不对,回头改一个参数,前面调好的视角又得重来。后来我强制自己每加一个修正就点一次 Render Preview,确认这一步的视觉效果符合预期再往下走——相当于给通道的每一级都留了后悔药。这套“加一步、看一眼”的笨办法,比任何快捷键都省时间。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询