CN102819630A - 八叉树粗糙网格投影的快速的烟模拟方法 - Google Patents

八叉树粗糙网格投影的快速的烟模拟方法 Download PDF

Info

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
Application number
CN2012102194905A
Other languages
English (en)
Other versions
CN102819630B (zh
Inventor
齐越
左庆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beihang University
Original Assignee
Beihang University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beihang University filed Critical Beihang University
Priority to CN201210219490.5A priority Critical patent/CN102819630B/zh
Publication of CN102819630A publication Critical patent/CN102819630A/zh
Application granted granted Critical
Publication of CN102819630B publication Critical patent/CN102819630B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明是一种八叉树粗糙网格投影的快速的烟模拟方法,该方法根据场景中的物体以及用户设定的感兴趣的区域,先自动的生成距离场,然后根据这个距离场和用户设定的相关阈值自动将场景划分为八叉树网格。这个八叉树的特征为在细节丰富的地方划分得更细,在细节比较少的地方划分得粗一些,在进行每帧烟的模拟的速度投影阶段,先将速度映射到八叉树网格上进行投影,然后映射回精细网格进行局部投影,为了更好的在八叉树网格上进行速度投影,本发明的八叉树粗糙网格投影的快速的烟模拟方法,能够最大效率地利用计算资源而且能模拟出具有丰富细节的烟。

Description

八叉树粗糙网格投影的快速的烟模拟方法
技术领域
本发明属于计算机虚拟现实技术领域,具体地说是一种快速的烟模拟方法,该方法可用于虚拟火灾救援,战争游戏和电影等方面。 
背景技术
随着计算机技术的飞速发展,人们越来越注重自然现象在计算机动画中的真实性,在模拟战场、火灾救援时,烟的模拟是必不可少的。从1990年代开始出现了很多用计算机进行烟的模拟方法。 
使用网格的方法来模拟烟的公式是著名的纳维-斯托克斯方程(Navier-Stokes Equation): 
∂ u / ∂ t = - u ▿ · u - ▿ p + f - - - ( 1 )
▿ · u = 0 - - - ( 2 )
其中u表示速度场,f表示外力,p表示压强,t表示时间。 
众多模拟方法中采用的一个较为通用的框架是Stam在1999年提出的将流体方程进行分解计算[1]: 
(1)施加边界环境; 
(2)施加外力(比如浮力)与内力(比如旋力), 
Figure BDA00001815437900013
(3)后向追踪进行速度平流, 
Figure BDA00001815437900014
(4)速度投影, 其中的p通常由 
Figure BDA00001815437900016
得到; 
(5)后向追踪进行温度密度平流。 
然而,用早期的模拟方法来进行大规模的烟模拟是非常昂贵的,这是因为速度投影中的 
Figure BDA00001815437900017
是一个全局的求解方程的过程,计算量非常大。近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计算出旋度场 
Figure BDA00001815437900031
再根据旋度场计算出旋力方向N,N的计算公式为 接着计算旋力fconf=εh(N×ω),其中ε为旋度系数,h为单元格的边长。 
(c)进行速度的平流。我们采用BFECC[3]方法来进行速度的平流。 
(d)将精细网格的速度映射到八叉树网格上,映射方法是 
Figure BDA00001815437900033
其中 
Figure BDA00001815437900034
是八叉树网格上的速度, 
Figure BDA00001815437900035
是精细网格上的速度,fsets是每个八叉树网格的面所覆盖的精细网格的面的集合,n是该集合的元素个数。 
(e)速度投影。我们使用下面的模式来求解投影后的速度: 
min u , λ { ∫ Ω ( u - u * ) 2 dr - ∫ Ω λ ▿ · udr } - - - ( 3 )
其中u与u*分别是位置r处的投影后和投影前的速度,λ是r处的拉格朗日乘子,Ω是问题的求解空间, 
Figure BDA00001815437900037
为向量场的散度算子。 
对公式(3)的每个变量ui或λi求偏导,得到一个形如Ax=b的方程,使用预条件共轭梯度(PCG)的方法求解x,从而得到投影后的速度。 
(f)将投影后的速度映射回精细网格。我们将八叉树粗糙网格上的面的速度映射到与之对应的精细网格上的面。对于那些处于八叉树网格单元格内部的精细网格的面,我们使用 
Figure BDA00001815437900041
Figure BDA00001815437900042
的方法进行映射,这里的u为投影后的速度场,这里的u*为投影前的速度场,p为压强场,也就是Stam[1]提出的方法中的步骤(4) 
但是为了进一步加速这个过程,将变量p和u排列成向量,p变成p,u变成v,并且将拉普拉斯算子Δ排列成矩阵Lp,散度算子 
Figure BDA00001815437900043
排列成矩阵Dv,梯度算子 
Figure BDA00001815437900044
排列成矩阵Gp,这样方程 Δp = ▿ · u * 变成 
Lpp=Dvv*,              (4) 
方程 u = u * - ▿ p 变成 v = v * - ▿ p 变成 
v=v*-Gpp,              (5) 
在实际求解 
Figure BDA00001815437900048
的过程中,有一个元素是置为0的,我们将向量p中的第一个元素置为0,将剩下的部分记为p',那么公式(4)变成 
Lpp'=Dvv*,             (6) 
p=(0 p′T)T,            (7) 
综合方程(5)(6)(7)可以得到 
Figure BDA00001815437900049
其中 是矩阵Lp的伪逆。记矩阵M为 
Figure BDA000018154379000411
那么对于具有相同大小的八叉树单元格,矩阵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)中根据相应的距离场阈值生成八叉树粗糙网格,具体方法是:
首先,将距离场划分为最粗糙的网格;
然后,如果每个粗糙单元格中的各个细网格的距离值都大于相应层次的距离场阈值,则不用细分,否则,分成八个细网格;
最后,对每个粗糙单元格进行递归的细分,直到不能再分。
4.如权利要求1所述的八叉树粗糙网格投影的快速的烟模拟方法,其特征在于:在所述步骤(4)中在八叉树粗糙网格上的投影方法采用了极小化投影前后速度的能量差的数学模型,具体模型为:
min u , λ { ∫ Ω ( u - u * ) 2 dr - ∫ Ω λ ▿ · udr } - - - ( 1 )
其中u与u*分别是位置r处的投影后和投影前的速度,λ是r处的拉格朗日乘子,Ω是问题的求解空间,
Figure FDA00001815437800022
为向量场的散度算子。
5.如权利要求1所述的八叉树粗糙网格投影的快速的烟模拟方法,其特征在于:在所述的步骤(5)中,局部投影的过程中将求解方程的问题转换为矩阵-矩阵乘法并使用GPU加速计算。
CN201210219490.5A 2012-06-27 2012-06-27 八叉树粗糙网格投影的快速的烟模拟方法 Expired - Fee Related CN102819630B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 北京航空航天大学 一种基于可移动欧拉网格的模型驱动的烟雾模拟方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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