CN105389855B - 对对象进行建模的方法和设备 - Google Patents
对对象进行建模的方法和设备 Download PDFInfo
- Publication number
- CN105389855B CN105389855B CN201510463552.0A CN201510463552A CN105389855B CN 105389855 B CN105389855 B CN 105389855B CN 201510463552 A CN201510463552 A CN 201510463552A CN 105389855 B CN105389855 B CN 105389855B
- Authority
- CN
- China
- Prior art keywords
- particle
- fluid
- deformable objects
- fluid object
- impingment
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 239000002245 particle Substances 0.000 claims abstract description 324
- 239000012530 fluid Substances 0.000 claims description 283
- 238000012545 processing Methods 0.000 claims description 30
- 230000004044 response Effects 0.000 claims description 20
- 238000006243 chemical reaction Methods 0.000 claims description 18
- 238000001514 detection method Methods 0.000 claims description 8
- 238000000605 extraction Methods 0.000 claims description 7
- 238000012360 testing method Methods 0.000 claims description 5
- 230000000694 effects Effects 0.000 claims description 4
- 230000003993 interaction Effects 0.000 description 25
- 230000000452 restraining effect Effects 0.000 description 17
- 238000011017 operating method Methods 0.000 description 6
- 241000406668 Loxodonta cyclotis Species 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000005484 gravity Effects 0.000 description 2
- 241000272525 Anas platyrhynchos Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000010419 fine particle Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000009738 saturating Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/25—Design optimisation, verification or simulation using particle-based methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/10—Numerical modelling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2113/00—Details relating to the application field
- G06F2113/08—Fluids
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Databases & Information Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Architecture (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
提供一种对对象进行建模的方法和设备。所述方法和设备可检测使用粒子建模的第一对象与使用粒子建模的第二对象之间的相邻区域;基于在针对相邻区域定义的网格的网格点中存储的信息,计算相邻区域中的第一对象与第二对象之间的作用力;基于计算出的作用力对第一对象和第二对象进行建模。
Description
本申请要求于2014年8月26日提交到韩国知识产权局的第10-2014-0111467号韩国专利申请以及于2015年4月28日提交到韩国知识产权局的第10-2015-0059496号韩国专利申请的优先权权益,所述韩国专利申请的公开通过引用包含于此。
技术领域
以下描述的示例实施例涉及一种用于对对象进行建模的方法和设备。
背景技术
关于计算机图形(CG)领域中(尤其是视觉效果(VFX)领域中)的流体仿真,正在对数值求解流体流动进行研究。纳维-斯托克斯方程将流体视为微小粒子的总和,并表现粒子之间的相互作用和运动。当假定相对理想的情况时,纳维-斯托克斯方程可被改变为伯努利原理。为了基于纳维-斯托克斯方程进行流体建模的真实再现,将满足不可压缩条件。
此外,将保证对于人眼足够自然的可变形对象的仿真、实时模型响应和计算的精确性。因此,可使用考虑可变形对象的物理特性、边界条件和施加的外力的模型。
在CG领域中,可分开执行流体的仿真和可变形对象的仿真。然而,在一般环境中,流体和可变形对象共存并互相影响。
发明内容
通过提供一种对对象进行建模的方法来实现前述和/或其它方面,所述方法包括:检测使用粒子建模的第一对象与使用粒子建模的第二对象之间的相邻区域;针对相邻区域定义网格;基于存储在网格的网格点中的信息,计算相邻区域中的第一对象与第二对象之间的作用力;基于计算出的作用力对第一对象和第二对象进行建模。
所述定义的步骤可包括:提取相邻区域中的第一对象或第二对象的轮廓与网格的和所述轮廓相邻的网格点之间的距离值;将提取的距离值存储在网格点中。
所述计算的步骤可包括:验证在相邻区域中第一对象的粒子与第二对象的粒子之间是否发生碰撞;基于验证的结果计算第一对象的粒子与第二对象的粒子之间的作用力。
所述验证的步骤可包括:基于存储在与第一对象的粒子的位置相邻的网格点中的距离值验证是否发生碰撞。
所述验证的步骤还可包括:验证第一对象的粒子是否满足体积保持条件。
所述计算第一对象的粒子与第二对象的粒子之间的作用力的步骤可包括:当验证发生了碰撞时,检测在相邻区域中的第一对象的粒子和第二对象的粒子之中的第一对象的碰撞粒子;重新定义检测到的第一对象的碰撞粒子的位置;基于第一对象的碰撞粒子的重新定义的位置,计算响应于碰撞而施加到第二对象的作用力。
所述重新定义的步骤可包括:将检测到的第一对象的碰撞粒子的位置重新定义为第一对象的碰撞粒子不穿透第二对象的位置。
所述将检测到的第一对象的碰撞粒子的位置重新定义的步骤可包括:基于存储在与包括检测到的第一对象的碰撞粒子的单元对应的网格点中的梯度和距离值,计算第一对象的碰撞粒子的运动方向和最短运动距离,使得第一对象的碰撞粒子不会穿透第二对象;基于计算出的运动方向和计算出的最短运动距离,重新定位第一对象的碰撞粒子。
所述方法还可包括:基于存储在网格点中的距离值和计算出的最短运动距离计算第一对象的碰撞粒子的运动速度;将计算出的运动速度存储在与包括检测到的第一对象的碰撞粒子的单元对应的网格点中。
所述计算响应于碰撞而施加到第二对象的作用力的步骤可包括:计算估计的在第一对象的碰撞粒子的重新定义的位置由第二对象施加到第一对象的碰撞粒子的力;基于计算出的力计算响应于碰撞而施加到第二对象的作用力。
所述方法还可包括:将计算出的作用力存储在网格的与第一对象的碰撞粒子的重新定义的位置对应的网格点中。
第一对象和第二对象可以是同质的或异质的。
第一对象可对应于流体,第二对象可对应于可变形对象。
通过提供一种用于对对象进行建模的设备来实现前述和/或其它方面,所述设备包括:网格转换模块,被配置为检测使用粒子建模的第一对象与使用粒子建模的第二对象之间的相邻区域,并针对相邻区域定义网格;对象建模模块,被配置为基于存储在网格的网格点中的信息计算相邻区域中的第一对象与第二对象之间的作用力,并基于计算出的作用力对第一对象和第二对象进行建模。
网格转换模块可被配置为提取相邻区域中的第一对象或第二对象的轮廓与网格的和所述轮廓相邻的网格点之间的距离值,并将提取的距离值存储在网格的网格点中。
对象建模模块可包括:验证器,被配置为验证在相邻区域中第一对象的粒子与第二对象的粒子之间是否发生碰撞;检测器,被配置为基于验证的结果检测在相邻区域中的第一对象的粒子和第二对象的粒子之中的第一对象的碰撞粒子;重新定义器,被配置为重新定义检测到的第一对象的碰撞粒子的位置;计算器,被配置为基于第一对象的碰撞粒子的重新定义的位置,计算响应于碰撞而施加到第二对象的作用力。
重新定义器可被配置为:基于存储在与包括检测到的第一对象的碰撞粒子的单元对应的网格点中的梯度和距离值,计算第一对象的碰撞粒子的运动方向和最短运动距离,使得第一对象的碰撞粒子不会穿透第二对象,并且基于计算出的运动方向和计算出的最短运动距离,重新定位第一对象的碰撞粒子。
计算器可被配置为计算估计的在第一对象的碰撞粒子的重新定义的位置由第二对象施加到第一对象的碰撞粒子的力,基于计算出的力计算响应于碰撞而施加到第二对象的作用力,并将计算出的作用力存储在网格的与包括检测到的第一对象的碰撞粒子的单元对应的网格点中。
通过提供一种用于对对象进行建模的设备来实现前述和/或其它方面,所述设备包括:存储器,被配置为记录用于控制所述设备的操作的程序;至少一个处理器,被配置为执行所述程序。所述程序可被配置为检测使用粒子建模的第一对象与使用粒子建模的第二对象之间的相邻区域,针对相邻区域定义包括多个单元的网格,并基于相邻区域中的第一对象与第二对象之间的作用力来对第一对象和第二对象进行建模,可基于存储在网格的网格点中的信息计算所述作用力。
示例实施例的其它方面将在下面的描述中部分地阐明,并且从所述描述部分地将是清楚的,或者可通过本公开的实施被了解。
附图说明
从以下结合附图对示例实施例的描述,这些和/或其它方面将变得清楚且更容易理解,在附图中:
图1示出根据示例实施例的在对对象进行建模的方法中使用的相邻区域;
图2示出根据示例实施例的对对象进行建模的方法;
图3示出根据示例实施例的在对对象进行建模的方法中针对相邻区域定义网格的操作;
图4示出根据示例实施例的在对对象进行建模的方法中计算第一对象与第二对象之间的作用力的操作;
图5示出根据示例实施例的在对对象进行建模的方法中计算第一对象与第二对象之间的作用力的操作;
图6示出根据示例实施例的用于对对象进行建模的设备;
图7示出根据示例实施例的用于对对象进行建模的设备;
图8示出根据示例实施例的对对象进行建模的方法;
图9示出根据示例实施例的基于每个模块的操作顺序在用于对对象进行建模的设备中处理相邻区域和作用力的处理;
图10示出根据示例实施例的在用于对对象进行建模的设备中通过网格模块的中继处理流体与可变形对象之间的相互作用的处理;
图11示出根据示例实施例的用于对对象进行建模的设备的操作方法;
图12示出根据示例实施例的在用于对对象进行建模的设备中的流体建模模块的操作方法;
图13示出根据示例实施例的在用于对对象进行建模的设备中的可变形对象建模模块的操作方法;
图14示出根据示例实施例的在用于对对象进行建模的设备中的网格模块的操作方法。
具体实施方式
现在将详细描述实施例,实施例的示例在附图中被示出,其中,相似的标号始终表示相似的元件。以下通过参照附图来描述示例实施例以解释本公开。
虽然本公开可进行各种修改并具有若干实施例,但是特定实施例将在附图中被示出并被详细解释。然而,本公开不意图被限制,而意在各种修改、等同物和替代物也包含在权利要求的范围内。
这里使用的术语仅用于解释特定实施例,因此不意图进行限制。单数表达包括复数表达,除了这两种表达在上下文彼此不同之外。这里,术语“包括”或“具有”意图指示存在说明书中公开的特征、数字、步骤、操作、组件、元件或者它们的组合。相反,术语“包括”或“具有”应被理解为不预先排除存在一个或更多个其它特征、数字、步骤、操作、组件、元件或它们的组合,或者另外的可能性。
除非被不同地定义,否则这里使用的所有术语(包括技术术语或科学术语)具有与和本公开的领域相关的技术领域的技术人员通常理解的含义相同的含义。与在通用的字典中定义的术语相同的术语应该被理解为术语具有与现有技术的上下文含义相同的含义。并且,只要术语没有在本公开中被明确定义,术语就不应被解释为理想化或过于正式的含义。
在下文中,将参照附图更详细地解释特定实施例。相同的组件或彼此对应的组件将被提供相同的标号,并将省略对它们的详细解释。当确定详细描述与会使本公开的目的在描述中不必要地模糊的现有已知功能或配置相关时,将省略这样的详细描述。
图1示出根据示例实施例的在对对象进行建模的方法中使用的相邻区域。
参照图1,示出漂浮在流体130(诸如,水和油)上的可变形对象110(例如,橡皮鸭)。可通过粒子分别对可变形对象110和流体130进行建模。在下文中,可变形对象110可包括可变形对象粒子,流体130可包括流体粒子。可变形对象110可包括刚体和软体。包括可变形对象110和流体130的轮廓的预定区域将被称为“相邻区域”或“相互作用区域”。
在示例实施例中,当可变形对象110和流体130共存时,通过针对相邻区域定义网格150并基于网格150来应用物理定律,可准确地反映可变形对象110与流体130之间的相互作用。网格150可以以具有一致连接关系的网状物形式的数据结构被提供,并且可以是可变形对象110和流体130相互交换物理量的路径。网格150可包括多个单元151。可变形对象110的水平集信息可在网格150的网格点被存储为标量值。水平集信息可指具有标记的距离值,并用于指示可变形对象110在网格150内的位置。水平集信息可指示可变形对象110的网格点基于可变形对象110的轮廓位于网格150之外还是网格150之内。
例如,当可变形对象110与流体130碰撞时,可变形对象110的形状可因与流体130的碰撞而被挤压,或者可变形对象110的速度可减小,并且在流体130上可发生喷溅。在该示例中,流体130可在避开由可变形对象110占有的空间的同时流动。网格150可包括在可变形对象110与流体130之间发生相互作用的所有区域,例如,可变形对象110与流体130之间的碰撞区域、在流体130上可发生喷溅的区域以及在空间中被挤压的可变形对象110重新占有的区域。上述相互作用可同样适用于异质对象(例如,流体和可变形对象)和同质对象(例如,水和油)。在示例实施例中,通过针对包括基于粒子建模的对象之间的轮廓的相邻区域使用网格150计算作用力,可精确地保持相互作用的动量。
图2示出根据示例实施例的对对象进行建模的方法。
参照图2,在操作210,在下文中被称为“建模设备”的用于对对象进行建模的设备可检测使用粒子建模的第一对象与使用粒子建模的第二对象之间的相邻区域。当基于粒子对对象进行建模时,建模设备可搜索单个粒子的相邻粒子。当找到的相邻粒子与具有不同物理量的不同对象对应时,建模设备可将包括该单个粒子和与不同对象对应的粒子的区域定义为相邻区域。建模设备可检测相邻区域。
在操作220,建模设备可针对检测到的相邻区域定义网格。例如,包括在检测到的相邻区域中的对象粒子可被划分为包括多个单元的网格。在操作220,建模设备可提取相邻区域中的第一对象或第二对象的轮廓与网格的和所述轮廓相邻的网格点之间的垂直距离值。建模设备可将提取的距离值存储在网格点。存储在网格点的距离值可被称为水平集信息。将参照图3详细描述定义网格的方法。
在操作230,建模设备可基于存储在网格的网格点的信息计算相邻区域中的第一对象与第二对象之间的作用力。在操作230,建模设备可在相邻区域中以网格的单元为单位验证第一对象的粒子与第二对象的粒子之间是否发生碰撞。建模设备可基于验证的结果计算第一对象的粒子与第二对象的粒子之间的作用力。这里,第一对象可以是流体,第二对象可以是可变形对象。此外,第一对象和第二对象可以是同质的或异质的。将参照图4和图5详细描述计算第一对象与第二对象之间的作用力的方法。
在操作240,建模设备可基于计算出的作用力对第一对象和第二对象进行建模。建模设备可基于计算出的作用力更精确地修改作为粒子建模的第一对象和第二对象的形状或运动。
图3示出根据示例实施例的在对对象进行建模的方法中针对相邻区域定义网格的操作。
参照图3,建模设备可在操作310检测使用粒子建模的可变形对象301与使用粒子建模的流体303之间的相邻区域305,并可在操作330针对相邻区域305定义网格307,或执行用于以网格结构表示相邻区域305的网格化。通过网格化,例如,在二维(2D)的情况下,四个粒子可被包括在单个单元中,在三维(3D)的情况下,八个粒子可被包括在单个单元中。
在操作350,与各个网格点309和可变形对象301的最接近的轮廓之间的距离值对应的水平集信息可被存储在网格307的网格点309中。例如,可变形对象301的轮廓与网格点311之间的垂直距离值d1可被存储在网格点311中,可变形对象301的轮廓与网格点313之间的垂直距离值d2可被存储在网格点313中。当存储在网格点309之一中的距离值对应于正(+)值时,距离值可指示对应的网格点被布置在可变形对象301的外部。当存储在网格点309之一中的距离值对应于负(-)值时,距离值可指示对应的网格点被布置在可变形对象301的内部。根据建模方法,正(+)值和负(-)值可被相反地设置。建模设备可根据需要基于水平集信息计算梯度,并将水平集信息转换为几何法线信息。
与水平集信息分开,由可变形对象施加到流体303的粒子的作用力可通过线性插值被计算并被存储在网格307的各个网格点309中。存储的作用力可在将来用于对可变形对象301的粒子进行建模。此外,流体303的粒子的速度值可被存储在各个网格点309中,存储的速度值可用于计算施加到流体303的粒子的拖曳力。
通过参照图3描述的处理,建模设备可验证网格点与对象的轮廓之间的距离,以及网格点是被布置在轮廓的内部还是轮廓的外部。
图4示出根据示例实施例的在对对象进行建模的方法中计算第一对象与第二对象之间的作用力的操作。
参照图4,在操作410,根据示例实施例的建模设备可验证在相邻区域中第一对象的粒子与第二对象的粒子之间是否发生碰撞。在操作410,建模设备可基于存储在与第一对象的粒子的位置相邻的网格点中的距离值验证是否发生碰撞。在该示例中,建模设备可以以网格的单元为单位验证是否发生碰撞。例如,当第一对象(例如,流体)的粒子和第二对象(例如,可变形对象)的粒子在同一位置重叠时,也就是说,当流体粒子被布置在流体粒子穿透可变形对象粒子的位置时,可确定在粒子之间已发生碰撞。
在操作410,建模设备还可验证第一对象的粒子是否满足体积保持条件。例如,当第一对象对应于流体并且第二对象对应于可变形对象时,虽然响应于碰撞在第一对象和第二对象之间发生改变,但是可保持与第一对象对应的流体的总体积。因此,在示例实施例中,除了存储在网格点的距离值之外,当发生碰撞时还可考虑流体的总体积是否与发生碰撞之前保持相同。
当在操作410验证没有发生碰撞时,建模设备可跳过执行处理碰撞的操作420至操作440。
相反地,当在操作410验证发生碰撞时,在操作420,建模设备可检测在相邻区域中的第一对象的粒子和第二对象的粒子之中的第一对象的碰撞粒子。在该示例中,可检测单个碰撞粒子或多个碰撞粒子。
在操作430,建模设备可重新定义检测到的第一对象的碰撞粒子的位置。建模设备可将检测到的第一对象的碰撞粒子的位置重新定义为第一对象的碰撞粒子不穿透第二对象的粒子的位置。例如,当第一对象对应于流体,并且第二对象对应于可变形对象时,流体粒子可在流体与可变形对象之间发生碰撞时通过避开可变形对象粒子而不是穿透可变形对象粒子来流动。因此,当在流体粒子与可变形对象粒子之间发生碰撞时,建模设备可执行建模,使得流体粒子可被布置在流体粒子不穿透可变形对象粒子的位置。
在操作430,建模设备可基于存储在与包括检测到的第一对象的碰撞粒子的单元对应的网格点中的梯度和距离值,计算第一对象的碰撞粒子的运动方向和最短运动距离,使得第一对象的碰撞粒子可不穿透第二对象。建模设备可基于计算出的运动方向和计算出的最短运动距离来对第一对象的碰撞粒子进行重新定位。在该示例中,建模设备可基于存储在网格点中的距离值和计算出的最短运动距离来计算第一对象的碰撞粒子的运动速度,并将计算出的运动速度存储在与包括检测到的第一对象的碰撞粒子的单元对应的网格点中。
在操作440,建模设备可基于第一对象的碰撞粒子的重新定义的位置,计算响应于碰撞而施加到第二对象的作用力。在操作440,建模设备可计算估计的在第一对象的碰撞粒子的重新定义的位置由第二对象施加到第一对象的碰撞粒子的力,并基于计算出的力计算响应于碰撞而施加到第二对象的作用力。建模设备可将计算出的作用力存储在网格的与第一对象的碰撞粒子的重新定义的位置对应的网格点中。
图5示出根据示例实施例的在对对象进行建模的方法中计算第一对象与第二对象之间的作用力的操作。
参照图5,在操作510,在每个网格点指示诸如+和-的标记。建模设备可通过对存储在网格点中的值进行插值来计算(例如,估计)第一对象的粒子(例如,流体粒子的位置)与可变形对象的轮廓之间的距离值。计算出的距离值的标记“-”可指示碰撞状态,计算出的距离值的标记“+”可指示非碰撞状态。如上所述,通过插值执行计算以验证存储在网格点中的距离值在流体粒子的位置具有正值还是负值的处理可被称为“网格值查询”。
建模设备可基于存储在每个网格点中的标记值验证在第一对象(例如,流体)与第二对象(例如,可变形对象)之间是否发生碰撞。建模设备可对在每个流体粒子的位置附近的四个网格点中存储的距离值进行采样。建模设备可对存储在每个流体粒子附近的网格点中的值执行线性插值以验证流体粒子与可变形对象的轮廓上的粒子之间的距离。当采样的距离值对应于例如+0.5纳米(nm)时,可指示流体粒子的中心距可变形对象的轮廓0.5nm。当流体粒子的半径对应于0.5nm时,流体粒子可与可变形对象的轮廓接触。当流体粒子的半径对应于1.0nm时,流体粒子可与可变形对象碰撞,例如,流体粒子可被布置在流体粒子穿透可变形对象粒子的位置。在该示例中,建模设备可将对应的流体粒子的位置重新定义为流体粒子不穿透可变形对象粒子的位置,从而处理流体粒子的碰撞。
例如,如操作530中所示,当检测到响应于可变形对象粒子与流体粒子之间的碰撞而布置在与可变形对象的内部对应的第一位置531的流体粒子时,建模设备可将该流体粒子从第一位置531重新定位到流体粒子不穿透可变形对象粒子的第二位置533。在该示例中,建模设备可基于存储在与包括检测到的流体粒子的单元对应的网格点中的梯度和距离值,计算流体粒子的运动方向和最短运动距离,使得流体粒子不会穿透可变形对象粒子。
建模设备可基于计算出的运动方向和计算出的最短运动距离将流体粒子重新定位到流体粒子没有发生碰撞的位置。例如,建模设备可通过沿存储在与包括流体粒子的单元对应的网格点中的距离值从负(-)值改变为正(+)值的倾斜方向(在该示例中,沿从右到左的水平方向以及从上到下的垂直方向)使流体粒子移动最短距离,防止流体粒子与可变形对象粒子之间的碰撞。
建模设备可通过将与施加到流体粒子的冲量对称的力传递到可变形对象,来将估计的响应于可变形对象与流体之间的碰撞而施加到流体粒子的力反映为针对可变形对象的反作用力。在操作550,当流体粒子被重新定位到第二位置533时,基于作用与反作用定律,与估计的将被施加到流体粒子的力相同大小的力可沿区域551中所示的对称方向被施加到可变形对象。在该示例中,当提供了流体粒子的初始位置、流体粒子的之后位置和运动速度时,可使用一般物理公式来计算估计的将被施加到流体粒子的力。
可执行建模以使可变形对象能够通过施加到可变形对象的反作用力而漂浮在流体粒子上。建模设备可将施加到可变形对象的作用力存储在与流体粒子的重新定义的位置533对应的单元的网格点中。可基于从对应的网格点至对应的流体粒子的距离,将施加到可变形对象的作用力不同地存储在每个网格点中。例如,最小值可被分配给布置在距流体粒子距离远的网格点573,最大值可被分配给布置在距流体粒子距离近的网格点572。此外,大于分配给网格点573的值且小于分配给网格点572的值的值可被分配给网格点571和网格点574。可使用箭头的长度或尺寸来表示分配给每个网格点的作用力。在被施加最大作用力的网格点572,箭头的长度或尺寸可被表示为相对大,在被施加最小作用力的网格点573,箭头的长度或尺寸可被表示为相对小。
建模设备可使用上述方法将施加到可变形对象的作用力存储在包括对应的流体粒子的单元的网格点中。建模设备可通过操作510和操作530对流体与可变形对象之间的向外碰撞进行建模,并可通过操作550对施加在流体与可变形对象之间的作用力进行建模。
图6示出根据示例实施例的用于对对象进行建模的设备600。
参照图6,建模设备600可包括网格转换模块610、对象建模模块630和处理器650。
网格转换模块610可检测使用粒子建模的第一对象与使用粒子建模的第二对象之间的相邻区域,并针对相邻区域定义网格。
网格转换模块610可提取相邻区域中的第一对象或第二对象的轮廓与网格的和所述轮廓相邻的网格点之间的距离值,并将提取的距离值存储在网格的网格点中。
对象建模模块630可基于存储在网格的网格点中的信息计算相邻区域中的第一对象与第二对象之间的作用力,并基于计算出的作用力对第一对象和第二对象进行建模。对象建模模块630可包括验证器631、检测器633、重新定义器635和计算器637。验证器631可验证在相邻区域中第一对象的粒子与第二对象的粒子之间是否发生碰撞。检测器633可基于验证的结果,检测在相邻区域中的第一对象的粒子和第二对象的粒子之中的第一对象的碰撞粒子。重新定义器635可重新定义检测到的第一对象的碰撞粒子的位置。重新定义器635可基于存储在与包括检测到的第一对象的碰撞粒子的单元对应的网格点中存储的梯度和距离值,计算第一对象的碰撞粒子的运动方向和最短运动距离,使得第一对象的碰撞粒子不会穿透第二对象。重新定义器635可基于计算出的运动方向和计算出的最短运动距离,对第一对象的碰撞粒子进行重新定位。
计算器637可基于第一对象的碰撞粒子的重新定义的位置,计算响应于碰撞而由第一对象施加到第二对象的作用力。计算器637可计算估计的在第一对象的碰撞粒子的重新定义的位置由第二对象施加到第一对象的碰撞粒子的力,并基于计算出的力计算响应于碰撞而施加到第二对象的作用力。计算器637可将计算出的作用力存储在网格的与包括第一对象的碰撞粒子的单元对应的网格点中。
处理器650可控制网格转换模块610和对象建模模块630。在示例实施例中,对象建模模块630可被配置为被划分为用于对可变形对象进行建模的模块和用于对流体进行建模的模块。将参照图9对此进行描述。
图7示出根据示例实施例的用于对对象进行建模的设备700。
参照图7,建模设备700可包括存储器710、处理器730和通信单元750。
存储器710可记录用于控制建模设备700的操作的程序。
处理器730可执行由存储器710记录的程序。可设置至少一个处理器730。所述程序可检测使用粒子建模的第一对象与使用粒子建模的第二对象之间的相邻区域,并针对相邻区域定义包括多个单元的网格。所述程序可基于相邻区域中的第一对象与第二对象之间的作用力对第一对象和第二对象进行建模。可基于存储在网格的网格点中的信息计算作用力。
通信单元750可发送和接收用于建模设备700的操作的信息。
图8示出根据示例实施例的对对象进行建模的方法。
参照图8,示出了在流体的粒子和可变形对象的粒子分布的情况下,通过针对流体与可变形对象之间的相互作用区域的操作获得相互作用的粒子的分布的处理。可通过以下处理执行针对相互作用区域的操作。
建模设备可在操作810检测流体与可变形对象之间的相邻区域,并在操作830针对相邻区域定义网格。在操作850,建模设备可基于存储在网格的网格点中的信息处理相邻区域中的流体与可变形对象之间的相互作用力。
可如下执行处理流体与可变形对象之间的相互作用力的处理。当在第一对象的粒子与第二对象的粒子之间发生碰撞时,在操作851,建模设备可例如使用通过图5的操作510和530描述的方法,通过将第一对象的粒子移动到第一对象的粒子不穿透第二对象的位置来处理碰撞。
建模设备可在操作853处理施加到流体的作用力,并在操作855基于针对流体的处理结果处理施加到可变形对象的作用力。建模设备可使用流体建模模块处理施加到流体的作用力,并使用可变形对象建模模块处理施加到可变形对象的作用力。
图9示出根据示例实施例的基于每个模块的操作顺序在用于对对象进行建模的设备中处理相邻区域和作用力的处理。
参照图9,建模设备可包括时间步长选择器910、网格模块920、可变形对象建模模块930和流体建模模块940。
时间步长选择器910可选择用于对流体粒子与可变形对象粒子之间的相互作用进行建模的时间步长。例如,当建模将被执行的时间段“1”对应于“1”秒时,建模设备可以以“0.5”秒或“0.3”秒为单位对可变形对象与流体之间的相互作用渐进地进行建模,而不是在“1”秒内对可变形对象与流体之间的相互作用进行一次建模。这里,时间步长可与确定时间段“1”将被划分成的步数的处理对应,类似于以“0.5”秒为单位或以“0.3”秒为单位来划分时间段“1”。可由建模设备的用户或时间步长选择器910将时间步长选择为适当的值。
时间步长选择器910可针对可变形对象建模模块930和流体建模模块940分别设置时间步长。建模设备可通过时间步长选择器910选择用于对流体粒子或可变形对象粒子的运动进行建模的时间。
网格模块920可基于由时间步长选择器910选择的时间步长从流体建模模块940接收信息。在该示例中,接收的信息可包括例如施加到流体粒子的作用力和流体粒子的最终速度。施加到流体粒子的作用力还可被称为约束力。
网格模块920可处理从流体建模模块940接收的信息,并将处理的信息提供给可变形对象建模模块930。由网格模块920处理并被提供给可变形对象建模模块930的信息可以是可变形对象与包括在流体场中的流体粒子之间的相互作用力。相互作用力可指流体粒子对可变形对象的作用力,例如,流体粒子对可变形对象的反作用力和拖曳力。
可变形对象建模模块930可以将从网格模块920接收的相互作用力反映在关于可变形对象的形状模型中。可变形对象建模模块930可从反映相互作用力的形状模型产生可变形对象的形状信息。可变形对象建模模块930可将可变形对象的形状信息提供给网格模块920。
网格模块920可从可变形对象的形状信息验证关于可变形对象的轮廓的信息。网格模块920可基于形状信息计算流体粒子对可变形对象的作用力。网格模块920可将形状信息发送到流体建模模块940。
流体建模模块940可基于形状信息响应于可变形对象与流体粒子之间的碰撞计算流体粒子的最终速度和施加到流体粒子的约束力。流体建模模块940可再次将施加到流体粒子的约束力和流体粒子的最终速度提供给网格模块920。
在示例实施例中,通过由对方建模模块(例如,在流体的情况下的可变形对象建模模块930,以及在可变形对象的情况下的流体建模模块940)反馈存储在网格模块920中的信息并将反馈信息反映在其自身粒子的建模中,可实时处理可变形对象与流体之间的相互作用。
通过处理可变形对象与流体之间的相互作用,可实现需要高质量真实图像再现的影片中的特殊效果以及需要实时处理的游戏或移动用户界面(UI)领域中的流体和与流体混合的可变形对象的真实建模。
图10示出根据示例实施例的在用于对对象进行建模的设备中通过网格模块的中继处理流体与可变形对象之间的相互作用的处理。
参照图10,示出流体建模模块1010、网格模块1030和可变形对象建模模块1050。
流体建模模块1010可在建模步骤处理外力(例如,重力),对流体场的粘度进行建模,并对流体粒子的位置进行更新。流体建模模块1010可通过验证包括在流体场中的每个流体粒子是否与可变形对象碰撞以及流体粒子的体积或密度是否满足体积保持条件来对流体粒子进行建模。例如,可假设包括在流体场中的每个流体粒子与可变形对象碰撞并且在碰撞时流体粒子的体积满足体积保持条件。流体建模模块1010可计算施加到流体粒子的约束力和流体粒子的最终速度。流体建模模块1010可通过将在碰撞和体积保持条件不存在时施加到流体粒子的力与在碰撞和体积保持条件存在时施加到流体粒子的力进行比较,来计算施加到流体粒子的约束力。流体建模模块1010可将关于计算出的流体粒子的约束力和最终速度的信息提供给网格模块1030。
网格模块1030可帮助流体建模模块1010和可变形对象建模模块1050隐含地识别对方建模模块的存在。网格模块1030可将流体粒子的作用力提供给可变形对象建模模块1050,并将可变形对象的形状信息提供给流体建模模块1010。流体粒子的作用力可包括流体粒子对可变形对象的反作用力和拖曳力。当流体粒子和可变形对象在预定距离内彼此相邻时,网格模块1030可基于流体粒子的约束力和最终速度计算作用力。
网格模块1030可通过将可变形对象的形状信息发送到流体粒子并将施加到流体的相互作用和阻力发送到可变形对象的形状模型,使流体建模模块1010和可变形对象建模模块1050中的每个能够获得物理上正确的相互作用结果。
网格模块1030可对流体与可变形对象彼此相邻的至少一个区域执行操作以正确地传递相互作用。
与流体类似,可变形对象建模模块1050可对重力和弹力进行建模,并通过参考网格模块1030,附加地反映在相互作用区域中产生的力。可变形对象建模模块1050可通过将作用力施加到距离场中的形状模型来确定形状模型的最终位置。在该示例中,可通过考虑流体粒子对可变形对象的作用力来获得作用力,并可在受作用力的可变形对象中反映流体粒子的摩擦力和阻力。可变形对象建模模块1050可考虑在形状模型的最终位置的可变形对象与流体粒子之间的碰撞来产生可变形对象的形状信息,使得不包括流体粒子的可变形对象的形状模型和阻碍可满足体积保持条件。可变形对象建模模块1050可产生可变形对象的形状信息,使得可变形对象的形状模型和可变形对象的阻碍可满足体积保持条件。在该示例中,流体粒子对可变形对象的作用力可被反映在可变形对象的形状模型中。可变形对象建模模块1050可将形状信息例如作为使用具有标记的距离值指示在网格中自身位置的水平集信息发送到网格模块1030。
在示例实施例中,流体建模模块1010和可变形对象建模模块1050可分别被配置为分别实现对可变形对象的粒子和流体的粒子进行建模所需的约束条件,例如体积保持。
此外,流体建模模块1010和可变形对象建模模块1050可独立地执行各自的建模,并以整体方式通过网格模块1030处理可变形对象与流体之间的相互作用区域。
图11示出根据示例实施例的用于对对象进行建模的设备的操作方法。
参照图11,在操作1110,建模设备可验证可变形对象粒子与包括在流体场中的流体粒子之间是否发生碰撞以及流体粒子是否满足与第一约束条件对应的体积保持条件。
在操作1120,建模设备可基于验证的结果计算施加到流体粒子的约束力和流体粒子的最终速度。当流体粒子与可变形对象粒子碰撞时,建模设备可将流体粒子重新定位到流体粒子不穿透可变形对象的最终位置。建模设备可执行建模,使得流体粒子可在最终位置满足体积保持条件,并且建模设备可计算施加到流体粒子的约束力和流体粒子的最终速度。此外,建模设备可基于形状信息计算流体粒子的约束力和最终速度。
在操作1130,建模设备可基于计算出的约束力和计算出的最终速度计算流体粒子对可变形对象的作用力。作用力可包括反作用力和拖曳力。在操作1130,建模设备可基于约束力计算流体粒子对可变形对象的反作用力。在该示例中,可基于形状信息计算反作用力。建模设备可基于在约束力被反映的流体粒子的最终位置的最终速度来计算流体粒子对可变形对象的拖曳力。
此外,建模设备可验证流体粒子与可变形对象粒子是否在预设距离内彼此相邻,并基于验证的结果计算作用力。
在操作1140,建模设备可产生可变形对象的形状信息,使得不包括流体粒子的可变形对象的形状模型和可变形对象的阻碍可满足体积保持条件。流体粒子对可变形对象的作用力可被反映在可变形对象的形状模型中。
在操作1140,建模设备可将作用力施加到形状模型,并基于施加的结果确定形状模型的最终位置。建模设备可产生可变形对象的形状信息,使得可变形对象的形状模型和阻碍可在形状模型的最终位置满足体积保持条件。
图12示出根据示例实施例的在用于对对象进行建模的设备中的流体建模模块的操作方法。
参照图12,在操作1210,流体建模模块可通过反映流体场的粘度和影响流体场中的流体粒子的外力来计算流体粒子的位置。在操作1210,流体建模模块可计算流体粒子之间的动量方程。例如,流体建模模块可基于第一粒子附近的第二粒子计算关于第一粒子的动量方程,并针对包括第一粒子和第二粒子的所有粒子计算密度、外力和粘度。流体建模模块可基于计算动量方程的结果针对第一粒子和第二粒子中的每个计算满足不可压缩条件的变化。不可压缩条件可指流体的内体积的不变条件,并可通过流体与可变形对象之间的相互作用以及对在预定流体场中施加了粒子速度的粒子中的流入流出率的控制来实现轮廓的高精度建模。流体建模模块可获得流体场中的各个流体粒子的发散度,并通过将发散度控制为“0”来满足不可压缩条件。流体建模模块可基于计算出的变量来计算流体粒子的位置。
在操作1210之前,流体建模模块可对将被用于对流体进行建模的粒子进行初始化。在初始化处理期间,建模设备可对关于与预定空间或区域中的流体对应的粒子的质量、密度、速度和位置的信息进行初始化。
在操作1220,流体建模模块可验证在可变形对象与包括在流体场中的流体粒子之间是否发生碰撞。
当在操作1220验证发生了碰撞时,在操作1230,流体建模模块可将流体粒子重新定位到流体粒子不穿透可变形对象的最终位置。在操作1240,流体建模模块可执行建模,使得流体粒子可在最终位置满足第一约束条件,例如,体积保持条件。流体建模模块可在操作1250计算响应于碰撞而施加到流体粒子的约束力,并在操作1260计算在最终位置处流体粒子的最终速度。流体建模模块可基于从网格模块接收的可变形对象的形状信息计算流体粒子的约束力和最终速度。在操作1270,流体建模模块可将关于施加到流体粒子的约束力和流体粒子的最终速度的信息提供给网格模块。
当在操作1220验证没有发生碰撞时,流体建模模块可终止操作,或将在操作1210计算出的流体粒子的位置提供给网格模块。
图13示出根据示例实施例的在用于对对象进行建模的设备中的可变形对象建模模块的操作方法。
参照图13,在操作1310,可变形对象建模模块可通过反映外力,基于可变形对象的粒子来对形状模型进行建模。在操作1320,可变形对象建模模块可将流体粒子对可变形对象的作用力施加到建模的形状模型。在操作1330,可变形对象建模模块可基于施加的结果确定形状模型的最终位置。
在操作1340,可变形对象建模模块可验证在可变形对象与流体粒子之间是否发生碰撞。
当在操作1340验证发生了碰撞时,在操作1350,可变形对象建模模块可执行建模使得可变形对象的形状模型和阻碍可在形状模型的最终位置满足第二约束条件。在操作1360,可变形对象建模模块可产生关于在操作1350建模的可变形对象的形状模型的形状信息。在操作1370,可变形对象建模模块可将产生的形状信息发送到网格模块。
当在操作1340验证没有发生碰撞时,可变形对象建模模块可在操作1360产生关于形状模型的形状信息,并在操作1370将产生的形状信息发送到网格模块。
图14示出根据示例实施例的在用于对对象进行建模的设备中的网格模块的操作方法。
参照图14,在操作1410,网格模块可从可变形对象建模模块接收可变形对象的形状信息。在操作1420,网格模块可将可变形对象的形状信息提供给流体建模模块。在操作1430,网格模块可从流体建模模块接收施加到流体粒子的约束力和流体粒子的最终速度。在操作1440,网格模块可基于可变形对象的形状信息和施加到流体粒子的约束力来计算流体粒子对可变形对象的反作用力。在操作1450,网格模块可基于在流体粒子的最终位置的最终速度,计算流体粒子对可变形对象的拖曳力。在操作1460,网格模块可将包括反作用力和拖曳力的流体粒子的作用力提供给可变形对象建模模块。
可使用硬件组件和软件组件来实现这里描述的单元。例如,硬件组件可包括麦克风、放大器、带通滤波器、音频数字转换器和处理装置。可使用一个或更多个通用或专用计算机(例如,处理器、控制器和算术逻辑单元、数字信号处理器、微型计算机、现场可编程阵列、可编程逻辑单元、微处理器或能够以限定的方式响应和执行指令的任何其它装置)来实现处理装置。处理装置可运行操作系统(OS)和运行在OS上的一个或更多个软件应用。处理装置还可响应于软件的执行来访问、存储、操作、处理和创建数据。为了简单的目的,处理装置的描述用作单数;然而,本领域的技术人员将理解,处理装置可包括多个处理元件和多种类型的处理元件。例如,处理装置可包括多个处理器或者处理器和控制器。此外,不同的处理配置(诸如并行处理器)是可行的。
软件可包括用于独立地或共同地指示或配置处理装置按照需要进行操作的计算机程序、代码段、指令或它们的一些组合。可在任何类型的机器、组件、物理设备或虚拟设备、计算机存储介质或装置中,或以能够将指令或数据提供给处理装置或者被处理装置解释的传播信号波,来永久地或暂时地实施软件和数据。软件还可被分布在联网的计算机系统中,从而以分布式方式存储和执行软件。可通过一个或更多个非暂时性计算机可读记录介质来存储软件和数据。非暂时性计算机可读记录介质可包括可存储之后可由计算机系统或处理装置读取的数据的任何数据存储装置。非暂时性计算机可读记录介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、CD-ROM、磁带、软盘、光学数据存储装置。此外,基于并使用这里提供的附图的流程图和框图以及它们的相应描述,实现这里公开的示例的功能程序、代码和代码段可容易地被示例所属领域的程序员解释。
这里描述的方法可被记录在包括程序指令的非暂时性计算机可读介质中,以实现通过计算机实施的各种操作。所述介质还可包括单独的数据文件、数据结构等或与程序指令组合的数据文件、数据结构等。记录在所述介质上的程序指令可以是为了这里实施的目的而专门设计和构造的程序指令,或者它们可以是对计算机软件领域的技术人员公知和可用的程序指令。非暂时性计算机可读介质的示例包括:磁介质(诸如硬盘、软盘和磁带);光学介质(诸如CD ROM盘和DVD);磁光介质(诸如光盘);和专门配置为存储和执行程序指令的硬件装置(诸如只读存储器(ROM)、随机存取存储器(RAM)、闪存等)。程序指令的示例包括诸如由编译器产生的机器代码和包含可由计算机使用解释器执行的高级代码的文件两者。上述装置可被配置为用作用于执行上述示例实施例的操作的一个或更多个软件模块,反之亦然。
以上已描述了一些示例。然而,应理解,可进行各种修改。例如,如果以不同的顺序执行描述的技术,和/或如果以不同的方式组合和/或由其它组件或它们的等同物代替或补充在所描述的系统、架构、装置或电路中的组件,则可实现合适的结果。因此,其它实施方式在权利要求的范围内。
Claims (17)
1.一种使用计算机图形学对流体对象进行建模的方法,所述方法包括:
检测使用粒子建模的流体对象与使用粒子建模的可变形对象之间的相邻区域;
针对相邻区域定义网格;
基于存储在网格的网格点中的信息,计算相邻区域中的流体对象与可变形对象之间的作用力;
基于计算出的作用力对流体对象和可变形对象进行建模,
其中,所述计算的步骤包括:验证在相邻区域中流体对象的粒子与可变形对象的粒子之间是否发生碰撞;基于验证的结果计算流体对象的粒子与可变形对象的粒子之间的作用力。
2.如权利要求1所述的方法,其中,所述定义的步骤包括:
提取相邻区域中的流体对象或可变形对象的轮廓与网格的和所述轮廓相邻的网格点之间的距离值;
将提取的距离值存储在网格点中。
3.如权利要求1所述的方法,其中,所述验证的步骤包括:基于存储在与流体对象的粒子的位置相邻的网格点中的距离值验证是否发生碰撞。
4.如权利要求3所述的方法,其中,所述验证的步骤还包括:验证流体对象的粒子是否满足体积保持条件。
5.如权利要求1所述的方法,其中,所述计算流体对象的粒子与可变形对象的粒子之间的作用力的步骤包括:
当验证发生了碰撞时,检测在相邻区域中的流体对象的粒子和可变形对象的粒子之中的流体对象的碰撞粒子;
重新定义检测到的流体对象的碰撞粒子的位置;
基于流体对象的碰撞粒子的重新定义的位置,计算响应于碰撞而施加到可变形对象的作用力。
6.如权利要求5所述的方法,其中,所述重新定义的步骤包括:将检测到的流体对象的碰撞粒子的位置重新定义为流体对象的碰撞粒子不穿透可变形对象的位置。
7.如权利要求6所述的方法,其中,所述将检测到的流体对象的碰撞粒子的位置重新定义的步骤包括:
基于存储在与包括检测到的流体对象的碰撞粒子的单元对应的网格点中的梯度和距离值,计算流体对象的碰撞粒子的运动方向和最短运动距离,使得流体对象的碰撞粒子不穿透可变形对象;
基于计算出的运动方向和计算出的最短运动距离,重新定位流体对象的碰撞粒子。
8.如权利要求7所述的方法,还包括:
基于存储在网格点中的距离值和计算出的最短运动距离计算流体对象的碰撞粒子的运动速度;
将计算出的运动速度存储在与包括检测到的流体对象的碰撞粒子的单元对应的网格点中。
9.如权利要求5所述的方法,其中,所述计算响应于碰撞而施加到可变形对象的作用力的步骤包括:
计算估计的在流体对象的碰撞粒子的重新定义的位置由可变形对象施加到流体对象的碰撞粒子的力;
基于计算出的力计算响应于碰撞而施加到可变形对象的作用力。
10.如权利要求9所述的方法,还包括:
将计算出的作用力存储在网格的与流体对象的碰撞粒子的重新定义的位置对应的网格点中。
11.如权利要求1所述的方法,其中,流体对象和可变形对象是异质的。
12.一种非暂时性计算机可读介质,所述非暂时性计算机可读介质包括用于指示计算机执行权利要求1所述的方法的程序。
13.一种用于使用计算机图形学对流体对象进行建模的设备,所述设备包括:
网格转换模块,被配置为检测使用粒子建模的流体对象与使用粒子建模的可变形对象之间的相邻区域,并针对相邻区域定义网格;
对象建模模块,被配置为基于存储在网格的网格点中的信息计算相邻区域中的流体对象与可变形对象之间的作用力,并基于计算出的作用力对流体对象和可变形对象进行建模,
其中,对象建模模块包括:
验证器,被配置为验证在相邻区域中流体对象的粒子与可变形对象的粒子之间是否发生碰撞;
检测器,被配置为基于验证的结果检测在相邻区域中的流体对象的粒子和可变形对象的粒子之中的流体对象的碰撞粒子;
重新定义器,被配置为重新定义检测到的流体对象的碰撞粒子的位置;
计算器,被配置为基于流体对象的碰撞粒子的重新定义的位置,计算响应于碰撞而施加到可变形对象的作用力。
14.如权利要求13所述的设备,其中,网格转换模块被配置为提取相邻区域中的流体对象或可变形对象的轮廓与网格的和所述轮廓相邻的网格点之间的距离值,并将提取的距离值存储在网格的网格点中。
15.如权利要求13所述的设备,其中,重新定义器被配置为:基于存储在与包括检测到的流体对象的碰撞粒子的单元对应的网格点中的梯度和距离值,计算流体对象的碰撞粒子的运动方向和最短运动距离,使得流体对象的碰撞粒子不穿透可变形对象,并且基于计算出的运动方向和计算出的最短运动距离,重新定位流体对象的碰撞粒子。
16.如权利要求13所述的设备,其中,计算器被配置为计算估计的在流体对象的碰撞粒子的重新定义的位置由可变形对象施加到流体对象的碰撞粒子的力,基于计算出的力计算响应于碰撞而施加到可变形对象的作用力,并将计算出的作用力存储在网格的与包括检测到的流体对象的碰撞粒子的单元对应的网格点中。
17.一种用于使用计算机图形学对流体对象进行建模的设备,所述设备包括:
存储器,被配置为记录用于控制所述设备的操作的程序;
至少一个处理器,被配置为执行所述程序,
其中,所述程序被配置为检测使用粒子建模的流体对象与使用粒子建模的可变形对象之间的相邻区域,针对相邻区域定义包括多个单元的网格,并基于相邻区域中的流体对象与可变形对象之间的作用力来对流体对象和可变形对象进行建模,其中,基于存储在网格的网格点中的信息计算所述作用力,
其中,所述计算的处理包括:验证在相邻区域中流体对象的粒子与可变形对象的粒子之间是否发生碰撞;基于验证的结果计算流体对象的粒子与可变形对象的粒子之间的作用力。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20140111467 | 2014-08-26 | ||
KR10-2014-0111467 | 2014-08-26 | ||
KR1020150059496A KR102399671B1 (ko) | 2014-08-26 | 2015-04-28 | 객체들을 모델링하는 방법 및 장치 |
KR10-2015-0059496 | 2015-04-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105389855A CN105389855A (zh) | 2016-03-09 |
CN105389855B true CN105389855B (zh) | 2019-11-01 |
Family
ID=54035131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510463552.0A Active CN105389855B (zh) | 2014-08-26 | 2015-07-31 | 对对象进行建模的方法和设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9953109B2 (zh) |
EP (1) | EP2990971A1 (zh) |
CN (1) | CN105389855B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102263096B1 (ko) | 2014-11-13 | 2021-06-09 | 삼성전자주식회사 | 입자로 구성된 객체들을 모델링하는 방법 및 장치 |
KR20170052144A (ko) * | 2015-11-04 | 2017-05-12 | 삼성전자주식회사 | 대상 유체를 렌더링하는 방법 및 장치 |
US11048927B2 (en) * | 2017-10-24 | 2021-06-29 | Waymo Llc | Pedestrian behavior predictions for autonomous vehicles |
CN109493427B (zh) * | 2018-11-28 | 2023-04-11 | 珠海金山数字网络科技有限公司 | 一种智能模型训练方法及装置、一种碰撞检测方法及装置 |
CN109992830B (zh) * | 2019-02-26 | 2020-11-13 | 浙江大学 | 基于物质点方法的山体滑坡灾害场景模拟方法 |
JP7160752B2 (ja) * | 2019-04-25 | 2022-10-25 | 株式会社日立製作所 | 粒子挙動シミュレーション方法、及び粒子挙動シミュレーションシステム |
US11605194B2 (en) * | 2021-03-08 | 2023-03-14 | Square Enix Ltd. | Dynamic simulation of interaction between water and an object |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1136106A3 (en) * | 2000-03-21 | 2001-12-05 | Sony Computer Entertainment Inc. | Entertainment apparatus, storage medium, and method of displaying an object |
JP3655531B2 (ja) | 2000-04-21 | 2005-06-02 | 株式会社ブリヂストン | タイヤ性能予測方法、流体シミュレーション方法、タイヤ設計方法、タイヤ用加硫金型設計方法、タイヤ用加硫金型製造方法、空気入りタイヤの製造方法、タイヤ性能予測プログラムを記録した記録媒体 |
DE10137398C1 (de) * | 2001-07-31 | 2003-02-06 | Infineon Technologies Ag | Verfahren zum Herstellen einer Lochmaske für Teilchenstrahlung |
US7479963B2 (en) | 2004-05-14 | 2009-01-20 | Yissum Research Development Company Of The Hebrew University Of Jerusalem | Method and system for performing computer graphic simulation of a fluid using target-driven control |
US7314551B2 (en) | 2004-11-19 | 2008-01-01 | Uop Llc | Flow distribution apparatus |
DK2011631T3 (da) * | 2007-07-04 | 2012-06-25 | Envisiontec Gmbh | Fremgangsmåde og indretning til fremstilling af et tre-dimensionelt objekt |
KR100872434B1 (ko) | 2007-10-25 | 2008-12-05 | 한국전자통신연구원 | 다중 해상도의 유체 파티클 시뮬레이션 시스템 및 방법 |
US8423327B2 (en) | 2008-03-05 | 2013-04-16 | Livermore Software Technology Corporation | Methods and systems of engineering analysis using a hybrid approach with FEM and adaptive SPH |
CN101329772B (zh) * | 2008-07-21 | 2010-06-02 | 北京理工大学 | 一种基于sph的运动物体与水交互的仿真建模方法 |
US8204725B1 (en) | 2008-07-25 | 2012-06-19 | Nvidia Corporation | Real-time breaking waves for shallow water simulations |
US8041550B1 (en) | 2008-07-25 | 2011-10-18 | Nvidia Corporation | Two-way rigid body coupling in shallow water simulations |
KR100984048B1 (ko) | 2008-10-14 | 2010-09-30 | 한국전자통신연구원 | 파티클 유체 시뮬레이션에서의 강성체 상호작용 처리 방법 |
US8812226B2 (en) * | 2009-01-26 | 2014-08-19 | GM Global Technology Operations LLC | Multiobject fusion module for collision preparation system |
US8803887B2 (en) | 2009-05-04 | 2014-08-12 | Disney Enterprises, Inc. | Computer graphic system and method for simulating hair |
CN104658021B (zh) * | 2009-12-25 | 2018-02-16 | 英特尔公司 | 虚拟环境中的对象的图形模拟 |
US8576253B2 (en) * | 2010-04-27 | 2013-11-05 | Microsoft Corporation | Grasp simulation of a virtual object |
US9478033B1 (en) * | 2010-08-02 | 2016-10-25 | Red Giant Software | Particle-based tracking of objects within images |
KR101180057B1 (ko) | 2010-11-03 | 2012-09-04 | 고려대학교 산학협력단 | 물질간 혼합 현상의 모델링 장치 및 방법 |
WO2012113732A1 (en) * | 2011-02-25 | 2012-08-30 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Determining model parameters based on transforming a model of an object |
KR101244826B1 (ko) | 2011-03-04 | 2013-03-19 | (주)에프엑스기어 | 격자와 입자의 상호 작용을 이용한 유체 시뮬레이션 시스템 및 방법 |
US8831916B2 (en) * | 2011-05-05 | 2014-09-09 | Siemens Aktiengesellschaft | Simplified smoothed particle hydrodynamics |
US8903693B2 (en) * | 2011-06-24 | 2014-12-02 | Siemens Aktiengesellschaft | Boundary handling for particle-based simulation |
US20140122034A1 (en) * | 2011-12-09 | 2014-05-01 | Jonathan M. Hanson | Drill bit body rubbing simulation |
KR101319996B1 (ko) | 2011-12-30 | 2013-10-18 | 세종대학교산학협력단 | 유체 시뮬레이션 방법 |
KR101350732B1 (ko) | 2012-06-04 | 2014-01-14 | 한국과학기술원 | 변형체의 실시간 시뮬레이션을 위한 다해상도 무요소법 |
WO2013184835A1 (en) * | 2012-06-07 | 2013-12-12 | The Regents Of The University Of California | Wide-field microscopy using self-assembled liquid lenses |
JP5986817B2 (ja) * | 2012-06-15 | 2016-09-06 | 株式会社日立ハイテクノロジーズ | オーバーレイ誤差測定装置、及びコンピュータープログラム |
KR101401417B1 (ko) | 2012-10-22 | 2014-05-30 | 한국과학기술연구원 | 변형체 모델의 조각 시뮬레이션 방법 및 장치 |
GB2523640B (en) * | 2012-12-20 | 2020-05-27 | Inst Of Modern Physics | Particle flow simulation system and method |
CN103699715A (zh) * | 2013-12-01 | 2014-04-02 | 北京航空航天大学 | 一种基于光滑粒子流体动力学和非线性有限元的流固耦合方法 |
-
2015
- 2015-07-31 CN CN201510463552.0A patent/CN105389855B/zh active Active
- 2015-08-13 US US14/825,755 patent/US9953109B2/en active Active
- 2015-08-21 EP EP15181926.5A patent/EP2990971A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US9953109B2 (en) | 2018-04-24 |
CN105389855A (zh) | 2016-03-09 |
US20160063140A1 (en) | 2016-03-03 |
EP2990971A1 (en) | 2016-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105389855B (zh) | 对对象进行建模的方法和设备 | |
CN108292139B (zh) | 由机器人同时进行地图绘制和规划 | |
CN109643334B (zh) | 反向模拟多根纤维 | |
Aycock et al. | A resolved two-way coupled CFD/6-DOF approach for predicting embolus transport and the embolus-trapping efficiency of IVC filters | |
CN102982192A (zh) | 用于基于颗粒的模拟的边界处理 | |
Bolla et al. | Gathering of fat robots with limited visibility and without global navigation | |
AU2017227323B2 (en) | Particle simulation device, particle simulation method, and particle simulation program | |
US20150120258A1 (en) | Particle-based modeling method and apparatus | |
Guerrero et al. | Instrumentation of an array of ultrasonic sensors and data processing for unmanned aerial vehicle (UAV) for teaching the application of the Kalman filter | |
KR102399671B1 (ko) | 객체들을 모델링하는 방법 및 장치 | |
JP5892257B2 (ja) | シミュレーションプログラム、シミュレーション方法及びシミュレーション装置 | |
KR101533946B1 (ko) | 원의 보로노이 다이어그램의 업데이트 방법과 이를 이용한 입자 간 충돌 시뮬레이션 방법 | |
KR102459848B1 (ko) | 입자에 기반하여 대상 객체를 고속으로 모델링하는 방법 및 장치 | |
Talley et al. | Coalescence prevention algorithm for level set method | |
US10572609B2 (en) | Method and apparatus to model objects including particles | |
JP5645120B2 (ja) | 粒子状態計算装置及び粒子状態計算方法 | |
KR101909383B1 (ko) | 압축성 볼츠만 해석 기법의 벽면 경계 조건 모델링 방법 | |
CN104156557A (zh) | 运动固壁问题中边界条件的高阶修正技术 | |
EP3136347A1 (en) | Modeling method and apparatus using fluid animation graph | |
US20170177759A1 (en) | Method and apparatus for modeling movement of target object by interaction with fluid | |
Kuiper et al. | Virtual agent perception in large scale multi-agent based simulation systems | |
KR102181981B1 (ko) | Sph 기반의 유체 해석 시뮬레이션을 하는 장치, 방법 및 컴퓨터 프로그램 | |
KR102181979B1 (ko) | Sph 기반의 유체 해석 시뮬레이션을 하는 장치, 방법 및 컴퓨터 프로그램 | |
Siewert et al. | On the collision detection for ellipsoidal particles in turbulence | |
JP5720551B2 (ja) | シミュレーションプログラム、シミュレーション方法及びシミュレーション装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |