APP下载

基于WPF的三维流场可视化研究

2016-02-16艾丛芳

水道港口 2016年4期
关键词:迹线流场绘制

张 南,金 生,艾丛芳

(大连理工大学海岸和近海工程国家重点实验室,大连116024)

基于WPF的三维流场可视化研究

张 南,金 生,艾丛芳

(大连理工大学海岸和近海工程国家重点实验室,大连116024)

通过对多种三维流场仿真算法的研究,以WPF图形平台为基础,采用可视化编程语言开发了三维流场可视化系统。在三维地形、表面流场可视化的基础上,提出了置于模型域的多剖面流场并叠加标量场的三维流场呈现方式。同时采用示踪球追踪以及标识点迹线描述的方式反映流场的结构特性以及三维流场局部细节。可视化系统通过异步处理方式高效、流畅地呈现仿真流场。以三维溃坝模拟计算为例,验证了可视化平台的实用性。

WPF;三维流场;剖面流场;迹线;示踪球;动画

随着三维数值算法的日益成熟,越来越多的实际工程问题采用三维计算方法来解决[1]。但是目前矢量场的可视化技术还远不能满足实际的要求,这主要表现在缺乏有效的三维流场表示方法、三维交互技术和实时动态显示技术。因此,如何充分识别与分析流场信息仍然是流场表示方法和技术中具有挑战性的研究课题[2-3]。庞大的数据量使得人们不得不寻求新的更为精密复杂的可视化算法和工具来分析三维流场。

基于OpenGL的三维地形可视化,是以往常见的对三维场景的实现方法形式[4-5]。另外一些商业化软件(Tecplot、Mike21,Delft3D)虽然在呈现三维地形以及表面流场方面有一定优势,但在表现剖面流场方面,是将设定的剖面以二维图形的方式在画布上重新绘制,本质上是二维方式。

本文从应用WPF构建三维场景的基本步骤出发,详细描述了三维地形,表面流场,剖面流场,迹线及示踪球以及流场动画的呈现方法,实现了欧拉法和拉格朗日法两种方式的三维流场显示,并且通过颜色材质映射完成了对标量场的模拟。

1基于WPF的三维场景建立

WPF是微软新一代图形系统。它是基于向量的呈现引擎,并且与分辨率无关,相对于DirextX是图形硬件的底层接口,WPF提供的是上层抽象(底层图形系统构建于DirectX之上),它描述了你的场景(scene),只要硬件支持,它就会找出最好的呈现方法。

尽管WPF提供了方便的建模方法和三维图形显示类,但是构建三维场景仍然需要复杂的工作。根据WPF三维建模需要的4个元素,将三维模型的建立归纳为如图1步骤:

图1 基于WPF的三维模型的建立步骤Fig.1 Process of establishing 3D model based on WPF

上述步骤主要是完成:(1)设置摄像机的位置和光线的方向和颜色等使三维场景看上去颜色、大小合适。(2)坐标变换使模型的世界坐标在屏幕上得以显示。(3)建立三维模型。三维模型是通过三维曲面表现的,三维曲面通过网格化几何图形加材质以及纹理映射到表面实现的。(4)在xaml文件中设计呈现三维场景的视口即viewport3D控件,用来显示所有的三维空间的曲面。

2建立三维地形

地形也是以三维曲面方式表现的。

(1)网格化地形数据。描述地形的网格数据已经在数值模拟前处理的时候生成,因此这部分不需要多做额外的工作,只需要读取描述地形的网格数据即可,得到网格节点坐标信息和连接关系信息。将节点和连接关系信息赋值给Positions和TriangleIndices属性,WPF会自动创建MeshGeometry3D对象,从而完成地形数据的网格化。

(2)建立三维地形模型。建立了描述三维曲面的网格或者基元,需要设置映射到图形表面的材质和纹理映射。通常选择DiffuseMaterial材质,它最能够反映真实世界里平面向各个方面散射光的特性。常规情况都采用渐变颜色画刷作为纹理映射到三维表面。颜色从蓝过渡到红,表示数值从小到大。

(3)对三维模型应用变换矩阵。通常描述地形的网格数据采用世界坐标系,因此必须采用适当的坐标变换才能在屏幕上呈现出来。首先根据屏幕范围以及需要显示的整个模型来确定水平方向的缩放比例,为了图形不失真,设置竖直方向的缩放比例与水平方向的缩放比例相同。WPF提供了Transform3DGroup对象进行三维坐标变换。它包括三种坐标变换方式,即平移(TranslateTransfrom3D)、缩放(SacleTransfrom3D)以及旋转(RotateTransform3D)。在设置应用于地形的Model3DGroup对象的三维坐标变换时,同样需要设置应用于摄像机的三维坐标变换以到达预期的视觉效果。

(4)呈现三维地形。三维地形通过viewport3D类就可以呈现出来。只需要将MeshGeometry3D类转换为ModelVisual3D即可。因为三维的场景依赖于观察者的观察点。所以必须规定观察点和光线。Camara类用来设置三维场景的观察点。另外三维图像里必须规定灯光效果使表面可见。更重要的一点,灯光确定了场景的哪一部分将被纳入投影。Light对象用来创建各种灯光和阴影效果,仿照各种真实世界的灯光行为。

3表面流场与截面流场模拟

3.1表面流场模拟

单从水面的流动也能够认识水流的部分三维特性,例如天然河道流有明显的翻滚流、河道弯曲处有横向流,这些现象都可通过表层水流运动而认识。由于液体质点运动的复杂性,在水力学中,用拉格朗日法研究液体运动将会遇到很多困难。同时,在解决实际问题时一般也不需要逐个弄清液体质点的来龙去脉。因此,除个别问题(如波浪运动)外,在水力学中,普遍运用欧拉法来分析和研究液体运动。目前大都以平面非结构化、垂向分层方式构建三维立体网格,因此表面流场的模拟可以扩展成任意层的表面流场模拟。

为了方便实现表面流场的模拟,将绘制三维线段的方法封装在ScreenSpaceLines3D类中,在绘制的时候给ScreenSpaceLines3D类的Points Thickness,Color属性赋值,WPF自动创建三维线段对象。值得注意的是将所有表示流场的矢量箭头作为一个三维对象呈现在三维场景中,用以节省系统的开销。

表面流场的绘制算法流程如下:

遍历显示层(ilayer)的所有网格节点以及节点上物理量的值。并找出该层的平面流场的最大流速作为绘制流速箭头的比尺,以及各个网格节点所在层的x,y,z方向的流速u,v,w。然后根据该网格节点的流速值计算出描述流速的箭头矢量,箭头的长度表示流速大小,方向表示流速的方向。

流速矢量箭头起点就是网格节点(x1,y1,z1),终点坐标(x2,y2,z2)根据流速计算,如公式(1),其中s表示坐标缩放比例。

循环计算该层所有网格节点的流场矢量箭头(3条三维空间线段),利用全局坐标变换,以WPF技术为基础绘制。

若要设置流场的疏密,则需要设置分的份数(nx、ny),然后根据计算域的x,y方向的最大最小值确定标识点的个数和坐标,查询离标识点最近的网格节点作为描述流场的网格节点。获取该网格节点上的物理量的值,计算流速箭头,绘制在屏幕上。

如图2所示,以三维溃坝的计算结果为例,表面三维流场的模拟。

图2 表面三维流场的模拟Fig.2 3D flow field simulation of surface

3.2剖面流场模拟

在三维计算数据显示中,剖面显示是常用的手段,但是目前的商业化三维软件(surfer、tecplot等)只能重新定义一个画布以二维图形的方式分析剖面数据,这样不能直观地显示剖面在原计算域的位置,且不利于对多个剖面数据对比分析。因此,置于原计算域多剖面三维显示的方法对现有三维剖面显示进行补充。

基于WPF呈现三维图形的要素,截面流场绘制需要以下3个步骤。

(1)网格化剖面。

剖面是根据平面上设定的若干条剖线生成。剖线的起始点的坐标可能在计算域内或者计算域外,因此需要重置剖线的起始点坐标。如果剖线两个端点在计算域外,那么与计算域外边界有两个交点,视为剖线穿过计算域计入剖面线,并将剖线与计算域外边界的交点作为剖线新的端点。如果剖线与计算域外边界有一个交点或者没有交点,视为剖线不穿过计算域则不计入剖面线。如果一个端点在计算域外,一个端点在计算域内,那么将剖线与计算域的交点以及计算域内的点作为剖线新的端点。如果剖线两个端点在计算域内则不做其他操作,直接计入剖面线。

由于计算网格采用平面非结构化,垂向分层的方式划分,因此剖面对计算域三维实体进行切割时,剖面是由若干四边形组成,这些四边形分层排列,左右两边平行,上下两边不一定平行。

为了剖面上的四边形更加均匀,不将剖线与平面网格的交点作为剖面网格化的网格节点,而是将剖线按网格尺度均为分成若干点n=dl/gl,其中dl是剖线长度,gl是网格尺度。经过线性插值计算后得到的点作为剖线上的标识点。这时剖面就由若干相对规则的四边形组成。为了叠加剖面上的标量场,也就是计算剖面上网格节点物理量的值,需要重置剖线上的标识点。具体算法为,查找出离各个标识点最近的网格节点,剔除最近点是同一个网格节点的点,剔除两点间的距离小于网格尺度的点。重置后的剖线标识点保存在哈希表(HashTable)中。其中key存放网格节点号,value存放该网格节点所在的单元(一个节点在一个或者多个单元里)。有了剖线上的标识点坐标,因为垂向是均匀分层,根据该时刻自由水面的高程值以及底高程值,很容易计算出剖面上各层标识点的坐标,也就是绘制剖面的网格节点。然后将每个小四边形分解成两个小三角形,也就是绘制剖面的连接关系。从而完成剖面的网格化。

(2)计算剖面上标识点的标量值。

上面已经计算出离标识点最近的网格节点所在的单元,用面积法判断该标识点具体在哪个三角形内,以确定标识点所在的单元号。用面积插值算法求出剖线上标识点的物理量的值。

设网格顶点A、B、C,变量的值为v1、v2、v3,标识点P,变量为v,则P点的变量值为

垂向上根据标识点所在垂向层的位置比例,插值得到其他层网格节点的物理量值。

(3)通过颜色的纹理映射叠加标量场。

需要计算所要叠加的标量(水位、水深、流速、压强等)的最大、最小值,模拟开始前建立标量场对应的色谱表,根据各剖面节点位置处标量值大小,通过插值得到对应的颜色值,将颜色值以填充画刷的颜色体现在截面纹理上以实现截面标量场的显示。

绘制剖面上的流速矢量场跟绘制表面流场的方法相似,也采用欧拉描述,所不同的是需要将流速向剖面投影,并计算出描述剖面流场的矢量箭头。箭头投影的方法参见文献[6]。

如图3所示,以三维溃坝的计算结果为例,采用多剖面的方式表现的三维流场。

图3 多剖面流场模拟Fig.3 3D flow field simulation of multi⁃cross⁃sections

4迹线与示踪球显示

质点的运动轨迹描述同样可以帮助用户更加方便的分析三维流场。其中迹线及示踪球是比较常用的追踪质点运动轨迹的方式。在示踪球三维模拟的过程中,在计算域内布设一些示踪球,追踪不同时刻示踪球所在的位置。在迹线的三维模拟过程中,追踪一个剖面上若干标识点在不同时刻所在的位置,并连接起来,形成描述标识点运动轨迹的空间曲线。

质点追踪之前,需要在计算域内布设标识点,根据显示的不同,进行不同的初始化设置。

4.1初始化示踪球

将能包含计算域的最小矩形区在x、y向等分为nx,ny份。根据示踪球的坐标,查找示踪球所在的网格单元,并计算示踪球所在位置初始时刻的流速值,算法同计算剖面流场标识点的流速相同。示踪球可以描述表层或者全部层的数据,经实践检验最多显示3层的数据,因为如果显示的层太多,界面上示踪球就会重叠遮挡,反而显示不清晰。

4.2初始化迹线

首先根据设定的剖线坐标判断剖面的有效性,根据划分份数n,计算平面上标识点的坐标,然后根据数值模拟计算时分的层数nL,计算垂向上标识点的坐标,计算标示点初始时刻的流速值。迹线及示踪球的三维可视化效果如图4所示。

图4 迹线及示踪球三维流场模拟Fig.4 3D flow field simulation of trace and tracer ball

4.3动态生成算法

初始化完成后,在计算粒子经过Δt时间后的位置的时候采用一阶时间精度模拟。也就是说假设示踪粒子以起始位置处的流速匀速运动。到下一个时刻,计算示踪粒子新的流速值,并假设示踪粒子又以新的流速匀速运动,循环往复,计算出流场的示踪粒子的运动轨迹。

本质上是认为在足够小的时间段内示踪粒子做匀速直线运动。把长时间段划分为若干小时间段线性插值计算示踪粒子新的位置的流速值。实际上是把示踪粒子的曲线运动轨迹看作是若干个短距离直线运动组成[7-8]。采用时间的一阶精度计算迹线的时候,保存的2个时刻的计算结果的时间间隔不能太长,示踪粒子的每步轨迹也不能太大,否则将不足够反应流场的特性。如果采用高阶精度,就需要多一次插值过程,计算增大很多,如果保存的时候时间间隔大,中间采用高阶插值也没有必要。Δt足够小的话,采用一阶精度可以满足模拟的要求。

图5 迹线及示踪球的计算算法流程Fig.5 Algorithm flowchart of trace and tracer ball

一般情况迹线以及示踪球的计算时间步长会比数值模拟计算的时间步长小一些。设迹线计算的当前时刻为t,数值模拟计算的前一时刻为t0,下一时刻为t1,线性插值计算迹线上示踪点的流速。算法如下。

迹线上的标识点经过Δt时间后的新的位置x+=u*Δt;y+=v*Δt;z+=w*Δt;根据新的位置确定所在的网格单元,如果该示踪球已经流出计算域,那么删除该示踪球。

如果计算的当前时刻t+Δt>t1,那么将原来的后一时刻的值赋给前一个时刻,重新读取下一个时刻的流速值,直到t>t总。算法的详细流程如图5所示。

5流场动画显示

流场的动画演示,实际上就是按计算的时间顺序呈现不同时刻的三维流场,标量场和矢量的绘制方法以及步骤上面已经介绍过,这里不再赘述。以WPF技术为基础,流场的三维动画实现起来相对简单,定义一个委托delegate用来实现绘制某一时刻三维流场,采用Dispatcher.BeginInvoke()方法异步执行该委托,这样摆脱单个任务的牵制,提高三维图形的呈现效率,能够实现在动画模拟的时候快速的响应用户的鼠标指令(平移、缩放,旋转)等。

6结论

从研究构建三维流场的算法出发,应用先进的三维图形平台(WPF),实现了流场的欧拉法及拉格朗日法两种表达方式。表面流场和剖面流场采用欧拉描述,以标识点迹线和示踪球方式追踪粒子的运动轨迹来表现拉格朗日场。通过置于原计算域的多剖面的三维矢量场以及叠加标量场的表现方法,直观方便的对比分析剖面流场。同时按计算时间顺序呈现三维流场,实现了实时、快速、平滑的流场矢量动画。为了更好的分析及表现三维流场,在构建每种流场的时候都可以灵活地对流场各参数进行设置。

[1]刘晓波,华祖林,何国建.计算流体力学的科学计算可视化研究进展[J].水动力学研究与进展,2004,19(1):120-125. LIU X B,HUA Z L,HE G J.Advances in VISC of CFD[J].Journal of Hydrodynamic,2004,19(1):120-125.

[2]鲁大营,朱登明,王兆其.三维流场的流线提取算法[J].计算机辅助设计与图形学学报,2013,25(5):666-673. LU D Y,ZHU D M,WANG Z Q.Streamline Selection Algorithm for Three⁃Dimensional Flow Fields[J].Journal of Computer⁃Aided Design&Computer Graphics,2013,25(5):666-673.

[3]袁晓茹,张昕,肖何,等.可视化研究前沿及展望[J].科研信息化技术与应用,2011,2(4):3-13. YUAN X R,ZHANG X,XIAO H,et al.Visualization Research Frontier and Prospect[J].e⁃Science Technology&Application,2011,2(4):3-13.

[4]吴杰,黄春生,范绪箕.基于OpenGL的CFD设计平台中的流场可视化技术及其实现[J].工程图学学报,2004(2):61-72. WU J,HUANG C S,FAN X Q.Visualization Technique of FlowFields on CFD Design Platform UsingOpenGL System[J].Journal of Engineering Graphics,2004(2):61-72.

[5]陈立华,梅亚东,王现勋,等.基于OpenGL三维河网地形与数据场的可视化[J].武汉大学学报:工学版,2007,40(3):34-37. CHEN L H,MEI Y D,WANG X X,et al.Visualization of 3D River Network Terrain and Data Field Based on OpenGL[J].Engineer⁃ing Journal of Wuhan University,2007,40(3):34-37.

[6]康苏海,金生,刘洋.三维场景中截面流场绘制技术研究[J].水道港口,2011,32(5):361-366. KANG S H,JIN S,LIU Y.Technical Research on Cross⁃section Flow Drawing in 3⁃D scene[J].Journal of Waterway and Harbor,2011,32(5):361-366.

[7]康苏海.三维流场立体仿真软件研发[J].水道港口,2010,32(5):324-329.KANG S H.Software Development of 3⁃D Flow Simulation Using Anaglyph Technology[J].Journal of Waterway and Harbor,2010,32(5):324-329.

[8]KANG S H,JIN S.App1ication of video anag1yph maker for 3d flow simulation[J].Journal of Hydrodynamics,2010,22(2):289-294.

[9]Adam Nathan.WPF揭秘[M].北京:人民邮电出版社,2008.

Study of three dimensional flow field visualization based on WPF

ZHANG Nan,JIN Sheng,AI Cong⁃fang
(State Key Laboratory of Coastal and Offshore Engineering,Dalian University of Technology,Dalian 116024,China)

According to the analysis of kinds of flow field simulation algorithm,3D flow field visualization sys⁃tem was developed based on WPF platform and visual programming language.On the basis of visualization of 3d to⁃pography and surface flow field,multiple cross⁃section flow placed into original computational domain was pro⁃posed.At the same time,the description of tracer sphere and path line was adopted to reflect the structure character⁃istics of the flow field characteristics and local details of the flow field.The 3D visualization system can present the simulation of flow field efficiently and smoothly by asynchronous update.On the basis of dam break computation,it is demonstrated that the visual platform can be viewed as a practical tool for 3D flow field analysis.

WPF;three dimensional flow field;cross⁃section flow;path line;tracer sphere;animation

TP 391.41

A

1005-8443(2016)04-0455-06

2016-01-22;

2016-04-11

张南(1983-),女,辽宁省人,博士研究生,主要从事数值模拟和流场仿真模拟研究。

Biography:ZHANG Nan(1983-),female,doctor student.

猜你喜欢

迹线流场绘制
大型空冷汽轮发电机转子三维流场计算
降水自记迹线及雨量数字化提取质检技术
超萌小鹿课程表
放学后
寻血猎犬复合迹线气味追踪训练
基于HYCOM的斯里兰卡南部海域温、盐、流场统计分析
在硬质地面追踪初期如何提高警犬把线能力
基于瞬态流场计算的滑动轴承静平衡位置求解
基于国外两款吸扫式清扫车的流场性能分析
在转变中绘制新蓝图