基于流体仿真技术的互动数字台球系统设计与实现
2014-07-19陈慕羿王洪源
陈慕羿 王洪源
摘 要: 流体仿真是虚拟现实、军事仿真等领域的热点和难点。目前基于流体力学的方法计算量巨大,普通计算机难以满足实时性要求,而基于渲染的方法只能产生视觉效果,无法实现流体与物体的互动。为兼顾实时性与视觉真实性,所设计的互动数字台球系统利用改进的LBM方法对流体进行模拟。将虚拟水面投影到铺有专用幕布的台球桌上,并利用数字摄像机捕捉台球的运动轨迹。作为对水面的扰动,通过流体模拟,实现了真实台球与虚拟水面的交互,并可达到35帧以上的帧率。设计新颖合理,有很好的用户体验和娱乐效果。
关键词: 流体仿真; Navier?Stokes方程; LBM; OpenCV
中图分类号: TN911?34 文献标识码: A 文章编号: 1004?373X(2014)10?0020?04
Abstract: Fluid simulation technology is a hot spot with many difficulties in virtual reality, military simulation, etc. The current simulation methods based on fluid mechanics need complex computation, which make real?time application impossible. In the meantime, the methods based on rendering can achieve visual effect only, but can not realize interaction of fluid with objects. To achieve both real?time performance and visual reality, the interactive digital billiard system simulates fluid by an improved lattice Boltzmann method (LBM). First, the system projects virtual water surface onto a pool table attached with special projection screen, and then captures the movement of the billiards by a digital camera, and the disturbance on the water surface is implemented by a well developed fluid simulation method. The requirements of real?time, interaction and good visual quality are all met. The frame rate could reach more than 35. The system is well designed, which could bring much amusement to the users.
Keywords: fluid simulation; Navier?Stokes equation; lattice Boltzmann method; OpenCV;
0 引 言
流体仿真技术以流体力学方程为基本算法,利用计算机技术模拟流体的运动状态,是虚拟现实技术的热点之一,在影视特效、动画游戏、虚拟仿真等方面都有着十分重要的应用。
目前的流体技术主要包含两大方向,一是基于纹理的渲染技术,利用视觉欺骗实现水波荡漾的效果,这种方式无法实现实时交互。二是建立在流体力学的基础上[1],基于物理的仿真,但由于求解不可压缩流体的Navier?Stokes方程所需的计算量过大,无法满足实时性的要求。LBM(Lattice Boltzmann Method)方法[2?6]是20世纪80年代中期建立和发展起来的一种流场模拟方法,目前,除了在一般的流体力学问题中得到了成功的应用外,LBM方法在多相(元)流、化学反应扩散、渗流、粒子悬浮流、磁流体力学等相关领域也得到了比较成功的应用。本文所设计的互动数字台球系统实现了真实台球与虚拟水面的交互,为在实时性、互动和视觉真实性的条件下实现流体仿真,本文研究并实现了改进的LBM模型、并充分利用运行于GPU之上的着色器加强渲染效果,满足了设计需求,并达到了很好的视觉效果,目前系统已投入实际使用。
1 互动数字台球总体设计方案
系统首先利用数字摄像机捕捉台球的运动轨迹,然后采用实时流体仿真技术,模拟台球与水面互动时产生的波纹效果,再通过投影设备将渲染得到的输出投影到铺有专用幕布的台球桌上。系统组成如图1所示。
1.1 硬件构成
(1) 输入设备:互动数字台球的输入设备由数字摄像机、专用幕布和台球组成。台球是系统的输入部分,是流体运动的触发装置,当台球运动时,流体根据台球的运动做出相应的响应,在台球的运动轨迹上形成波纹振荡的效果。铺设在台球桌面上的专用幕布用于提高台球定位的精度,也使投影图像更加清晰明亮。数字摄像机置于台球桌的正上方,用于监控台球的运动状态,并将采集到的视频传送到处理系统中。
(2) 数据处理设备:采用计算机作为处理设备,利用软件系统进行流体运动的求解及渲染。计算机根据接收到的视频流,利用动态图像分析方法及数字图像处理算法,解算出每帧中各台球的位置,速度等信息,作为流体仿真系统的输入。然后流体仿真系统根据输入的台球运动信息,利用改进的LBM(Lattice Boltzmann Method)对流体进行模拟,控制水面产生波纹,并进行渲染。
(3) 输出设备:投影机,位于台球桌的正上方,将渲染图像同步投影到台球桌上,以实现水面与台球运动同步的效果。
1.2 软件框架设计
软件系统主要由以下模块构成:
(1) 台球定位模块:采用计算机视觉的方法,利用OpenCV视觉库[7],根据摄像机的视频输入流,计算出每帧的台球位置及运动状态信息[8?10];
(2) 流体仿真模块:构造一个用于计算和渲染的网格(本系统采用360×320的网格),以台球位置作为输入,利用LBM方法求解流体方程,求出每帧中每个网格点所对应的高度值;
(3) 渲染模块:该模块包括由CPU执行的部分,采用OpenGL图形库编写,以及由GPU执行的部分(着色器),采用Cg语言编写。该模块对所计算出的三维水面网格进行渲染,并实现光照等效果;
(4) 声音模块:实现音效部分;
(5) 输入处理部分:该部分可接收鼠标输入,并根据其位置和运动产生相应的水波互动,主要用于调试和测试。
由于现实中与虚拟现实相关的交互应用大多数需要满足实时性,因此系统的运行速度是一个极为关键的参数。由于篇幅有限,后文将主要介绍流体仿真模块的实现。
2 流体仿真技术
2.1 不可压缩流体的Navier?Stokes方程
4 结 论
本系统在intel双核2.53 GHz E5300,内存1 GB,显存512 MB的硬件条件下,可达到高于35 f/s的帧率,并保证了低延时,满足了成本、实时性、真实性的要求。设计新颖合理,有很好的用户体验和娱乐功能,现已投入使用。
参考文献
[1] STAM J. Stable fluids[C]// Proceedings of 1999 Computer Graphics. Addison Wesley Longman: Siggraph, 1999: 121?128.
[2] RINALDI P, DARI E, V?NERE M, et al. Lattice?Boltzmann Navier?Stokes simulation on graphic processing units [J]. Asian Journal of Applied Science, 2011, 4: 762?770.
[3] BORONI G, DOTTORI J, DALPONTE D, et al. An improved immersed?Boundary algorithm for fluid?solid interaction in lattice? Boltzmann simulations [J]. Latin American Applied Research, 2013, 43 (2): 181?188.
[4] GARC?A B C, BORONI G, V?NERE M, et al. Realtime interactive animations of liquid surfaces with lattice Boltzmann engines [J]. Australian Journal of Basic and Applied Sciences, 2010, 4: 3730?3740.
[5] CHEN S, DOOLEN G D. Lattice Boltzmann method for fluid flows [J]. Annual Reviews Fluid Mechanics, 1998, 30: 329?364.
[6] ZHOU J G. Lattice Boltzmann methods for shallow water flows [M]. Berlin: Springer?Verlag, 2004.
[7] Anon. OpenCV [M/OL]. [2013?12?31]. http://www.opencv.org.
[8] 李振伟,陈翀,赵有.基于OpenCV的运动目标跟踪及其实现[J].现代电子技术,2008,31(20):128?131.
[9] 马颂德,张正友.计算机视觉:计算理论与算法基础[M].北京:科学出版社,1998.
(3) 输出设备:投影机,位于台球桌的正上方,将渲染图像同步投影到台球桌上,以实现水面与台球运动同步的效果。
1.2 软件框架设计
软件系统主要由以下模块构成:
(1) 台球定位模块:采用计算机视觉的方法,利用OpenCV视觉库[7],根据摄像机的视频输入流,计算出每帧的台球位置及运动状态信息[8?10];
(2) 流体仿真模块:构造一个用于计算和渲染的网格(本系统采用360×320的网格),以台球位置作为输入,利用LBM方法求解流体方程,求出每帧中每个网格点所对应的高度值;
(3) 渲染模块:该模块包括由CPU执行的部分,采用OpenGL图形库编写,以及由GPU执行的部分(着色器),采用Cg语言编写。该模块对所计算出的三维水面网格进行渲染,并实现光照等效果;
(4) 声音模块:实现音效部分;
(5) 输入处理部分:该部分可接收鼠标输入,并根据其位置和运动产生相应的水波互动,主要用于调试和测试。
由于现实中与虚拟现实相关的交互应用大多数需要满足实时性,因此系统的运行速度是一个极为关键的参数。由于篇幅有限,后文将主要介绍流体仿真模块的实现。
2 流体仿真技术
2.1 不可压缩流体的Navier?Stokes方程
4 结 论
本系统在intel双核2.53 GHz E5300,内存1 GB,显存512 MB的硬件条件下,可达到高于35 f/s的帧率,并保证了低延时,满足了成本、实时性、真实性的要求。设计新颖合理,有很好的用户体验和娱乐功能,现已投入使用。
参考文献
[1] STAM J. Stable fluids[C]// Proceedings of 1999 Computer Graphics. Addison Wesley Longman: Siggraph, 1999: 121?128.
[2] RINALDI P, DARI E, V?NERE M, et al. Lattice?Boltzmann Navier?Stokes simulation on graphic processing units [J]. Asian Journal of Applied Science, 2011, 4: 762?770.
[3] BORONI G, DOTTORI J, DALPONTE D, et al. An improved immersed?Boundary algorithm for fluid?solid interaction in lattice? Boltzmann simulations [J]. Latin American Applied Research, 2013, 43 (2): 181?188.
[4] GARC?A B C, BORONI G, V?NERE M, et al. Realtime interactive animations of liquid surfaces with lattice Boltzmann engines [J]. Australian Journal of Basic and Applied Sciences, 2010, 4: 3730?3740.
[5] CHEN S, DOOLEN G D. Lattice Boltzmann method for fluid flows [J]. Annual Reviews Fluid Mechanics, 1998, 30: 329?364.
[6] ZHOU J G. Lattice Boltzmann methods for shallow water flows [M]. Berlin: Springer?Verlag, 2004.
[7] Anon. OpenCV [M/OL]. [2013?12?31]. http://www.opencv.org.
[8] 李振伟,陈翀,赵有.基于OpenCV的运动目标跟踪及其实现[J].现代电子技术,2008,31(20):128?131.
[9] 马颂德,张正友.计算机视觉:计算理论与算法基础[M].北京:科学出版社,1998.
(3) 输出设备:投影机,位于台球桌的正上方,将渲染图像同步投影到台球桌上,以实现水面与台球运动同步的效果。
1.2 软件框架设计
软件系统主要由以下模块构成:
(1) 台球定位模块:采用计算机视觉的方法,利用OpenCV视觉库[7],根据摄像机的视频输入流,计算出每帧的台球位置及运动状态信息[8?10];
(2) 流体仿真模块:构造一个用于计算和渲染的网格(本系统采用360×320的网格),以台球位置作为输入,利用LBM方法求解流体方程,求出每帧中每个网格点所对应的高度值;
(3) 渲染模块:该模块包括由CPU执行的部分,采用OpenGL图形库编写,以及由GPU执行的部分(着色器),采用Cg语言编写。该模块对所计算出的三维水面网格进行渲染,并实现光照等效果;
(4) 声音模块:实现音效部分;
(5) 输入处理部分:该部分可接收鼠标输入,并根据其位置和运动产生相应的水波互动,主要用于调试和测试。
由于现实中与虚拟现实相关的交互应用大多数需要满足实时性,因此系统的运行速度是一个极为关键的参数。由于篇幅有限,后文将主要介绍流体仿真模块的实现。
2 流体仿真技术
2.1 不可压缩流体的Navier?Stokes方程
4 结 论
本系统在intel双核2.53 GHz E5300,内存1 GB,显存512 MB的硬件条件下,可达到高于35 f/s的帧率,并保证了低延时,满足了成本、实时性、真实性的要求。设计新颖合理,有很好的用户体验和娱乐功能,现已投入使用。
参考文献
[1] STAM J. Stable fluids[C]// Proceedings of 1999 Computer Graphics. Addison Wesley Longman: Siggraph, 1999: 121?128.
[2] RINALDI P, DARI E, V?NERE M, et al. Lattice?Boltzmann Navier?Stokes simulation on graphic processing units [J]. Asian Journal of Applied Science, 2011, 4: 762?770.
[3] BORONI G, DOTTORI J, DALPONTE D, et al. An improved immersed?Boundary algorithm for fluid?solid interaction in lattice? Boltzmann simulations [J]. Latin American Applied Research, 2013, 43 (2): 181?188.
[4] GARC?A B C, BORONI G, V?NERE M, et al. Realtime interactive animations of liquid surfaces with lattice Boltzmann engines [J]. Australian Journal of Basic and Applied Sciences, 2010, 4: 3730?3740.
[5] CHEN S, DOOLEN G D. Lattice Boltzmann method for fluid flows [J]. Annual Reviews Fluid Mechanics, 1998, 30: 329?364.
[6] ZHOU J G. Lattice Boltzmann methods for shallow water flows [M]. Berlin: Springer?Verlag, 2004.
[7] Anon. OpenCV [M/OL]. [2013?12?31]. http://www.opencv.org.
[8] 李振伟,陈翀,赵有.基于OpenCV的运动目标跟踪及其实现[J].现代电子技术,2008,31(20):128?131.
[9] 马颂德,张正友.计算机视觉:计算理论与算法基础[M].北京:科学出版社,1998.