后面几页就是一些可视化驱动的效果截图
首先是opengl,该库的特性是
可以直接在G4中进行控制。
使用GL库,而该库在大部分的linux发行版和windows系统中都是默认包含的。
能够进行渲染,具有光学真实效果,而且提供了一些交互的特性,例如缩放,旋转以及平移等等。
快速响应,通常可以榨干图形硬件(也就是通常所说的显卡)的性能。提供最好的效果哦。
可以存储为像素图像或者矢量图像,例如矢量图可以存储为EPS文件。
可以制作为现场电影。
使用motif进行控制的opengl
前面所说的opengl,控制什么的都要依靠命令,而这里使用Motif可以添加一些菜单到可视化图像界面上。但是这种方式已经被Qt给取代了,也就是说motif的方式已经快要变成孤儿包,没几个人愿意去维护了。但是当前依然是支持的,实在想用还是可以用的。这里想起了EGS中可视化三维剂量分布的时候用的一个工具,底层好像也是用的motif。如果使用motif,就必须安装该库,同时要将其链接到G4中。关于Motif的软件库截图如下
DAWN
同样的,打开方式也是一行命令。其特性为
可以创建一个扩展名为.prim的文件
需要安装DAWN,而这个库在大部分linux和windows系统下都可以安装。
DAWN创建了一个经过渲染的,具有光学真实特性的postscript格式的图像文件。
在postscript阶段就没法进行交互了(例如不能缩放,旋转或者平移等等)。
高质量的技术渲染,毕竟使用了矢量图像postscript格式啊。
可以用postscript应用程序查看或者打印。
DAWN的例子,可以看到图很像草图大师画出来的效果。结构清晰,但是不注重真实性。所以有点光学真实效果貌似不代表真实效果。不过能清晰表现出探测器的结构已经能接受。有关的软件有DAWNCUT和DAVID。
对于生成的DAWN图像文件,有一个独立的应用程序,叫做DAWNCUT。如图所示为Archlinux下安装DAWNCUT的命令
程序如其名,是一个采用平面对三维图像进行切割的软件包。输入是.prim文件和一些切割参数。输出是一个新的.prim文件,保存的是切割后的图像。
另外的一个独立的应用程序叫做DAVID,看起来是个人名啊。这个软件可以显示任何的几何重叠错误,听起来用于检查几何真的不赖。输入文件是.prim文件,如果里面几何体重叠了,就会高亮显示出来。具体链接还是请去看日本的kek网址。下图是在archlinux下显示的DAVID的概览。
VRML介绍
有两种打开方式,参考上图命令/vis/open VRML1FILE或/vis/open VRML2FILE。特性为
可以创建一个文件,然后可以在任何的VRML浏览器中查看,例如包含VRML插件的网络浏览器。
需要VRML浏览器(对于不同的操作系统有很多不同的选择哦)。
图像是经过渲染的且具有光学真实效果,并且具备一些交互特性,例如缩放,旋转以及平移。
有限的打印能力(支持像素图,不支持矢量图)
VRML继续介绍
本例是用G4生成一个vrml文件后,用freeWRL打开查看的效果,可以看出可以很酷炫的显示出几何体以及粒子径迹等。
RayTracer其特性为
可以创建一个Jpeg格式的图片文件。
使用G4自己的径迹功能来跟踪光子穿过几何体,从而形成图像。
可以显示几何体,但是不能显示轨迹。
可以渲染任何G4可以处理的几何体,例如布尔运算得到的几何体。其他的可视化驱动就不能处理所有情形。
支持阴影效果,透明度效果以及表面镜像效果,从而使得图像显得真实。
当G4自己的径迹将光子射出穿过几何体到达灵敏面的时候,raytracer就起作用了。结果图以jpeg格式展示出来。
一些几何体的某些切片在其他的可视化驱动下也许会无法显示(因为那些驱动的算法只是用来计算可以看到的形状和多边形)。但是raytracer可以处理G4几何预览器能处理的任何几何体。
有关的命令有
• 1) trace * 开始光线追踪
• 2) column * 定义水平像素个数
• 3) row * 定义垂直方向像素个数
• 4) target * 定义目标的中心位置
• 5) eyePosition * 定义观察位置
• 6) lightDirection * 定义灯光方向,为了阴影效果。
• 7) span *定义每100个像素间隔的角度偏转
• 8) headAngle * 定义头部方向.
• 9) attenuation * 定义透明材料的衰减长度
• 10) distortion * 鱼眼镜头的变形效果。
• 11) ignoreTransparency * 忽略透明度,即使G4Colour的alpha值< 1
• 12) backgroundColour * 设置背景颜色:红绿蓝:范围0.->1。
展示raytracer的阴影效果
raytracer对于布尔实体的处理效果
raytracer对于透明度的支持情况
raytracer对于表面镜像的处理情形
通过名字可以看出来比raytracer多了个X,该功能是4.8.0开始引入的。和raytracer可视化驱动一样能生成jpeg,但是可以连续的渲染到屏幕,从而用户可以观察到渲染越来越平滑的过程。这意味着用户想要改变观看参数的时候,无需取消本次运行,无需重新进行渲染就能看到新参数下的图像效果。
gmocren用于体积可视化的超赞工具。是源自于日本的一个项目,本意是为了让G4在医学物理中更进一步。使用它,你可以可视化如下数据。
体积数据,包含了不仅仅一个集合的重叠情况。
轨迹
几何
该可视化驱动可以运行在如下情形
windows和linux平台
Mac不确定
基于商业软件包,但是对于G4用户是自由使用的
网址
安装很容易,在上面的网址下载后,首先运行一键安装包,然后在解压目录的gtk子目录,可以看到用于gtk框架(linux下图形界面框架之一)的一键安装包。
ASCIITree介绍,其特性为
将几何的继承关系存储为纯文本格式
不是图形化的
可以控制保存的细节层次,就是到底保存哪些级别的几何
可以计算任意继承关系体积内的质量和体积。
ASCIITree是一个可视化驱动,但是实际上并不是图形化的,它只是将几何的层次结构存储为树状文本。上图介绍了在观测者视图刷新命令执行后的效果。可以设置不同细节层次的显示。命令是/vis/ASCIITree/verbose num,如果num是0,只打印输出物理体名字,如果是1,则打印逻辑体,如果是2,打印实体和实体类型,如果是3,打印实体的体积和密度,如果是4,则计算某个视觉场景下的质量和体积,意思就是可以看到的部分的质量和体积。默认情况下,只能显示第一次放置的子体,而无法显示重复复制的物体。如果添加10,就能显示重复放置的物体以及复制几何情况。这部分对于没有可视化功能的远程服务器,尤其是使用SSH进行代码的远程调试的时候,用这些命令可以方便的验证和调试几何情况。
ASCIITree:计算体积和质量
如果设置冗余级别为4,ASCIITree计算完整的几何树的质量,其中完整的几何树包括每个物理体指定深度层次的子体。
计算包括减去母体那部分被每个子体占据的质量,然后加上子体的质量,以此类推。后面两行命令是设置冗余度及刷新视图,后面一行代表输出的结果情况。最后会计算出世界的体积以及世界中所有深度层次的物理体的质量。
带有OpenGL可视化的Qt驱动,是近年来为了Qt用户接口和可视化而开发的。示例如下。
可以看出session直接以单行命令的形式给集成到了Qt的可视化界面中。
可以将G4内核的输出显示在上图红框中,且有过滤器支持搜索,即便是MT(多线程版本)也支持哦。
这块黑乎乎的部分,就是可视化部分,每个视图都可以单独生成标签页,就像大家用的浏览器一样的感觉。支持使用鼠标旋转,缩放,移动,取点(信息)。
最上面这个框框是工具栏,说白了就是基于Qt加了些按钮,每个按钮对应某些功能咯。这里面的相关信息是来自于icons.mac文件,如果项目中没有,记得参考其他示例加一下,看看效果哦。如果要添加自定义按钮只要在icons.mac添加有关指令即可,无需编写代码。
最左侧这部分的中间标签是帮助功能的树状图浏览器,支持自由的文本搜索哦。忘记命令,只要记得关键词或者关键词的一部分就能快速查询出所有相关的宏命令,是不是很给力。
如果想要重复某些命令,左侧栏切换最右侧标签到历史窗口,就能看到之前输入过哪些命令哦。懒人福音哦。
切换到左侧边栏最左边标签的场景树,可以看到有关的几何体的树状结构。每个几何前面的框框可以选中和不选中哦,选中后再右侧黑乎乎的窗口就能看到,不选中就隐藏咯。
制作电影:event的时间演化。通过制作电影,可以展示一个event的时间演化情况,可以看shower的慢镜头动作哦。
基于时间片技术,将轨迹敲碎,形成独立的小片段,每次运行一帧。
需要新型的可视化特性,丰富的轨迹以及一些OpenGL驱动的扩展等。
可以从G4中直接运行这些动画,而无需手动将这些电影拼接在一起。
10GeV π介子 在3ns飞行的一个动画。
推荐阅读- G4教程4.1-G4的可视化(上)
- G4教程3.0-用户界面1
- G4教程2.0-用户文档和示例
- G4教程1.6-用户类
- G4教程1.5-基本概念和内核结构
- G4教程1.4-用户许可解读
- G4教程1.3-用户应用程序的亮点
- G4教程1.2-Geant4近期研发进展