用于模拟毛发的动力学的技术的制作方法

文档序号:6523949阅读:129来源:国知局
用于模拟毛发的动力学的技术的制作方法
【专利摘要】配置为通过实现基于物理的算法,生成粒子链的物理模拟的模拟引擎。所述模拟引擎配置为生成针对每个粒子的预测位置和然后基于与所述基于物理的算法相关联的约束集调整每个粒子的预测位置。所述模拟引擎然后可以基于所调整的、所预测的该粒子的位置和基于所调整的、所预测的相邻粒子的位置生成针对给定粒子的预测速度。
【专利说明】用于模拟毛发的动力学的技术
【技术领域】
[0001]本发明概括地来说涉及物理模拟,更具体地,涉及用于模拟毛发的动力学的技术。【背景技术】
[0002]常规的模拟引擎能够模拟各种物理对象,包括多边形、粒子、和毛发的动力学。为了模拟毛发的动力学,常规的模拟引擎典型地将每缕毛发模拟为粒子链。为了在模拟引擎中给定的时间步骤更新每个这样的粒子的位置,所述模拟引擎可以将基于物理的算法应用于粒子链中的每个粒子。当更新粒子链中的粒子的位置时,所述基于物理的算法可以包含各种运动定律,以及不同的物理约束。
[0003]当经由上述方法模拟毛发时,为了确保相邻粒子彼此之间存在固定距离,所述模拟引擎典型地在粒子链中的粒子之间强制施行行距离约束。以这种方式施行距离约束可以使得所述粒子链表现为不可伸展的,因此与一根天然的毛发更相似。
[0004]然而,施行多种不同的约束集可能是困难的,因为更新一个粒子的位置以满足一个约束集可能结果会造成该粒子的位置违反不相同的约束集。常规的模拟引擎通过在给定的时间步骤期间迭代地多次调整每个粒子的位置,直到满足所有的约束来解决该问题。
[0005]该方法的问题是:为了防止毛发表现为能伸展的,在模拟的每个时间步骤针对模拟中的每个粒子,迭代地应用基于物理的算法和相关的物理约束经常是计算密集的,且可能导致非常慢的物理模拟。减少每个时间步骤迭代的次数能够加速模拟但会导致不真实的看起来可伸展的毛发。因此,不可伸展的毛发的模拟不可能在诸如电子游戏等实时物理模拟内实现。
[0006]因此,本领域所需的是用于实时模拟毛发的更高效的技术。

【发明内容】

[0007]本发明的一个实施例阐述了用于生成粒子链的物理模拟的计算机实现方法,所述方法包括:基于与所述物理模拟相关联的物理规律集,生成针对粒子链中的粒子位置预测,基于所述位置预测和与所述粒子链相关联的物理约束集,生成针对所述粒子经调整的位置预测,基于与所述粒子相关联的第一速度预测因子和基于与在粒子链中毗邻于所述粒子存在的第一相邻粒子相关联的第二速度预测因子,生成针对所述粒子的速度预测,在显示设备上更新所述粒子的当前位置,以反映与所述粒子相关联的经调整的位置预测,和更新所述粒子的当前速度,以反映与所述粒子相关联的速度预测。
[0008]所公开的算法的一个优势是在所述物理模拟内的每个粒子可以只需要仅用一次所述算法的迭代以满足与每个这样的粒子相关联的约束。因此,粒子链可以表现为具有零伸展。所公开的算法因此可以在诸如电子游戏等实时模拟中实现。
【专利附图】

【附图说明】
[0009]因此,可以详细地理解本发明的上述特征,并且可以参考实施例得到对如上面所简要概括的本发明更具体的描述,其中一些实施例在附图中示出。然而,应当注意的是,附图仅示出了本发明的典型实施例,因此不应被认为是对其范围的限制,本公开可以具有其它等效的实施例。
[0010]图1是示出了配置为实现本发明的一个或多个方面的计算机系统的框图;
[0011]图2是根据本发明的一个实施例的、用于仿真所模拟的粒子链的方法步骤的流程图;和
[0012]图3A-3D是根据本发明的各个实施例的概念性示意图,其表示所模拟的粒子的链。
【具体实施方式】
[0013]在下面的描述中,将阐述大量的具体细节以提供对本发明更透彻的理解。然而,本领域的技术人员应该清楚,本发明可以在没有一个或多个这些具体细节的情况下得以实施。
[0014]系统概述
[0015]图1为示出了配置为实现本发明的一个或多个方面的计算机系统100的框图。计算机系统100包括经由可以包括存储器桥105的互连路径通信的中央处理单元(CPU) 102和系统存储器104。存储器桥105可以是例如北桥芯片,经由总线或其它通信路径106 (例如超传输(HyperTransport)链路)连接到I/O (输入/输出)桥107。I/O桥107,其可以是例如南桥芯片,从一个或多个用户输入设备108 (例如键盘、鼠标)接收用户输入并且经由通信路径106和存储器桥105将该输入转发到CPU102。并行处理子系统112经由总线或第二通信路径113 (例如外围部件互连(PCI)Express、加速图形端口(AGP)或超传输链路)耦连到存储器桥105 ;在一个实施例中,并行处理子系统112是将像素传递到可以是任何常规的阴极射线管、液晶显示器、发光二极管显示器等显示设备110的图形子系统。系统盘114也连接到I/O桥107,且可以配置为存储用于通过CPU102和并行处理子系统112使用的内容和应用程序(applications)和数据。系统盘114为应用程序和数据提供非易失性存储,且可以包含固定的或可移动的硬盘驱动程序、闪速存储器设备和压缩光盘(CD)只读存储器(ROM)、数字化通用磁盘(DVD)如11、蓝光(8111-以7)、高清(!10)0¥0或其它磁的、光学的或固态的存储器设备。
[0016]交换器116提供I/O桥107与诸如网络适配器118以及各种插卡120和121的其它部件之间的连接。其它部件(未明确示出),包括通用串行总线(USB)或其它端口连接、⑶驱动器、DVD驱动器、胶片录制设备及类似部件,也可以连接到I/O桥107。图1所示的各种通信路径包括具体命名的通信路径106和113可以使用任何适合的协议实现,诸如PC1-Express (PCI_e)、AGP (加速图形端口)、超传输或者任何其它总线或点到点通信协议,并且如本领域已知的,不同设备间的连接可使用不同协议。
[0017]在一个实施例中,并行处理子系统112包含经优化用于图形和视频处理的电路,包括例如视频输出电路,并且可以包含图形处理单元(GPU)。在另一个实施例中,并行处理子系统112包含经优化用于通用处理的电路,同时保留底层(underlying)的计算架构,本文将更详细地进行描述。在又一个实施例中,可以将并行处理子系统112与一个或多个的其它系统元件集成在单个子系统中,诸如结合存储器桥105、CPU102以及I/O桥107,以形成片上系统(SoC)。
[0018]应该理解,本文所示系统是示例性的,并且变化和修改都是可能的。连接拓扑,包括桥的数目和布置、CPU102的数目以及并行处理子系统112的数目,可根据需要修改。例如,在一些实施例中,系统存储器104直接连接到CPU102而不是通过桥,并且其它设备经由存储器桥105和CPU102与系统存储器104通信。在其它替代性拓扑中,并行处理子系统112连接到I/O桥107或直接连接到CPU102,而不是连接到存储器桥105。而在其它实施例中,I/O桥107和存储器桥105可能被集成到单个芯片上而不是作为一个或多个分立设备存在。大型实施例可以包括两个或更多个CPU102和两个或更多个并行处理系统112。本文所示的特定部件是可选的;例如,任何数目的插卡或外围设备都可能得到支持。在一些实施例中,交换器116被去掉,网络适配器118和插卡120、121直接连接到I/O桥107。
[0019]并行处理子系统112包括一个或多个的并行处理单元(PPU),所述PPU各自配置为同时执行多个处理操作。在一个实施例中,在并行处理子系统112内的每个PF1U为图形处理单元(GPU)或通用GPU。给定的PTO可以包括任意数量的本地存储器,且还可以耦连到并行处理子系统112内的其它任意PTO也可访问的总局存储器。每个PTO可以包括任意数目的不同处理内核,每个这样的内核能够同时地执行多个不同的执行线程。给定的执行线程可以执行图像相关的操作或通用处理操作。
[0020]并行处理子系统112内的每个PI3U还可以执行存在于系统存储器103中的模拟应用程序150。当执行模拟应用程序150时,给定的PTO配置为生成一个或多个粒子链的物理模拟并输出表示该物理模拟的像素到显示设备。所述物理模拟内的给定的粒子链可以表示,例如一根毛发或软毛(hair或fur)。在一个实施例中,模拟引擎150可以存在于同时在CPU102和并行处理子系统112上执行的电子游戏内,且由并行处理子系统112内的PPU所模拟的每个粒子链可以表示附加到该电子游戏内角色的毛发或软毛。
[0021]在所述物理模拟中的每个时间步骤,模拟引擎150配置为通过实现以下结合图2所描述的基于物理的算法,更新所述物理模拟内的粒子链中的每个粒子的位置和速度。
[0022]模拟毛发的动力学
[0023]图2是根据本发明的一个实施例的、用于模拟粒子链的方法步骤的流程图。尽管结合图1的系统描述了所述方法步骤,本领域技术人员应当理解,配置为以任意顺序执行所述方法步骤的任意系统均在本发明的范围内。如以上结合图1所述,以下所描述的方法步骤表示由模拟引擎150所实现的基于物理的算法。
[0024]如所示的,方法200开始于步骤202,其中模拟引擎150生成针对粒子链中的粒子的位置预测。基于在当前时间步骤的所述粒子的当前位置和速度、在当前时间步骤施加在所述粒子上的力的集合、以及由用于所述物理模拟的模拟引擎150所实现的时间步骤的长度,模拟引擎150配置为生成针对所述粒子的位置预测。通过将物理规律集应用于所述粒子,模拟引擎150可执行步骤202,所述物理规律集表示诸如牛顿第二运动定律等物理运动定律和诸如如显示欧拉法等时间积分方案。在一个实施例中,所述粒子链通过存在于所述粒子链一端的“锚”粒子附加到所述物理模拟内的另一个对象。所述链所附加到的对象可以是例如配置为实现模拟引擎150的电子游戏内的角色。
[0025]在步骤204,模拟引擎150通过在所述粒子和所述粒子链中的“前面的”的粒子之间施行约束集,调整所述粒子的所述位置预测。本文所称的“前面的”的粒子是在朝向所述锚粒子的方向上毗邻所述粒子存在的粒子。在一个实施例中,模拟引擎150通过沿连接所述粒子与所述前面的粒子的线朝向所述前面的粒子移动该粒子,来调整所述粒子的位置预测。用这种方式,模拟引擎150可以移动所述粒子直到满足所述距离约束。
[0026]在步骤206,基于在步骤204所生成的经调整的位置预测、所述粒子链中的“后面的”粒子的经调整的位置预测、阻尼因子和由用于所述物理模拟的模拟引擎150所实现的时间步骤的长度,模拟引擎150生成针对所述粒子的速度预测。本文所称的“后面的”的粒子是在所述锚粒子的相反方向毗邻于所述粒子存在的粒子。通过用所述后面的粒子执行方法200的步骤202和204,模拟引擎150可以生成所述粒子链中的后面的粒子的经调整的位置预测。
[0027]在步骤208,模拟引擎150更新所述粒子的位置以反映在步骤202所生成的针对所述粒子的位置预测。在步骤210,模拟引擎150更新所述粒子的速度以反映在步骤206所生成的针对所述粒子的速度预测。然后方法200结束。
[0028]模拟引擎150可以在例如并行处理子系统112内的PPU的每个处理内核上并行地实现用于粒子链中每个粒子的方法200,从而同时地执行用于每个粒子的方法200的每个步骤。用这种方法,当计算所述相邻粒子的速度预测时,模拟引擎150可以利用针对所述粒子的经调整的位置预测。总之,在给定的时间步骤期间,模拟引擎150仅需要针对每个粒子实现方法200 —次,从而相对于为了更新所述粒子的位置而需要基于物理的算法的多次迭代的常规技术,赋予了显著的优势。
[0029]结合图3A-3D通过实例对以上所描述的方法进行更详细的讨论。
[0030]图3A是根据本发明的一个实施例的概念性示意图,其表示所模拟的粒子的链300。如所示的,链300包括分别存在于位置312、314、316和318的粒子302,304,306和308。粒子302可以是“锚”粒子,如以上结合图2所描述,正因为如此,可以相对于所述物理模拟内的对象具有固定的位置。
[0031]在所述物理模拟的每个时间步骤,基于在前一个步骤期间,该粒子的位置、速度和施加到该粒子上的力,以如结合图2中所示的方法200的步骤202所描述的相同的方式,模拟引擎150计算针对给定粒子的位置预测。在图3A中,根据由模拟引擎150所生成的针对那些粒子的各自的位置预测,粒子302、304、306和308分别被置于位置预测312、314、316和318。也如所示的,粒子302和304彼此之间存在LI的距离,粒子304和306彼此之间存在L2的距离,且粒子306和308彼此之间存在L3的距离。为了满足物理约束集,模拟引擎150配置为调整所述针对每个粒子的位置预测,如以下结合图3B所更详细地讨论的。
[0032]图3B是根据本发明的一个实施例的概念性示意图,其表示所模拟的粒子的链300。如所示的,粒子304现存在于位置324,粒子306现存在于位置326,且粒子308现存在于位置328。此外,从粒子302到粒子304现存在LO的距离,从粒子304到粒子306现存在LO的距离,且从粒子306到粒子308现也存在LO的距离。如以上结合图3A所述,模拟引擎配置为调整针对每个粒子的位置预测以满足物理约束集。在图3B,模拟引擎150已调整图3A中所示的位置预测以满足粒子302、304、306和308各自彼此之间都存在固定的距离LO的物理约束,与以上结合图2所描述的方法200的步骤204类似。
[0033]在一个实施例中,模拟引擎150从所述锚粒子开始,以“自顶向下”的方式处理与粒子链300相关联的约束。为了满足所述粒子和所述前面的粒子之间的距离约束,在直线上朝向前面的粒子移动给定的粒子。从所述锚粒子开始,接连地针对每个粒子执行该过程,从而可以满足与粒子链300相关联的每个距离约束。模拟引擎150然后可生成针对每个粒子的速度预测,如以下结合图3C所更详细地描述的。
[0034]图3C是根据本发明的一个实施例的概念性示意图,其表示所模拟的粒子的链300。如所示的,链300包括存在于位置312、324、326和328上的粒子302,304,306和308。一旦模拟引擎150已经调整所述每个粒子的位置预测以满足所述物理约束集,如以上结合图3B所讨论的,模拟引擎150然后基于两个分开的因子,可以生成针对每个粒子的速度预测。
[0035]对于给定的粒子,模拟引擎150基于针对所述粒子的位置之间的距离(诸如由方法200的步骤202所生成的)、针对所述粒子的经调整的位置预测(诸如由方法200的步骤204所生成的)、和由用于所述物理模拟的模拟引擎150所实现的时间步骤的长度,来确定针对该粒子的第一速度预测因子。所述第一速度预测因子表示在所述时间步骤期间,穿越所述位置预测和所述经调整的位置预测之间的距离之后的粒子的预测速度。
[0036]例如,当模拟引擎150调整粒子304的位置预测314时,从而移动粒子304到位置324,模拟引擎150然后可以计算针对粒子304的第一速度预测因子为速度334。同样地,当模拟引擎150调整粒子306的位置预测316时,从而移动粒子306到位置326,模拟引擎150然后可以计算针对粒子306的第一速度预测因子为速度336。进一步,当模拟引擎150调整粒子308的位置预测318时,从而移动粒子308到位置328,模拟引擎150然后可以计算针对粒子308的第一速度预测因子为速度338。
[0037]对于给定的粒子,基于与所述粒子链中的后面的粒子相关联的所述第一速度预测因子,以及阻尼因子,模拟引擎150然后可以计算针对该粒子的第二速度预测因子。例如,模拟引擎150可计算针对粒子304的第二速度预测因子为速度336的倒数(与粒子306相关联)乘以所述阻尼因子,即为图3C中所示的速度344。同样地,模拟引擎150可计算针对粒子306的第二速度预测因子为速度338的倒数(与粒子308相关联)乘以所述阻尼因子,即为图3C中所示的速度346。在一个实施例中,所述阻尼因子为O到I之间的小数。对于诸如粒子308等存在于链300末端的离子,模拟引擎150可以不计算所述第二速度预测因子,因为该粒子不具有后面的粒子。
[0038]对于给定的粒子,模拟引擎150配置为基于以上所述的第一和第二速度预测因子,计算针对该粒子的速度预测。在一个实施例中,模拟引擎150将所述两个速度预测因子加起来以生成针对给定粒子的总的速度预测。例如,模拟引擎150可以基于速度334和344计算针对粒子304的速度预测354。同样地,模拟引擎150可以基于速度336和346计算针对粒子306的速度预测356。以上结合图2所讨论的方法200的步骤206描述了用于计算针对给定粒子的速度预测的总体方法。
[0039]一旦模拟引擎150已经生成针对链300中的每个粒子的经调整的位置预测和速度预测,模拟引擎150可以更新链300中的每个粒子的位置和速度以反映那些经调整的位置预测和速度预测,如以下结合图3D所更详细地描述的。
[0040]图3D是根据本发明的一个实施例的概念性示意图,其表示所模拟的粒子的链300。如所示的,粒子302,304,306和308分别存在于位置312、324、326和328。粒子304、306和308分别具有速度354、356和338。模拟引擎150可以以与结合图2中所示的方法200的步骤208和210相同的方式,更新粒子302、304、306和308的位置和速度。一旦模拟引擎150已经根据以上所描述的技术更新所述物理模拟中每个粒子的位置,模拟引擎150然后可以生成表示那些粒子的像素集。模拟引擎150然后可以输出那些像素集到显示设备,例如用于向终端用户显示。
[0041]本领域技术人员应当理解结合图3A-3D所讨论的实例表示的只是本文所描述的技术的一种可能的实现,而其它实现也是可能的。
[0042]总之,配置为通过实现基于物理的算法,生成粒子链的物理模拟的模拟引擎。所述模拟引擎配置为生成针对每个粒子的预测位置和然后基于与所述基于物理的算法相关联的约束集调整所述每个粒子的预测位置。所述模拟引擎然后可以基于所调整的、所预测的该粒子的位置和基于所调整的、所预测的相邻粒子的位置生成针对给定粒子的预测速度。
[0043]有利地,仅用一次所述基于物理的算法的迭代,所述模拟引擎能够更新所述物理模拟内的每个粒子的位置,从而允许该算法在诸如电子游戏等实时模拟中被实现。
[0044]本发明的一个实施例可以作为用于和计算机系统一起使用的程序产品来实现。所述程序产品的程序限定实施例的功能(包括本文所描述的方法),可以包含在多种计算机可读的存储媒介。示例性的计算机可读的存储媒介包括但不限于:(i)非可写的存储媒介(例如,诸如⑶-ROM驱动程序可读的压缩光盘只读存储器(⑶-ROM)磁盘、闪速存储器、只读存储器(ROM)芯片或任意类型的固态非易失性半导体存储器等计算机内的只读存储器设备),在所述非可写的存储媒介上信息被永久地存储jP(ii)可写的存储媒介(例如,在软磁盘驱动程序或硬盘驱动程序内的软盘或任意类型的固态随机存取半导体存储器),在所述可写的存储媒介上存储可改变的信息。
[0045]以上已参照特定实施例对本发明进行了描述。然而,本领域普通技术人员应当理解的是,可对此做出各种修改和变化而不脱离如随附权利要求书中所阐述的本发明的较宽精神和范围。因此,前面的描述以及附图应被视为是例示性而非限制性的意义。
[0046]因此,在后面的权利要求中对本发明实施例的范围进行阐述。
【权利要求】
1.一种用于生成粒子链的物理模拟的计算机实现方法,所述方法包括: 基于与所述物理模拟相关联的物理规律集,生成针对所述粒子链中的粒子的位置预测; 基于所述位置预测和与所述粒子链相关联的物理约束集,生成针对所述粒子的经调整的位置预测; 基于与所述粒子相关联的第一速度预测因子和基于与在所述粒子链中毗邻于所述粒子存在的第一相邻粒子相关联的第二速度预测因子,生成针对所述粒子的速度预测; 在显示设备上更新所述粒子的当前位置,以反映与所述粒子相关联的经调整的位置预测;和 更新所述粒子的当前速度,以反映与所述粒子相关联的速度预测。
2.如权利要求1所述的计算机实现方法,其中,与所述物理模拟相关联的物理规律集包括牛顿运动定律,且所述方法进一步包括基于所述粒子的当前位置、所述粒子的当前速度、施加在所述粒子上的力的集合和与所述物理模拟相关联的时间步骤,生成与所述粒子相关联的位置预测。
3.如权利要求1所述的计算机实现方法,其中,所述物理约束集包括所述粒子和毗邻于所述粒子存在的第二相邻粒子间的距离约束,所述距离约束反映所述粒子与所述第二相邻粒子之间近似存在第一距离,且所述方法进一步包括通过调整所述的与所述粒子相关联的位置预测,生成针对所述粒子的经调整的位置预测,从而使得所述粒子的所述经调整的位置预测和与所述第二相邻粒子相关联的位置近似地由所述第一距离分隔开。
4.如权利要求1所述的计算机实现方法,其中,所述第一速度预测因子是从与所述粒子相关联的位置预测、与所述粒子`相关联的所述经调整的位置预测和与所述物理模拟相关联的时间步骤得出的。
5.如权利要求1所述的计算机实现方法,其中,所述第二速度预测因子是从与所述第一相邻粒子相关联的位置预测、与所述第一相邻粒子相关联的经调整的位置预测和与所述物理模拟相关联的时间步骤得出的。
6.如权利要求1所述的计算机实现方法,所述方法进一步包括基于所述粒子链内的所述粒子的当前位置生成像素集,且输出所述像素集到所述显示设备,其中所述像素集表示一根毛发或软毛。
7.如权利要求1所述的计算机实现方法,其中,所述物理模拟包括由驻留于视频游戏应用程序内的模拟引擎所生成的实时物理模拟。
8.如权利要求1所述的计算机实现方法,其中,包含多个处理内核的并行处理单元(PPU)配置为至少在包含于所述多个处理内核的第一处理内核和第二处理内核上执行所述物理模拟,且其中,所述第一处理内核和所述第二处理内核各自配置为模拟不同粒子链的动力学。
9.一种计算设备,所述计算设备配置为生成粒子链的物理模拟,包括: 处理单元,所述处理单元配置为: 基于与所述物理模拟相关联的物理规律集生成针对所述粒子链中的粒子的位置预测; 基于所述位置预测和与所述粒子链相关联的物理约束集,生成针对所述粒子的经调整的位置预测; 基于与所述粒子相关联的第一速度预测因子和基于与在所述粒子链中毗邻于所述粒子存在的第一相邻粒子相关联的第二速度预测因子,生成针对所述粒子的速度预测; 在显示设备上更新所述粒子的当前位置,以反映与所述粒子相关联的经调整的位置预测;和 更新所述粒子的当前速度,以反映与所述粒子相关联的速度预测。
10.如权利要求9所述的计算设备,其进一步包括: 存储器单元,所述存储器单元耦连到所述处理单元并存储程序指令,当所述处理单元执行所述程序指令时,所述程序指令使所述处理单元: 生成针对所述粒子链中的粒子的所述位置预测; 生成针对所述粒子的所述经调整的位置预测; 生成针对所述粒子的所述速度预测; 在所述显示设备上更新所述粒子的当前位置;和 更新所述粒子的当 前速度。
【文档编号】G06F17/50GK103870628SQ201310688290
【公开日】2014年6月18日 申请日期:2013年12月16日 优先权日:2012年12月14日
【发明者】马蒂亚斯·米勒菲舍尔, 努塔棚·申探兹, 金泰龙 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1