基于粒子法的流体模拟的表面构筑方法

文档序号:6466329阅读:154来源:国知局
专利名称:基于粒子法的流体模拟的表面构筑方法
技术领域
本发明涉及适用于通过以粒子法的计算所实现的流体模拟的表现等,提高 表面形状的表现自由度的表面构筑方法、其程序以及存储其程序的存储介质。
背景技术
"粒子法模拟"是将作为对象的物体作为许多粒子的集合来捕捉,并注目 许多粒子的各个的行为来进行计算的模拟法。在计算机上进行计算时,对于粒
子通常使用直径一定的"球"。当通过球的集合体来表现物体的形状时,随该 球的大小(直径)的决定方法,物体形状的近似度或者空间解析度变化。此外, 通过变化球的直径来变化空间解析度,能够控制基于计算机的模拟计算中的计 算精度以及计算速度。
近年来,利用粒子法模拟来进行许多刚体的冲突计算、流体或粉体等的行 为计算,在计算机显示装置的画面上进行冲突或流动等的模拟研究。例如在以
下文献中记载了该研究田中正幸等、"利用粒子法的刚体计算方法的开发与 在计算机图形学中的应用"、日本机械学会、第19次计算力学演讲会演讲论文 集、701-702页、2006。这些模拟技术的研究作为计算机图形学(Computer Graphics, CG)的基础的技术是非常重要的。
在粒子法的流体模拟的计算中,由于粒子本身表现流体,因而不必进行界 面追踪,就能够容易计算自由表面的流动。在流体表面的计算中,渲染 (rendering)基于粒子法的计算结果,显示在显示画面时,对通过计算得到的 多个例粒子分配浓度球,构筑隐函数曲面来计算流体的表面。例如在以下文献 中记载了该计算例J. Blinn, A generation of algebrac surface drawing. ACM Transactions on Graphice, 1(3): 235-256, 1982、或者M. Muller, D. Charypar, and M. Gross. Particle-based fluid simulation for interactive applications. Inproc. of SIGGRAPH Symposium on Computer Animation, pages 154-159, 2003.。但是, 在通过这样的计算来求出表面时,难以表现在流体的变化状态中产生的薄膜或
者尖锐边缘。
在粒子法的流体模拟的显示中,长期以来希望计算出流体中的薄膜或者尖 锐边缘的表现、并能够表现。

发明内容
本发明的目的是,鉴于上述课题,提供能够通过粒子法的流体模拟的显示 来表现流体中的薄膜或者尖锐边缘的基于粒子法的流体模拟的表面构筑方法、 其程序以及存储其程序的存储介质。
本发明的基于粒子法的流体模拟的表面构筑方法、其程序以及存储其程序 的存储介质,为了达成上述目的,具有如下所述的结构。
第一表面构筑方法,其适用于利用在由CPU或GPU等的运算处理器执行 的基于粒子法的流体模拟的计算中得到的数据,在显示装置的画面上渲染计算
结果的方法,具有对作为计算对象的粒子分配浓度球来计算出隐函数曲面, 并计算出根据隐函数曲面形成流体表面的多个基础顶点(V°)的第一阶段;对 在第一阶段中计算出的形成流体表面的多个基础顶点(V°)的每一个,为了调 整表面的尖锐度,至少执行一次的第二阶段。
在第二表面构筑方法中,在上述方法中,第二阶段具有以下步骤对形成 流体表面的多个基础顶点(V°)中的每一个,取在各顶点的周围存在的粒子的 坐标的加权和,将加;^又和除以多个基础顶点的加权总和,由此计算第一顶点 (TO的步骤;以及利用第一顶点(I")中的每一个和多个基础顶点(V。)中 的每一个,并根据包含一个参数c的公式"Vit+1=f (Vjt, tjt, c)"来计算第二 顶点(Tt+1)的步骤。
在第三表面构筑方法中,在上述方法中,上述公式"Vit+1=f (Vi、 tjt, c)" 中的f (Vjt, tjt, c)是"(l-c) Vjt+ctit"。
第一表面构筑程序,与使运算处理器执行基于粒子法的流体模拟的计算, 并执行利用得到的数据在显示装置的画面上渲染计算结果的M的程序相关 联,而且,使计算机执行以下步骤对作为计算对象的粒子分配浓度球来计算 出隐函数曲面,并根据隐函数曲面形成流体表面的多个基础顶点(V。)的第一 步骤;以及对在第一阶段中计算出的形成流体表面的多个基础顶点(V°)中的 每一个,为了调整表面的尖锐度至少执行一次的第二步骤。第二表面构筑程序在上述表面构筑程序中,在第二步骤中,进而使运算处
理器执行以下步骤对形成流体表面的多个基础顶点(V°)中的每一个,取在
各顶点的周围存在的粒子的坐标的加权和,将加权和除以多个基础顶点的加权
总和,由此计算第一顶点(T1)的步骤;以及利用多个第一顶点(TO中的每 一个和多个基础顶点(V°)中的每一个,并根据包含一个参数c的公式"Vit+1=f (V/, ti、 c)"来计算第二顶点(Tt+1)的步骤。
第三表面构筑程序,在上述程序中,"Vit+1=f ( Vjt, tjt, c)"中的f(Vjt, tjt, c)是"(l國c)
本发明的计算机可读取的存储介质是存储了上述的第一到第三的任意一 个表面构筑程序的存储介质。
根据本发明,在基于粒子法以流体模拟在显示装置的画面上描绘流体时, 能够提高如薄膜或者尖锐边缘那样的流体表面的尖锐度,并能够以较短的计算 时间来表现薄膜等流体表面,而且能够提高流体表面的表现的自由度。


图1是实施基于本发明的粒子法的流体模拟的表面构筑方法的计算机系 统的基本结构的系统结构图2是表示构筑流体表面的方法的处理的流程图3是表示根据用于尖锐地表现流体表面的处理而变化的表面状态的变 化的状态迁移图4是表示在图3中所示的t=2 (重复两次)时的流体表面上,使参数c 从0开始依次变大时的流体表面状态的变化的状态迁移图。
具体实施例方式
以下,基于

本发明的优选实施例。
图1表示实施基于粒子法的流体模拟的表面构筑方法的计算机系统的基 本结构。
计算机系统IO例如利用PC ( Personal Computer)构成,作为运算处理部 (运算处理器)具有CPU(中央运算处理装置)11。 CPU11例如在PC等中所 装备的通常的运算处理部。计算机系统IO作为存储装置而具有主存储器13A, 作为周边装置至少具有输入装置14以及显示装置15。 CPUll、主存储器13A、
输入装置14以及显示装置15经由总线16相互连接。输入装置14经由接口 17与总线16连接,显示装置15经由输出接口 18与总线16连接。
在上述的计算机系统10中,还设有作为其他运算处理部的GPU12以及与 此相关联的视频存储器(VRAM) 13B。 GPU12是"Graphic Processing Unit (图 形运算处理器)",执行图像运算处理。视频存储器13B直接与GPU12连接, 通过GPU12对视频存储器13B进行数据交换。
上述的CPUll,作为基本的处理动作,根据存储在主存储器13A的模拟 程序13A-1来实施粒子法的流体模拟中的计算。然后,CPU执行存储在主存 储器13A的通常的图像显示程序13A-2,利用在流体模拟的计算中得到的数据 来实施图像处理,并利用做成的数据来在显示装置15的画面上描绘(用于显 示的渲染)。在显示装置15的画面上,根据粒子法模拟的计算,显示CG图像。
在本实施例中,在主存储器13A中还具有用于执行基于粒子法的流体模 拟的表面构筑方法的表面运算程序13A-3。
在本实施例的以下说明中,进行基于粒子法的流体模拟的计算,而且根据 该流体模拟的计算结果在显示装置15的画面上描绘(渲染)流体,以此为前 提,将基于上述的表面运算程序13A-3在画面上描绘的流体的自由表面作为具 有薄膜或者尖锐边缘的尖锐表面来表现(表面构筑)。
根据图2说明在表面运算程序13A-3中执行的表面构筑方法。图2是表示 CPU11从主存储器13A读取并执行表面运算程序13A-3,由此执行该表面构 筑方法的步骤的流程图。
如图2所示,本实施例的表面构筑方法由关于第一阶段S100的操作以及 关于第二阶段S200的操作构成。流体的表面,通过第一阶段S100以及第二 阶段S200来构筑。第一阶段S100是利用浓度球以粒子做成顶点,由此构筑 流体表面的阶段,第二阶段S200是对得到的流体表面进行处理的阶段。
说明第一阶段S100的流程。第一阶段S100是利用浓度球以粒子做成顶 点,由此构筑流体表面。
在第一步骤S101中,对为了基于粒子法表现流体而设定的多个粒子,对 全部粒子中的每一个分配浓度球,同时使其持有某个加权系数(w)。此处, 所谓"浓度球"是具有以成为对象的粒子存在的坐标值为中心,对任意定义量
赋予的分布特性的假想的数学存在物。此外,"加权函数"是如后面所述,具 有变化特性,只有在具有该变化特性时,才能够任意进行设定。
之后,关于上述多个粒子中的每一个,形成隐函数曲面(步骤S102)。该 隐函数曲面通过求出对分配浓度球、且持有某个加权函数(O))的前面所述的 粒子分配的浓度以及加权函数的总和来构筑。在数学上,作为全部粒子的加权 函数(co)的和来通过以下(公式1 )求出在坐标x上的浓度值(p (x)。如后 面所述,加权函数(co)实际上成为坐标x的函数co (x)。
(公式l)
formula>formula see original document page 9</formula>
在上述的(公式l)中,rj是第j个粒子的坐标。加权函数co利用具有以 下变化特性的加权函数亦即,在从顶点到粒子j的距离I x-r」I越近,权重 越大,距离越远,权重越小。在实际计算中,若离顶点无限远的粒子的权重不 是O,则计算成本变得非常高。因此,关于本实施例的计算中使用的加权函数, 使远于某个距离的粒子的权重为0。在该实施例中,作为一例使用了在下面的 (公式2)中所示的加权函数co (x)。 (公式2)
<formula>formula see original document page 9</formula>
在上述公式2中,(K 1 x I <re , and re《I x I 。
在上述的(公式2 )中,re是影响半径,加权函数(a (x)在I x I为re以 上时为0。随着关于坐标x的I x I靠近影响半径re,加权函数co (x)的值逐 渐变小。
如上所述求出的浓度值cp (x)在阈值为r。的位置上构筑流体表面。将这 样构筑流体表面的位置作为顶点,并假设存在n个这样的顶点,而且将这些设 为VG,用下述的(公式3 )来表述。 (公式3)
<formula>formula see original document page 9</formula>
如上所述,在基于粒子法的流体模拟的计算中,能够得到关于作为所描绘
的流体的自由表面的计算来构筑流体表面的n个顶点的计算结果。利用以上的 浓度球,以粒子构筑流体表面的处理(第一阶段S100),是长期以来众所周知 的方法。
下面说明第二阶段S200的处理。第二阶段S200是能够进一步处理在第 一阶段S100中得到的流体表面、并尖锐地表现如薄膜或者尖锐的边缘等那样 的流体表面的方法。
在第二阶段S200中,对构筑流体表面的上述的n个顶点中的每一个,如 (公式4)所示取在各顶点(原来的顶点)周围存在的粒子的坐标的加权和、 且除以这些权重的总和,由此计算新的顶点(步骤S201)。 (公式4)
THZj①'(Vit-rj)rj)/(&co'(Vit-rj))
在上述(公式4)中,加权函数co'与前面所述的加权函数co相同。如以上 所述,关于所有的上述n个顶点(原来的顶点),计算出在下面的(公式5) 中表现的值(步骤S202),通过使用新的顶点和原来的顶点来计算在下面的(公 式6)中表现的新的顶点(V广1)(步骤S203 )。 (公式5) THt。t, t , t ,…,tn1} (公式6) Vit+1= ( l誦c ) V/+ ctjt
在上述的(公式6)中,c是取从0到1之间的值的参数,能够通过调节 该值来调整表面的尖锐度。为了在显示装置15的画面上,基于计算结果渲染 流体表面,要求出在各顶点的法线矢量。因为通过取浓度值的梯度(gradient) 不能够求出计算出的顶点的法线矢量,因而原来的顶点的法线,在二维时取共 有顶点的边的法线之和、在三维时取共有的面的法线之和,并进行归一化来求 出。
另外,为了计算新的顶点(Vit+1)而使用的公式并不限于(公式6)。可以 使用包含一个参数c和重复次数t的一般的公式"Vit+1=f (V厶ti、 c)",上述 的公式"Vit+1= (l-c) ViVcti1"仅仅一个例子而已。
通过利用如上所述求出的顶点V广1,进一步再次计算上述的(公式4)和
(公式6)能够得到顶点V广2 (步骤S204)。在判定步骤S204中只要是YES, 就会重复基于上述步骤S201 S203的操作,这样,就能够使流体的表面形状 成为更加紧贴粒子配置的尖锐的表面形状。通过这些操作(步骤S201 S204), 流体表面上的某个点逐渐收敛于空间分布的粒子坐标的加权重心。
然后,参照图3,以图像说明用于尖锐地表现流体表面的上述第二阶段 S200的计算例。图3是以二维计算的例子,表示(a) ~ (i)的9个阶段的计 算状态的变化。(b) (i)中的各个t分别是t^, 2, 3, 4, 5, 6, 7, 8。
在最初的阶段中,作为一例,配置6个粒子(图中的黑点),从这些6个 粒子中提取隐函数曲面(图3的(a))。在图3的(a)中,在6个粒子的周围 描绘了基于浓度球表现表面的曲线31。用实现描绘的该曲线31是基于前面所 述的顶点(V。)表现的曲线。
在图3的(b)以后的图中,以虛线描《会表现顶点(TO的曲线32,且以 实线描绘表现顶点(V)的曲线33。例如,在图3的上段的(b)中示出了在 t=l时的表面,在(c)中示出了在t二2时的表面。在图3中,随着到中段((d) ~(f))、下段((g) (i)), t逐渐增加。这样,随着重复在第二阶段S200的 计算,根据顶点(I", V)描绘的流体表面靠近粒子的坐标,如图3的(f) ~ (i)等所示,能够实现尖锐的流体表面。另外,在图3的例中,参数c使用 0.3。
如以上所述,关于通过基于粒子法的流体模拟的计算结果而得的流体,该 流体的端部的粒子周围的表面,在使用浓度球的情况下,被广泛扩散地形成(图 3的a)。当观察该表面的附近时,由于在附近只存在一个粒子,因而在该表面 计算的粒子坐标的加权重心大致成为该粒子的坐标。之后,通过增加t流体表
面会逐渐收敛于该粒子的坐标。
此外,在上述的第二阶段S200中,通过使用上述的参数c和重复次数t 就能够控制流体表面的形状。
图4表示在使上述的(公式6)中的c的值变化时的流体表面的变化。在 图4中表示在图3的(b)中所示的t=2 (重复两次)时的流体表面的变化。在 图4中,(a)表示cK)的表面,不发生变化。即该表面表示提取出隐函数曲面 时的表面。在图4中,随着从(a)到(c), c的值变大,V逐渐靠近T1。另
外,在图4中也分别描绘了表现顶点(T1)的虚线曲线32以及表现顶点(V) 的实线曲线33。
从图3和图4的说明可以知道,通过改变重复次数t或者改变参数c能够 构筑各种各样的流体表面。根据只利用现有的方法的浓度球的表面构筑方法, 只能通过改变加权函数来变换流体表面的形状。与此相对,根据本发明的流体 表面的构筑方法,通过调重复次数t和参数c能够表现各种各样的流体表面, 尤其能够表现薄膜或者尖锐边缘等尖锐表面。
在前面的实施例的说明中说明了二维的例,但在三维时也能够通过同样的 方法来表现尖锐的表面。
前面所述的根据基于粒子法的流体模拟的计算结果的流体表面的构筑方 法,主要通过在GPU12等中执行如图1中所示的表面运算程序13A-3来实现。 表面运算程序13A-3其本身被存储在CDROM等的存储介质,可以构成独立 的程序产品。
权利要求
1. 一种基于粒子法的流体模拟的表面构筑方法,该方法是利用在由运算处理器执行的基于粒子法的流体模拟的计算中得到的数据,在显示装置的画面上渲染计算结果的方法,其特征在于,具有对作为计算对象的粒子分配浓度球来计算出隐函数曲面,并计算根据所述隐函数曲面形成流体表面的多个基础顶点(V°)的第一阶段;对在所述第一阶段中计算出的形成所述流体表面的所述多个基础顶点(V°)的每一个,为了调整表面的尖锐度至少执行一次的第二阶段。
2. 根据权利要求1所述的基于粒子法的流体模拟的表面构筑方法,其特 征在于,所述第二阶段具有以下步骤对形成所述流体表面的所述多个基础顶点(V°)的每一个,取在各顶点的 周围存在的粒子的坐标的加权和,将所述加权和除以所述多个基础顶点的加权 总和,由此计算第一顶点(I")的步骤;以及利用所述多个第一顶点(T1)的每一个和所述多个基础顶点(V°)的每一 个,并根据包含一个参数c的公式"Vit+1=f (V入t/, c ),,来计算第二顶点(Tt+1) 的步骤。
3. 根据权利要求2所述的基于粒子法的流体模拟的表面构筑方法,其特 征在于,所述公式"V":f(Vit, ti、 c)"中的f(Vjt, A c)是"(l-c) Vjt+ctit"。
4. 一种基于粒子法的流体模拟的表面构筑程序,其与使运算处理器执行 基于粒子法的流体模拟的计算,并执行利用得到的数据在显示装置的画面上渲 染计算结果的程序相关联,进而,使计算机执行以下步骤对作为计算对象的粒子分配浓度球来计算出隐函数曲面,并计算根据所述隐函数曲面形成流体表面的多个基础顶点(V。)的第一步骤;以及对在所述第 一 阶段中计算出的形成所述流体表面的所述多个基础顶点 (v°)的每一个,为了调整表面的尖锐度至少执行一次的第二步骤。
5. 根据权利要求4所述的基于粒子法的流体模拟的表面构筑程序,其特 征在于,在所述第二步骤中,进一步使所述运算处理器执行以下步骤对形成所述流体表面的所述多个基础顶点(V°)的每一个,取在各顶点的周围存在的粒子的坐标的加权和,将所述加权和除以所述多个基础顶点的加权总和,由此计算第一顶点(T1)的步骤;以及利用所述多个第一顶点(T1)的每一个和所述多个基础顶点(V°)的每一个,并根据包含一个参数c的公式"Vit+1=f (Vil, ti、 c ),,来计算第二顶点(Tt+1)的步骤。
6. 根据权利要求5所述的基于粒子法的流体模拟的表面构筑程序,其特 征在于,所述公式"Vit+1=f (V/, tjt, c)"中的f(Vjt, I/, c)是"(1-c) Vit+ctjt"。
7. —种存储了基于粒子法的流体模拟的表面构筑程序的计算机可读取的 存储介质,所述表面构筑程序,与使运算处理器执行基于粒子法的流体模拟的计算,并执行利用得到的数 据在显示装置的画面上渲染计算结果的程序相关联, 进而,使计算机执行以下步骤对作为计算对象的粒子分配浓度球来计算出隐函数曲面,并计算根据所述 隐函数曲面形成流体表面的多个基础顶点(V。)的第一步骤;以及对在所述第 一 阶段中计算出的形成所述流体表面的所述多个基础顶点 (V°)的每一个,为了调整表面的尖锐度至少执行一次的第二步骤。
8. 根据权利要求7所述的存储了基于粒子法的流体模拟的表面构筑程序 的计算机可读取的存储介质,所述表面构筑程序,在所述第二步骤中,进一步使所述运算处理器执行以下步骤 对形成所述流体表面的所述多个基础顶点(V°)的每一个,取在各顶点的 周围存在的粒子的坐标的加权和,将所述加权和除以所述多个基础顶点的加权总和,由此计算第一顶点(Tt)的步骤;以及利用所述多个第一顶点(丁t)的每一个和所述多个基础顶点(V°)的每一 个,并根据包含一个参数c的公式"Vit+1=f (Vjt, t/, c)"来计算第二顶点(Tt+I) 的步骤。
9.根据权利要求8所述的存储了基于粒子法的流体模拟的表面构筑程序 的计算机可读取的存储介质,在所述表面构筑程序中,所述公式"Vit+1=f (Vi1, tjt, c)"中的f(V厶tjt, c)是"(1-c) Vjt+ctit"。
全文摘要
本发明提供一种基于粒子法的流体模拟的表面构筑方法、其程序以及存储其程序的存储介质。在本发明中通过粒子法的流体模拟显示来表现流体中的薄膜或者尖锐的边缘。该表面构筑方法是应用到利用在CPU等中执行的基于粒子法的流体模拟的计算中得到的数据,在显示装置的画面上渲染计算结果的方法中,包括以下阶段对作为计算对象的粒子分配浓度球来计算出隐函数曲面,并根据隐函数曲面来计算出形成流体表面的多个基础顶点(V°)的第一阶段;对在第一阶段中计算出的形成流体表面的多个基础顶点(V°)中的每一个,为了调整表面的尖锐度至少执行一次的第二阶段。
文档编号G06T15/10GK101388117SQ20081014471
公开日2009年3月18日 申请日期2008年7月30日 优先权日2007年9月11日
发明者原田隆宏 申请人:普罗姆泰克软件公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1