基于DirectX的高炉三维断面显示方法研究与实现

2018-04-04 08:59
武汉工程职业技术学院学报 2018年1期
关键词:高炉顶点绘制

林 敏

(武汉工程职业技术学院 湖北 武汉:430080)

现代大型高炉要保持长寿有两个瓶颈,一个是炉缸炉底容易烧穿,另一个是炉腹、炉腰及炉身下部寿命短。高炉生产实践表明,随着冶炼强度的不断提高,由于炉缸炉底烧穿而导致高炉停炉的现象在国内外屡见不鲜。因此,确保炉缸炉底的长寿对整个高炉生命周期的延长至关重要。由于高炉具有“暗箱操作”的特点,不能将其剖开对炉缸炉底侵蚀情况进行检测,只能借助于现代计算机技术对高炉侵蚀情况进行分析、判断并加以预测。很多钢铁企业都建有自己的高炉侵蚀预测系统,用以直观地反映高炉断面的温度分布情况。

图1为高炉二维断面温度分布示意图,能有效辅助工程人员对炉内情况进行判断。此类系统的图形绘制主要基于GDI技术。该技术具有绘图便捷以及与硬件无关的优点,但是由于其屏蔽硬件细节是建立在损失部分效率的基础之上,故采用GDI绘图的场景一般绘图速度较慢,工程人员为提高其显示效率和减小绘图闪烁做出了不少努力。

图1 高炉断面温度分布示意图

相比于GDI,DirectX有直接访问显示硬件的特点,能快速的进行复杂图形绘制。本文在分析了DirectX绘图原理的基础上,以某钢铁企业高炉侵蚀预测系统为应用背景,详细说明了如何在实际开发中基于DirectX实现绘制高炉三维模型断面功能。

1 系统组成

以某钢铁企业为例,在高炉建造过程会在炉壁和炉底埋设许多热电偶,高炉运行时利用热电偶采集高炉炉缸炉壁温度数据。其采集的温度数据存放于Oracle数据库中,利用Oracle公司提供的instant client动态链接库可以将温度数据提取出来用于数值计算,并模拟炉内温度分布情况。程序完成数值计算后得到一系列的二维断面温度数据,利用计算机图像显示技术将二维断面温度显示出来以供工程人员参考。显示平台采用C/S和三层架构,以客户端的形式与Oracle数据服务器交互。

图2 断面显示结构示意图

如图2所示,底层对应数据访问层依赖于运行于Windows平台上的.NET框架以及DirectX图形编程接口,采用Oracle提供的轻量级客户端访问存储热电偶的数据库。业务逻辑层利用下层接口构造满足需要处理数据的逻辑以及通信需求。最上层则是UI呈现负责同用户的交互功能实现以及对必要的数据进行输入及校验其合法性。

2 DirectX三维模型切割方法

DirectX是微软提供的三维图形编程接口,广泛地应用于工业仿真领域。DirectX中模型由顶点构成的三角形组成,渲染中只渲染模型表面,内部则是中空状态,故DirectX很少用于模拟模型内部状况。粒子是DirectX中用于模拟微小颗粒如烟雾和火花等的数据结构。由于其具备坐标及颜色属性,与数值计算获得的断面温度数据特点相符,适合用以模拟断面温度分布。根据DirectX的工作原理,有如下几种方法对模型进行切割:

方法1:用SetClipPlane函数对模型进行切割,用粒子填充断面;

利用SetClipPlane切割,其函数原型如下:

HRESULT SetClipPlane(

[in] DWORD Index, //裁剪面编号

[in] const float*pPlane, //裁剪面参数

);

Index参数表明裁剪面编号,pPlane指针指向含有4个参数float型数组,记为A、B、C和D,用以确定Ax+By+Cz+Dw=0平面。如果模型中顶点(x,y,z)满足Ax+By+Cz+Dw>=0则可见,否则不可见。通过以上方法对模型进行裁剪并用粒子填充断面,如果粒子离切面较近,在DirectX中旋转模型会将某些粒子剔除,太远则断面与模型边缘脱离,显示效果较差。

方法2:利用平面对模型切割,将模型位于平面一侧的顶点剔除并取得处于切面上的顶点,利用多边形三角化算法生成三角形组成断面;

由方法1的原理可以自行设置切面,计算切面附近的顶点,将获得顶点顺时针连接可以形成多边形断面。但DirectX渲染以三角形为单位,不能直接绘制多边形。方法2将顶点组成的多边形转化为若干三角形后进行绘制,三角化使用较多为Delaunay算法。

由于DirectX着色只支持flat、gouraud以及phong几种模式而不能自由改变顶点间颜色,与绘制断面需要灵活改变某点颜色需求不符,因此不适合本应用场景。

方法3:高炉完整模型和断面模型交替渲染显示断面模型,用点精灵覆盖于断面处形成断面。

利用该方法可以精确控制断面坐标及颜色,在合理设置粒子坐标的前提下,绘制断面时不会出现断面与模型脱离,适合作为模型切割的解决方案。

3 三维断面显示

显示三维断面需要完成三个步骤:第一步根据用户输入的角度,利用插值计算出断面的温度数据;第二步,根据监控系统是否处于断面显示状态,读入并显示利用3ds MAX设计好高炉炉缸完整或者断面模型;第三步,将第一步计算好的温度数据进行坐标变换置于三维坐标系中,同时根据不同的温度计算对应的RGB值,以点精灵的方式在断面处显示出来。以下是详细步骤介绍。

3.1 三维任意断面数据计算

目前许多高炉侵蚀预测系统只能提供固定位置的二维断面示意图,这给工程人员的监控带了许多不便之处。如某钢铁公司的提供的断面显示功能只能在0°、45°、90°和135°这四个位置提供温度截面图,其他角度温度只能依靠工程人员的经验进行判断。为了克服上述缺点,笔者在新的三维预测模型中加入了可对任意位置提供三维断面显示的功能。

假设通过数值计算得到的温度数据一共有10个半截面,可将整个高炉炉缸(360°)分为[0,36)、[36,72)、[72,108)、[108,144)以及[144,180)共5个区间,并按1,2,…,5进行编号,然后按公式1确定断面上某点的具体数值。

(1)

公式中TC为由计算得到的三维温度矩阵,angle为用户输入的断面角度,k为角度所在的区间序号,data为用以保存数据的数组。计算出输入角度位于哪两个半截面之间后,利用两个断面处于相同位置的温度数据TCk+1ij及TCkij进行插值运算,逐一计算出需要显示断面上每点的温度数据。由此可以确定整个炉缸中任意一点的温度值,为断面显示提供三维数据。

3.2 三维模型显示

在3ds MAX中有很多现成的模型可以使用,如长方体、球体、圆柱体和比较有代表性的茶壶。高炉的炉底在立体上可以视作是一个对称的凹槽,可以利用3ds MAX的车削功能将一个半断面进行旋转360度得到一个完整的炉底形状。

假设通过计算生成半个断面的温度数据是一个670*675的矩阵,为了方便将每个温度数据与高炉断面空间上的点对应起来,在3ds MAX中制作三维断面模型时将模型断面的长宽设定为长67*2,高67.5,以0.1为步长可以将断面分为1340*675个区域,每个区域温度与计算得到的温度数据矩阵一一对应。模型导出为.X文件后,利用Mesh类的FromFile()方法将该模型加载至程序,同时将模型置于世界坐标系中的原点利于后续断面坐标计算。

3.3 三维断面显示

计算所得二维温度数据与三维空间中的位置关系如图3所示,为将数据映射到三维空间,首先固定Z轴坐标,然后将计算的温度数组在XY平面中进行转置。伪代码1完成此功能,其中i、j为温度数据数组下标。

图3 坐标转换示意图

伪代码1:points[ParticleCount].Position=((j*0.1),(67-(i*0.1)),-0.1)

为直观地反映温度高低,需要建立一个由温度值到RGB值的映射,满足温度越高的部位越红,温度越低的部位越蓝。对照某钢铁厂的温度表,获取红(255,0,0)、黄(255,255,0),绿(0,255,0)、青(0,255,255)、蓝(0,0,255)、黑(0,0,0)对应的温度,将这6个温度作为端点将整个温度范围划分成5个区间。对位于某一区间内的温度数据利用其区间两端点对应的RGB值进行线性插值计算,以R分量为例,利用公式2进行计算获得某点的R值。

(2)

其中T为该点的温度值,Tb、Ta分别为所在区间端点的温度值,Ra、Rb为该区间两端点R分量的值。同理确定该点的G、B值,最终得到渐变过渡的颜色效果。在伪代码1后加入一函数Tem2RGB完成此功能。

在渲染过程中记录监控系统是否处于断面显示状态,如果是则渲染断面模型,否则渲染完整模型,并将计算获得的粒子渲染到断面表层加以显示。为显示顶点自身颜色,需要关闭场景中的灯光。

试验中指明了粒子大小、数量、格式以及粒子缓存等信息,当观察点离原点越近粒子越小,反之则越大,符合人的视觉规律,避免出现粒子覆盖断面不完全或者超过断面边界的现象。

4 实例

本文的实验环境为Intel(R) Core(TM) i5 M430 2.27GHz处理器,3GB RAM,ATI Mobility Radeon HD 4350 (512MB)显卡,开发环境为VS 2013。渲染效果如图4所示,可以对模型进行旋转,在不同角度查看断面温度分布。

图4 三维渲染效果图

以完成一幅图片渲染耗时为目标与某钢铁企业目前使用的系统进行速度对比测试,测试结果如表1所示。由表1可知,利用本文方法大幅度提高了绘制断面所需时间,平均耗时为某钢铁企业使用的系统的1/800。

表1 断面渲染速度对比

5 结束语

本文提出基于DirectX模型进行切割的方法并用于高炉断面中为目前高炉侵蚀预测系统中关键部分—断面显示提供了一种更优的方案。利用该方法可以快速地对高炉断面进行模型渲染,在提供更强大功能和更好显示效果的同时大幅减少断面绘制所消耗的时间,同时本文提出的方法对于其他需要利用DirectX绘制模型内部的场景也有一定的参考价值。

[1]张继超,马洋洋,董塞漠.基于C#和DirectX的三维虚拟校园构建探讨[J].测绘工程,2015,(1):44-47.

[2]杨鹏,李业丽,等.一种新的加载展示3D模型的方法[J].北京印刷学院学报,2016,(4):46-50,55.

[3]杜旭,黄亚明.基于高炉冷却壁热流强度的炉缸炉底侵蚀研究[J].电脑知识与技术:学术交流,2017,(3X):212-213,221.

[4]江建国,温少营,张瑞楠.基于双缓冲技术的GDI+无闪烁绘图[J].计算机应用,2012,32(S2):136-139.

猜你喜欢
高炉顶点绘制
5100m3高炉长期休风快速恢复实践
过非等腰锐角三角形顶点和垂心的圆的性质及应用(下)
过非等腰锐角三角形顶点和垂心的圆的性质及应用(上)
昆钢2500m3高炉开炉快速达产实践
昆钢2500m3高炉停炉及开炉快速达产实践
高炉前
超萌小鹿课程表
放学后
在转变中绘制新蓝图
VBA在宗地图绘制中的应用