POV-Ray(视觉光线跟踪器的暂留)是一种生成图像的跨平台光线跟踪程序(用 C ++ 编写)。此应用程序已包含在 QuantumATK 平台中,并提供了一个用于编辑提取图像的选项。QuantumATK 和 POV-Ray 的这种组合可将前者的功能延伸至更具艺术性的视角。
在这个简单的例子(双原子分子)中,我们将介绍如何编辑由两个原子(红色和白色)组成的分子图像。此外,这也是一个介绍我们将要使用的一些基本 POV-Ray 概念的好机会。整个过程如下图所示:
步骤1:在 QuantumATK 中创建一个结构。第一步是使用 QuantumATK Builder 创建结构。这一步有助于分析我们的结构中有什么。本例中,我们有用两个球体(白色和红色)表示的原子,它们由一个用薄圆柱形物体代表的单键连接。研究对象由两个圆柱体(白色和红色圆柱形表面)及其顶盖和底盖(白色和红色圆盘)组成。也就是说,
结构组成:
步骤 2:提取 POV-Ray 文件。当我们准备好 QuantumATK 中的分子,就可以将其作为 POV-Ray 文件提取(POV-Ray 文件扩展名为 .pov)。这很容易做到,只需单击 Builder 工具栏右上角的 POV-Ray 图标 即可。然后将出现一个弹出窗口,要求您为 .pov 文件指定名称。我们将其命名为 picture.pov。单击 Generate 按钮,在 POV-Ray 文件中提取双原子分子,并以 picture.png 格式渲染。
这里必须要提到的是,使用 QuantumATK 无法修改提取的 .pov 文件(来自QuantumATK)。我们只能通过 POV-Ray 程序更改和导入参数和属性来实现。
头文件。打开 picture.pov 文件,我们可以看到一个 C ++ 代码,它描述了图片的每个元素和每个细节。在代码的前面几行我们引入了一些负责处理不同颜色、纹理和形状的 .inc 头文件。他们的作用显而易见的,此处无需探究更多细节:
1 #include "colors.inc" 2 #include "stones.inc" 3 #include "textures.inc" 4 #include "shapes.inc" 5 #include "metals.inc" 6 #include "woods.inc"
相机。接下来的几行描述了相机的属性。相机元素非常重要,因为图片的渲染取决于它。
1 camera { 2 orthographic 3 location <0,0, 0> 4 direction <0,0,-1> 5 right <2.7, 0, 0> 6 up <0, 2.4, 0> 7 }
以上代码描述了我们曾用于从 QuantumATK 中提取双原子分子的相机视图。下图展示了 3D 空间中的一些基本的相机属性。有关编辑相机及其属性的更多信息,请参阅 POV-Ray 相机。
光源。下一个重要元素是 light_source。可以通过导入和/或改变各种光源属性来控制该元素。在本示例中,我们有两个光源,其位置和颜色指示灯已定义:
1 light_source { < 0, 0, 0> color White } 2 light_source { < -200.0, 200.0, 243.0> color White shadowless}
背景。此元素用于为所有未被光线照射到的部分指定颜色。在这里,我们采用了合适的RGB颜色坐标定义了一个灰色背景:
1 background { color rgb <0.15, 0.15, 0.15> }
QuantumATK 对象。代码的下一部分包含了我们在 QuantumATK 中创建和呈现的各种对象的描述。即,上面步骤 1 中提到的元素及其属性(如纹理、颜色、相对位置、半径等)。在这些代码行中我们确实很容易看到:在大括号中定义的两个球体、两个圆柱体、四个圆盘和它们的属性。例如,红色原子/球体由以下球体描述:
1 sphere { 2 <-0.3, 0.2, -2.1>, 0.4 // center and radius 3 texture { 4 pigment { color rgb <1. 0.06 0.06> } 5 finish { 6 ambient .2 7 diffuse .4 8 specular .75 9 roughness .001 10 reflection { .6, metallic} 11 } 12 } 13 }
在第 2 行,我们可以看到球体中心的位置(在笛卡儿坐标 <x,y,z> 中)。逗号后面的下一个数字就是球体的半径。其余行描述了球体的纹理。在 pigment 行,我们可以清楚地看到颜色定义(红色),而随着结束标识符(在第 7 行的起始)的出现,我们对研究对象有了更真实的印象。Finish 是一个非常有用的标识符,因为它给我们提供了控制研究对象表面许多属性(如粗糙度、扩散和反射效果等)更详尽的选项。所有这些纹理术语的最终当然与光源和相机视图高度相关。这意味着当我们更改结束标识符中的参数时,必须始终根据我们的相机视图考虑已经在场景中设置的灯光属性(因为光反射是改变,不同的相机视图给我们展示了对同一物体的不同印象)。圆柱体和圆盘以类似的方式定义。
步骤 4:编辑 POV-Ray 文件。现在我们准备更新图片了。编辑 example1.pov 文件,我们可以控制许多参数,添加对象和创建许多艺术效果(使用 POV-Ray 程序)。在我们这个例子中,只添加一个平面。我们想要的平面由以下代码行描述:
1 plane { 2 <0,0,1>, 1 //This represents the plane 0x+0y+z=1 3 texture { T_Silver_3A } //The texture comes from the file "metals.inc" 4 }
本段内容适用于 POV-Ray 作为独立程序的一般用途,不受 QuantumATK 或任何其他软件的限制。QuantumATK 只能将复杂结构导出为 .pov 和 .png 扩展名的格式。
为了能够导出已编辑的图片,您必须已经在您的系统上安装了 POV-Ray。您可以在 POV-Ray 的下载页面找到关于此主题的详细说明。因此,假设您已经有一个 [filename] .pov 文件(在我们的示例中 [filename] 代表 “picture”),请按照以下步骤操作:
POV-Ray 安装在 Windows 或 MacOS 系统
步骤5.1:单击 POV-Ray 应用程序图标,打开 POV-Ray 界面(参见上图)。 步骤5.2:单击 Open 按钮,然后导航到您的文件以导入您指定的 [filename] .pov 文件(例如 picture.pov)。现在,您可以根据自己的喜好查看和编辑代码。准备好后,只需单击绿色的 Run 按钮,几秒钟后您将创建 [filename] .png 图片。
POV-Ray 安装在 Linux 或 MacOS 系统
步骤6.1:使用文本编辑器打开 [filename] .pov,进行所需的更改(如果有)并保存。
步骤6.2:打开终端并输入 povray [path / to / pov / file]
。例如,
如果 picture.pov 文件位于桌面上,则键入:
1 $ cd Desktop/ 2 $ povray Desktop/picture.pov
或者直接
1 $ povray Desktop/picture.pov
如果您想要特定的图片尺寸类型:
1 $ cd Desktop/ 2 $ povray picture.pov -w320 -h240 +a0.3
这里的 -w,-h,+a 数值分别定义了宽度、高度和长宽比。