CN102819630A - 八叉树粗糙网格投影的快速的烟模拟方法 - Google Patents
八叉树粗糙网格投影的快速的烟模拟方法 Download PDFInfo
- Publication number
- CN102819630A CN102819630A CN2012102194905A CN201210219490A CN102819630A CN 102819630 A CN102819630 A CN 102819630A CN 2012102194905 A CN2012102194905 A CN 2012102194905A CN 201210219490 A CN201210219490 A CN 201210219490A CN 102819630 A CN102819630 A CN 102819630A
- Authority
- CN
- China
- Prior art keywords
- octree
- projection
- cigarette
- coarse
- voxel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明是一种八叉树粗糙网格投影的快速的烟模拟方法,该方法根据场景中的物体以及用户设定的感兴趣的区域,先自动的生成距离场,然后根据这个距离场和用户设定的相关阈值自动将场景划分为八叉树网格。这个八叉树的特征为在细节丰富的地方划分得更细,在细节比较少的地方划分得粗一些,在进行每帧烟的模拟的速度投影阶段,先将速度映射到八叉树网格上进行投影,然后映射回精细网格进行局部投影,为了更好的在八叉树网格上进行速度投影,本发明的八叉树粗糙网格投影的快速的烟模拟方法,能够最大效率地利用计算资源而且能模拟出具有丰富细节的烟。
Description
技术领域
本发明属于计算机虚拟现实技术领域,具体地说是一种快速的烟模拟方法,该方法可用于虚拟火灾救援,战争游戏和电影等方面。
背景技术
随着计算机技术的飞速发展,人们越来越注重自然现象在计算机动画中的真实性,在模拟战场、火灾救援时,烟的模拟是必不可少的。从1990年代开始出现了很多用计算机进行烟的模拟方法。
使用网格的方法来模拟烟的公式是著名的纳维-斯托克斯方程(Navier-Stokes Equation):
其中u表示速度场,f表示外力,p表示压强,t表示时间。
众多模拟方法中采用的一个较为通用的框架是Stam在1999年提出的将流体方程进行分解计算[1]:
(1)施加边界环境;
(5)后向追踪进行温度密度平流。
然而,用早期的模拟方法来进行大规模的烟模拟是非常昂贵的,这是因为速度投影中的 是一个全局的求解方程的过程,计算量非常大。近20年来有很多研究人员使用各种方法来加速模拟过程,加速模拟的核心主要在于如何减小速度投影的计算量。
现有的快速模拟方法大概分成三类:第一类是降维的方法,从大量预计算数据中提取一组基,这组基只需要少量的基函数就能近似原有的所有数据,然而这种基缺乏物理含义,而且模拟的场景改变时又需要大量的预计算;第二类是使用粗糙的网格进行模拟,然后使用加 入噪声或者非物理的方法加入细节从而达到高分辨率效果,但是这种方法是非真实的;第三类是采用八叉树的方法,空间网格用八叉树表述,但是这种方法在数值计算上有困难,比如高价插值。
发明内容
为克服上述缺点,本发明的目的在于提供一种快速模拟方法,该方法可以极大的加速模拟过程,同时还能保持完全精细网格模拟时的细节。
为了达到上述目的,本发明采用一种八叉树粗糙网格投影的快速的烟模拟方法,实现方法是:首先,用户输入场景物体,烟的产生范围,烟的初始浓度、持续注入浓度,旋度系数,浮力系数以及指定感兴趣的区域;接着,根据场景物体以及感兴趣的区域生成距离场;然后,根据距离场以及各层次的距离场阈值生成八叉树粗糙网格;最后,在烟的模拟过程中的每一帧,进行速度投影时,将精细网格上的速度映射到八叉树粗糙网格上,然后在八叉树网格上进行速度投影,之后再映射回精细网格进行局部投影。在八叉树粗糙网格上进行速度投影时我们使用了如下文中公式(3)所述的新的数学模型,与传统的模型相比,该模型在八叉树上使用时,可以避免传统方法中的非精确插值,从而更加准确。在进行局部投影的过程中,我们将原本求解方程的问题转换为矩阵-矩阵乘法,并采用GPU并行计算。
附图说明
图1示出本发明基于八叉树粗糙网格投影的快速的模拟方法的主要流程图;
图2示出本发明中一个二维距离场;
图3示出本发明八叉树粗糙网格的二维示意图,(a)中使用了两个阈值0,0,划分为3个层次,(b)中使用了一个阈值1,划分为2个层次;
图4示出本发明的八叉树粗糙网格的三维示意图
具体实施方式
如图1所示,本发明的八叉树粗糙网格投影的快速的烟模拟方法采用如下步骤:
(1)输入场景物体以及感兴趣的区域,生成距离场。所谓“场景物体”是指栅格化之后的体素描述的物体,“感兴趣的区域”也是由栅格化之后的体素描述的区域。在生成距离场的过程中,利用一个先进先出的队列,先将场景物体以及感兴趣区域的体素的距离置为0,并加入到队列中,然后每次取队首体素,对该体素的上下左右前后6个邻居体素分别进行考察,如果该邻居体素还没有被加入过队列则将它的距离置为队首体素的距离加1并加入队尾,考 察完队首体素则从队列中删除它。图2是一个应用本方法生成的二维距离场,图中的带阴影区域是场景物体与感兴趣的区域。
(2)生成距离场之后,根据指定的划分层次与每个层次的距离场阈值,将空间划分成八叉树网格。所谓“划分层次”,是指空间中允许的不同规模的单元格的最大种类,N个划分层次需要N-1个距离场阈值。在生成八叉树网格的过程中,我们先将整个空间划分成最粗糙的网格,如果每个粗糙单元格中含有比相应阈值小的体素,则将该单元格细分为8个子单元格。如此递归地细分,直到不能再分为止。图3是两种不同阈值生成的八叉树网格,(a)中使用了两个阈值0,0,划分为3个层次,(b)中使用了一个阈值1,划分为2个层次。
(3)在进行每一帧的模拟过程中,我们按如下步骤进行:
(a)施加边界环境。边界环境主要是指边界的速度值,温度,烟的注入浓度等。
(b)施加外力与内力。外力主要指浮力,浮力的公式采用fbuoy=α(T-Tamb)z,其中α是浮力系数,T是每个体素的温度,Tamb是环境温度,z是一个与重力方向相反的单位向量,通常是(0,0,1)。内力主要是指旋力,施加旋力采用Fedkiw[2]的旋度放大方法,先根据速度场u计算出旋度场 再根据旋度场计算出旋力方向N,N的计算公式为 接着计算旋力fconf=εh(N×ω),其中ε为旋度系数,h为单元格的边长。
(c)进行速度的平流。我们采用BFECC[3]方法来进行速度的平流。
(e)速度投影。我们使用下面的模式来求解投影后的速度:
对公式(3)的每个变量ui或λi求偏导,得到一个形如Ax=b的方程,使用预条件共轭梯度(PCG)的方法求解x,从而得到投影后的速度。
(f)将投影后的速度映射回精细网格。我们将八叉树粗糙网格上的面的速度映射到与之对应的精细网格上的面。对于那些处于八叉树网格单元格内部的精细网格的面,我们使用 的方法进行映射,这里的u为投影后的速度场,这里的u*为投影前的速度场,p为压强场,也就是Stam[1]提出的方法中的步骤(4)
Lpp=Dvv*, (4)
方程 变成 变成
v=v*-Gpp, (5)
Lpp'=Dvv*, (6)
p=(0 p′T)T, (7)
综合方程(5)(6)(7)可以得到 其中 是矩阵Lp的伪逆。记矩阵M为 那么对于具有相同大小的八叉树单元格,矩阵M是相同的而且是可以预先计算的。这样,我们事先计算好M,在局部投影过程中,将所有具有相同大小的八叉树的单元格的速度排成向量,并合并成矩阵U=(v1 v2 v3...),这样利用矩阵乘法U=MU*可以一次将所有待求的局部速度求解出来。
(g)进行温度与浓度的平流。我们采用BFECC[3]方法来进行温度与浓度的平流。
引用文献
[1]STAM J.:Stable fuids.In Proceedings of the 26th annual conference on Computer graphics and interactive techniques (New York,NY,USA,1999), SIGGRAPH ’99, ACM Press/Addison-Wesley Publishing Co.,pp.121-128.
[2]FEDKIW R.,STAM J.,JENSEN H.W:Visual simulation of smoke.In Proceedings of the 28th annual conference on Computer graphics and interactive techniques (New York,NY,USA,2001),SIGGRAPH’01,ACM,pp.15–22.
[3]KIM B.,LIU Y,LLAMAS I.,ROSSIGNAC J.:Advections with significantly reduced dissipation and diffusion.IEEE Transactions on Visualization and Computer Graphics 13,1(Jan.2007),135–144。
Claims (5)
1.一种八叉树粗糙网格投影的快速的烟模拟方法,其特征在于它包括以下步骤:
(1)输入场景物体,烟的产生范围,烟的初始浓度、持续注入浓度,旋度系数,浮力系数,以及指定感兴趣的区域;这里场景物体、烟的产生范围以及感兴趣的区域用栅格化的体素来描述,烟的初始浓度指模拟开始时烟的浓度,持续注入浓度指每个时刻新增的浓度,旋度系数和浮力系数是影响烟的运动的物理参数;
(2)根据场景物体以及感兴趣的区域生成距离场;
(3)根据距离场以及各层次的距离场阈值生成八叉树粗糙网格;
(4)在烟的模拟过程中的每一帧,进行速度投影时,将速度映射到八叉树粗糙网格上进行投影;
(5)在烟的模拟过程中的每一帧,在进行粗糙网格上的速度投影之后,将速度映射回精细网格,并在每个八叉树单元格对应的区域进行局部投影。
2.如权利要求1所述的八叉树粗糙网格投影的快速的烟模拟方法,其特征在于:在所述步骤(2)中生成距离场的方法是:
首先,构造一个先进先出的队列,将场景物体所在的体素以及感兴趣的区域的体素的距离置为0并加入到队列中;
然后,取队首体素,考察它的上下左右前后6个方向的邻居体素,如果没有被加入过队列,则将它的距离置为队首体素的距离加1,并将该体素加入到队列中,队首元素从队列中去除;
最后,重复考察队首元素,直到队列为空。
3.如权利要求1所述的八叉树粗糙网格投影的快速的烟模拟方法,其特征在于:在所述步骤(3)中根据相应的距离场阈值生成八叉树粗糙网格,具体方法是:
首先,将距离场划分为最粗糙的网格;
然后,如果每个粗糙单元格中的各个细网格的距离值都大于相应层次的距离场阈值,则不用细分,否则,分成八个细网格;
最后,对每个粗糙单元格进行递归的细分,直到不能再分。
5.如权利要求1所述的八叉树粗糙网格投影的快速的烟模拟方法,其特征在于:在所述的步骤(5)中,局部投影的过程中将求解方程的问题转换为矩阵-矩阵乘法并使用GPU加速计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210219490.5A CN102819630B (zh) | 2012-06-27 | 2012-06-27 | 八叉树粗糙网格投影的快速的烟模拟方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210219490.5A CN102819630B (zh) | 2012-06-27 | 2012-06-27 | 八叉树粗糙网格投影的快速的烟模拟方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102819630A true CN102819630A (zh) | 2012-12-12 |
CN102819630B CN102819630B (zh) | 2014-10-22 |
Family
ID=47303741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210219490.5A Expired - Fee Related CN102819630B (zh) | 2012-06-27 | 2012-06-27 | 八叉树粗糙网格投影的快速的烟模拟方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102819630B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104361629A (zh) * | 2014-12-01 | 2015-02-18 | 北京航空航天大学 | 一种基于流线变形的烟模型空间编辑方法 |
CN104978711A (zh) * | 2015-07-17 | 2015-10-14 | 北京航空航天大学 | 一种基于烟模拟的汉字形状变形方法 |
CN107341849A (zh) * | 2017-07-12 | 2017-11-10 | 大连海事大学 | 一种快速实时烟雾模拟算法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060074610A1 (en) * | 2003-06-27 | 2006-04-06 | Rasmussen Nicholas G | Apparatus and method of simulating the movement of elements through a region of 3D space |
CN102147932A (zh) * | 2011-03-30 | 2011-08-10 | 北京航空航天大学 | 一种基于可移动欧拉网格的模型驱动的烟雾模拟方法 |
-
2012
- 2012-06-27 CN CN201210219490.5A patent/CN102819630B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060074610A1 (en) * | 2003-06-27 | 2006-04-06 | Rasmussen Nicholas G | Apparatus and method of simulating the movement of elements through a region of 3D space |
CN102147932A (zh) * | 2011-03-30 | 2011-08-10 | 北京航空航天大学 | 一种基于可移动欧拉网格的模型驱动的烟雾模拟方法 |
Non-Patent Citations (1)
Title |
---|
LOSASSO,F.,GIBOU,F.,AND FEDKIW, R.: ""Simulating Water and Smoke with An Octree Data Structure"", 《ACM TRANSACTIONS ON GRAPHICS》, vol. 23, no. 3, 31 December 2004 (2004-12-31), pages 457 - 462 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104361629A (zh) * | 2014-12-01 | 2015-02-18 | 北京航空航天大学 | 一种基于流线变形的烟模型空间编辑方法 |
CN104361629B (zh) * | 2014-12-01 | 2017-03-29 | 北京航空航天大学 | 一种基于流线变形的烟模型空间编辑方法 |
CN104978711A (zh) * | 2015-07-17 | 2015-10-14 | 北京航空航天大学 | 一种基于烟模拟的汉字形状变形方法 |
CN104978711B (zh) * | 2015-07-17 | 2017-12-08 | 北京航空航天大学 | 一种基于烟模拟的汉字形状变形方法 |
CN107341849A (zh) * | 2017-07-12 | 2017-11-10 | 大连海事大学 | 一种快速实时烟雾模拟算法 |
CN107341849B (zh) * | 2017-07-12 | 2020-03-10 | 大连海事大学 | 一种快速实时烟雾模拟算法 |
Also Published As
Publication number | Publication date |
---|---|
CN102819630B (zh) | 2014-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109147048A (zh) | 一种利用单张彩色图的三维网格重建方法 | |
CN107085629A (zh) | 一种基于视频重建与欧拉模型耦合的流体仿真方法 | |
CN103279980B (zh) | 基于点云数据的树叶建模方法 | |
US9262853B2 (en) | Virtual scene generation based on imagery | |
CN111768502A (zh) | 一种基于gpu加速技术的非结构网格二维洪水模拟系统 | |
Iizuka et al. | An interactive design system for pop-up cards with a physical simulation | |
CN103745497B (zh) | 植物生长建模方法和系统 | |
CN103035030A (zh) | 头发模型建模方法 | |
CN102819630B (zh) | 八叉树粗糙网格投影的快速的烟模拟方法 | |
Chen et al. | GPU optimization for high-quality kinetic fluid simulation | |
Shao et al. | Realistic and stable simulation of turbulent details behind objects in smoothed‐particle hydrodynamics fluids | |
CN103678888B (zh) | 一种基于欧拉流体模拟算法的心脏血液流动示意显示方法 | |
CN104463934A (zh) | 一种“质点-弹簧”系统驱动的点集模型动画自动生成方法 | |
CN102867336B (zh) | 一种基于热力学模型的固体燃烧过程模拟方法 | |
CN110426688A (zh) | 一种基于地形背景目标的sar回波模拟方法 | |
CN104517299B (zh) | 视频流体物理驱动模型恢复及重新仿真的方法 | |
Kellomäki | Fast water simulation methods for games | |
CN103886636B (zh) | 基于光线投射步进补偿的实时烟雾渲染算法 | |
CN104361629B (zh) | 一种基于流线变形的烟模型空间编辑方法 | |
Kohek et al. | Interactive synthesis and visualization of self-organizing trees for large-scale forest succession simulation | |
García-Feal et al. | Advanced fluid visualization with DualSPHysics and Blender | |
Feng et al. | An interactive 2d-to-3d cartoon modeling system | |
Lioret et al. | GAN applied to Wave Function Collapse for procedural map generation | |
US20070129918A1 (en) | Apparatus and method for expressing wetting and drying on surface of 3D object for visual effects | |
Feng et al. | Simulation of real water in 3D animation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141022 Termination date: 20170627 |