1.高效的碰撞检测算法
作为物理引擎的基础,VRP的物理引擎系统具有优秀的碰撞检测效率。在进行物理模拟之前,VRP会重新组织模型面片到计算最优化的格式,并且能存储为文件,让再次模拟的时候无需重新计算。碰撞检测之前也经过数次过滤:场景过滤>碰撞组过滤>动/静物体过滤>包围合过滤>碰撞检测,最大可能的排除了碰撞检测时候的计算冗余。
2.真实的模拟刚体动力学特性
VRP场景能够模拟真实的刚体运动,运动物体具有密度、质量、速度、加速度、旋转角速度、冲量等各种现实的物理动力学属性。在发生碰撞、摩擦、受力的运动模拟中,不同的动力学属性能得到不同的运动效果。
3.任意的运动材质
VRP运动物体可以具有不同的运动材质(如橡皮、铁球、冰块),用户可以任意指定物体的弹性、静摩擦力、动摩擦力、空气摩擦阻尼等多种参数达到模拟世界万物在刚体运动中具有的不同效果。
4.支持多种高速运算的碰撞替代体
除了对模型的面片进行预处理参与碰撞检测,VRP还提供了盒形、球形、圆柱形、胶囊型、凸多面体五种在模型形状大致相同的情况下可以使用的替代碰撞体,这些碰撞体拥有高效的碰撞计算效率,大大提高物理模拟的实时性。
5.多种动力学交互手段
用户和物理场景的交互,VRP不仅提供了自由的、真实的动力学交互手段:用户可以对任意物体的任意位置施加推力、扭力、冲力等;也可以对物体动态设置速度、角速度、密度等参数。
6.支持 CONTINUOUS COLLISION DETECTION 连续碰撞检测
如果某个物体运行速度过快,可能会导致该物体无法和得到正确的碰撞检测,比如当一个运动速度很快的子弹穿越了一个钢板,因为运动速度过快而无法检测到碰撞的通道效应将会产生。连续碰撞检测可以将物体每两帧之间的碰撞检测连续化,保证在运动路线中出现的物体都能参与到碰撞检测。
7.大规模运动场景进行局部调度计算
物理引擎和图形引擎在局部调度方面的不同是:当你看不见一个物体的时候,他仍然在运动,也就说仍然在计算。当物理场景过大,运动刚体数量过多的时候,这样的计算量是庞大的。VRP的物理引擎中,可以让运动稳定的物体(如静止下来的物体、匀速转动的物体、匀速运动的物体)在碰撞检测组和非碰撞检测组之间动态的调度,排除了在不会产生碰撞的物体之间进行碰撞计算的计算冗余(比如两个静止下来的物体)。同时,VRP还提供了脚本接口让用户也能参与到动态调整物体碰撞管理。
8.提供多种物体的运动约束连接
物理场景中的任何物体可以通过连接的方式把运动关联起来。比如把一个门以铰链的方式安置在了门框上面,这样,门只能绕着铰链的轴旋转,而门受到的其他方向的力将会因为铰链传递给门框。VRP的物理系统中,提供了铰链连接、球面连接、活塞连接、点在线上的连接、点在面上的连接、粘合连接、距离连接等多种连接方式来关联两个物体的运动。
并且在VRP的物理系统中,物体的运动关联是可断的。当两个关联起来的物体,受到了比较大的拆分力,运动的关联将会自动中断,就像一个门受到很大的力后,铰链断裂后的效果:门离开门框飞了出去。
9.可以模拟场景重力、环境阻尼等环境特性
作为虚拟现实的优势,我们可以模拟一些难以达到的或者不存在的物理环境。比如在水下、太空、月球上的运动模拟。通过对场景的重力、环境阻尼等因素进行调节能达到各种物理实验环境。
10.逼真的流体模拟
VRP提供有流体的模拟,场景中的流体粒子不仅能够参与碰撞,还具有流体自己的动力学特性:粒子之间吸附力、粒子之间的排斥力、流体的流动摩擦力等,能达到逼真的流体效果。可直接应用到管道、排水系统、喷泉、泄洪等案例中去。
11.支持硬件加速
支持PPU加速,对于大规模运动模拟有了硬件支持。
12.支持各种碰撞事件的自定义设置和实时响应
在场景中的物体发生碰撞的时候,用户可以获得通知。并且用户可以自己设置感兴趣的碰撞对象和并且能对事件绑定脚本,这样可以实现在碰撞发生时能产生声音、接触发生时播放动画的效果。
13.真实的布料模拟
VRP具有相当方便的布料模拟系统。用户可以将任何三角形网格的模型设置为布料,模拟过程中,布料以模型顶点为基础,实时生成顶点动画,每个三角形面片都将参与碰撞检测与力反馈。布料模拟中,不仅可以设置布料的抗弯系数,抗拉系数来模拟不同材质的布料,还能给封闭的布料充满气体形成气球。布料能轻松与用户发生交互,甚至可以在受到破坏力的时候被撕裂。
14)自由的力场模拟
能在场景中模拟刮风、水流时候的现象。物体处于力场中,可以因为角度不同,受到的力大小也不同,比如在迎风站立时受到较大的风力,侧风站立时则受到较小的风力。力场所作用的范围也可以随意定制,可以让用户在出门以后受到风力场,而进屋以后却没有风,感觉家的温暖。
15.汽车等交通工具模拟
能随意的构造汽车结构,可以根据由任意车轮来驱动、导向行驶,具有实时的碰撞检测和碰撞力度的反馈。
16.柔体模拟
实时计算的模型各个面的受力生成柔体的顶点动画效果,逼真程度相当惊人。柔体能固定到任何刚体内部,也能将一个刚体固定到柔体内部充当柔体骨架;柔体和布料一样,同样具有撕裂特性,可以用来模拟一些比如器官切割等效果。