对对象进行建模的方法和设备的制造方法_4

文档序号:9632079阅读:来源:国知局
验证关于可变形对象的轮廓的信息。网格模块920可基于形状信息计算流体粒子对可变形对象的作用力。网格模块920可将形状信息发送到流体建模模块940。
[0101]流体建模模块940可基于形状信息响应于可变形对象与流体粒子之间的碰撞计算流体粒子的最终速度和施加到流体粒子的约束力。流体建模模块940可再次将施加到流体粒子的约束力和流体粒子的最终速度提供给网格模块920。
[0102]在示例实施例中,通过由对方建模模块(例如,在流体的情况下的可变形对象建模模块930,以及在可变形对象的情况下的流体建模模块940)反馈存储在网格模块920中的信息并将反馈信息反映在其自身粒子的建模中,可实时处理可变形对象与流体之间的相互作用。
[0103]通过处理可变形对象与流体之间的相互作用,可实现需要高质量真实图像再现的影片中的特殊效果以及需要实时处理的游戏或移动用户界面(UI)领域中的流体和与流体混合的可变形对象的真实建模。
[0104]图10示出根据示例实施例的在用于对对象进行建模的设备中通过网格模块的中继处理流体与可变形对象之间的相互作用的处理。
[0105]参照图10,示出流体建模模块1010、网格模块1030和可变形对象建模模块1050。
[0106]流体建模模块1010可在建模步骤处理外力(例如,重力),对流体场的粘度进行建模,并对流体粒子的位置进行更新。流体建模模块1010可通过验证包括在流体场中的每个流体粒子是否与可变形对象碰撞以及流体粒子的体积或密度是否满足体积保持条件来对流体粒子进行建模。例如,可假设包括在流体场中的每个流体粒子与可变形对象碰撞并且在碰撞时流体粒子的体积满足体积保持条件。流体建模模块1010可计算施加到流体粒子的约束力和流体粒子的最终速度。流体建模模块1010可通过将在碰撞和体积保持条件不存在时施加到流体粒子的力与在碰撞和体积保持条件存在时施加到流体粒子的力进行比较,来计算施加到流体粒子的约束力。流体建模模块1010可将关于计算出的流体粒子的约束力和最终速度的信息提供给网格模块1030。
[0107]网格模块1030可帮助流体建模模块1010和可变形对象建模模块1050隐含地识别对方建模模块的存在。网格模块1030可将流体粒子的作用力提供给可变形对象建模模块1050,并将可变形对象的形状信息提供给流体建模模块1010。流体粒子的作用力可包括流体粒子对可变形对象的反作用力和拖曳力。当流体粒子和可变形对象在预定距离内彼此相邻时,网格模块1030可基于流体粒子的约束力和最终速度计算作用力。
[0108]网格模块1030可通过将可变形对象的形状信息发送到流体粒子并将施加到流体的相互作用和阻力发送到可变形对象的形状模型,使流体建模模块1010和可变形对象建模模块1050中的每个能够获得物理上正确的相互作用结果。
[0109]网格模块1030可对流体与可变形对象彼此相邻的至少一个区域执行操作以正确地传递相互作用。
[0110]与流体类似,可变形对象建模模块1050可对重力和弹力进行建模,并通过参考网格模块1030,附加地反映在相互作用区域中产生的力。可变形对象建模模块1050可通过将作用力施加到距离场中的形状模型来确定形状模型的最终位置。在该示例中,可通过考虑流体粒子对可变形对象的作用力来获得作用力,并可在受作用力的可变形对象中反映流体粒子的摩擦力和阻力。可变形对象建模模块1050可考虑在形状模型的最终位置的可变形对象与流体粒子之间的碰撞来产生可变形对象的形状信息,使得不包括流体粒子的可变形对象的形状模型和阻碍可满足体积保持条件。可变形对象建模模块1050可产生可变形对象的形状信息,使得可变形对象的形状模型和可变形对象的阻碍可满足体积保持条件。在该示例中,流体粒子对可变形对象的作用力可被反映在可变形对象的形状模型中。可变形对象建模模块1050可将形状信息例如作为使用具有标记的距离值指示在网格中自身位置的水平集信息发送到网格模块1030。
[0111]在示例实施例中,流体建模模块1010和可变形对象建模模块1050可分别被配置为分别实现对可变形对象的粒子和流体的粒子进行建模所需的约束条件,例如体积保持。
[0112]此外,流体建模模块1010和可变形对象建模模块1050可独立地执行各自的建模,并以整体方式通过网格模块1030处理可变形对象与流体之间的相互作用区域。
[0113]图11示出根据示例实施例的用于对对象进行建模的设备的操作方法。
[0114]参照图11,在操作1110,建模设备可验证可变形对象粒子与包括在流体场中的流体粒子之间是否发生碰撞以及流体粒子是否满足与第一约束条件对应的体积保持条件。
[0115]在操作1120,建模设备可基于验证的结果计算施加到流体粒子的约束力和流体粒子的最终速度。当流体粒子与可变形对象粒子碰撞时,建模设备可将流体粒子重新定位到流体粒子不穿透可变形对象的最终位置。建模设备可执行建模,使得流体粒子可在最终位置满足体积保持条件,并且建模设备可计算施加到流体粒子的约束力和流体粒子的最终速度。此外,建模设备可基于形状信息计算流体粒子的约束力和最终速度。
[0116]在操作1130,建模设备可基于计算出的约束力和计算出的最终速度计算流体粒子对可变形对象的作用力。作用力可包括反作用力和拖曳力。在操作1130,建模设备可基于约束力计算流体粒子对可变形对象的反作用力。在该示例中,可基于形状信息计算反作用力。建模设备可基于在约束力被反映的流体粒子的最终位置的最终速度来计算流体粒子对可变形对象的拖曳力。
[0117]此外,建模设备可验证流体粒子与可变形对象粒子是否在预设距离内彼此相邻,并基于验证的结果计算作用力。
[0118]在操作1140,建模设备可产生可变形对象的形状信息,使得不包括流体粒子的可变形对象的形状模型和可变形对象的阻碍可满足体积保持条件。流体粒子对可变形对象的作用力可被反映在可变形对象的形状模型中。
[0119]在操作1140,建模设备可将作用力施加到形状模型,并基于施加的结果确定形状模型的最终位置。建模设备可产生可变形对象的形状信息,使得可变形对象的形状模型和阻碍可在形状模型的最终位置满足体积保持条件。
[0120]图12示出根据示例实施例的在用于对对象进行建模的设备中的流体建模模块的操作方法。
[0121]参照图12,在操作1210,流体建模模块可通过反映流体场的粘度和影响流体场中的流体粒子的外力来计算流体粒子的位置。在操作1210,流体建模模块可计算流体粒子之间的动量方程。例如,流体建模模块可基于第一粒子附近的第二粒子计算关于第一粒子的动量方程,并针对包括第一粒子和第二粒子的所有粒子计算密度、外力和粘度。流体建模模块可基于计算动量方程的结果针对第一粒子和第二粒子中的每个计算满足不可压缩条件的变化。不可压缩条件可指流体的内体积的不变条件,并可通过流体与可变形对象之间的相互作用以及对在预定流体场中施加了粒子速度的粒子中的流入流出率的控制来实现轮廓的高精度建模。流体建模模块可获得流体场中的各个流体粒子的发散度,并通过将发散度控制为“0”来满足不可压缩条件。流体建模模块可基于计算出的变量来计算流体粒子的位置。
[0122]在操作1210之前,流体建模模块可对将被用于对流体进行建模的粒子进行初始化。在初始化处理期间,建模设备可对关于与预定空间或区域中的流体对应的粒子的质量、密度、速度和位置的信息进行初始化。
[0123]在操作1220,流体建模模块可验证在可变形对象与包括在流体场中的流体粒子之间是否发生碰撞。
[0124]当在操作1220验证发生了碰撞时,在操作1230,流体建模模块可将流体粒子重新定位到流体粒子不穿透可变形对象的最终位置。在操作1240,流体建模模块可执行建模,使得流体粒子可在最终位置满足第一约束条件,例如,体积保持条件。流体建模模块可在操作1250计算响应于碰撞而施加到流体粒子的约束力,并在操作1260计算在最终位置处流体粒子的最终速度。流体建模模块可基于从网格模块接收的可变形对象的形状信息计算流体粒子的约束力和最终速度。在操作1270,流体建模模块可将关于施加到流体粒子的约束力和流体粒子的最终速度的信息提供给网格模块。
[0125]当在操作1220验证没有发生碰撞时,流体建模模块可终止操作,或将在操作1210计算出的流体粒子的位置提供给网格模块。
[0126]图13示出根据示例实施例的在用于对对象进行建模的设备中的可变形对象建模模块的操作方法。
[0127]参照图13,在操作1310,可变形对象建模模块可通过反映外力,基于可变形对象的粒子来对形状模型进行建模。在操作1320,可变形对象建模模块可将流体粒子对可变形对象的作用力施加到建模的形状模型。在操作1330,可变形对象建模模块可基于施加的结果确定形状模型的最终位置。
[0128]在操作1340,可变形对象建模模块可验证在可变形对象与流体粒子之间是否发生碰撞。
[0129]当在操作1340验证发生了碰撞时,在操作1350,可变形对象建模模块可执行建模使得可变形对象的形状模型和阻碍可在形状模型的最终位置满足第二约束条件。在操作1360,可变形对象建模模块可产生关于在操作1350建模的可变形对象的形状模型的形状信息。在操作1370,可变形对象建模模块可将产生的形状信息发送到网格模块。
[0130]当在操作1340验证没有发生碰撞时,可变形对象建模模块可在操作1360产生关于形状模型的形状信息,并在操作1370将产生的形状信息发送到网格模块。
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1