实时虚拟场景中碰撞体之间碰撞探测的方法和装置的制造方法_3

文档序号:9728102阅读:来源:国知局
碰撞探测。
[0070]具体地,通过圆柱碰撞体与交集进行碰撞探测来实现圆柱碰撞体与第一二叉空间 分割碰撞体进行碰撞探测。
[0071 ] 上述实时虚拟场景中碰撞体之间碰撞探测的方法,通过将第一二叉空间分割碰撞 体的各个平面向外根据最短距离进行扩展得到第二二叉空间分割碰撞体,且以圆柱碰撞体 的中心点为基准对第一二叉空间分割碰撞体扩展得到扩展外边缘包围盒,将第二二叉空间 分割碰撞体和扩展外边缘包围盒取交集,通过圆柱碰撞体与交集进行碰撞,实现了圆柱碰 撞体与第一二叉空间分割碰撞体的碰撞探测,碰撞探测是为了避免两个碰撞体发生碰撞, 采用圆柱碰撞体与第一二叉空间分割碰撞体的轴对齐包围盒的碰撞探测,相比于传统的碰 撞体以两个轴对齐包围盒进行碰撞探测,不需像轴对齐包围盒一样控制虚拟对象移出整个 身子才能从第一二叉空间分割碰撞体的拐角越过,圆柱碰撞体在拐角处可以平滑的越过, 即只需移出较短的距离即可越过拐角,缩短了移出的距离,在移动速度相同的情况下,提高 了移动效率,且因是平滑的移动,使得操作更流畅。
[0072] 图13为采用圆柱碰撞体碰撞探测使用传统的算法效果和本发明中的碰撞探测的 理论结果示意图。如图13所示,左图为采用圆柱碰撞体按照传统的算法进行碰撞探测,其仍 然需要将圆柱碰撞体移出整个身体然后才能沿着黑色碰撞体底边移动,右图为采用圆柱碰 撞体采用上述实时虚拟场景中碰撞体之间碰撞探测的方法后所能达到的理论结果,圆柱碰 撞体在移动过程中移动的距离较短,移动效率高,且操作流畅。在一个实施例中,上述实时 虚拟场景中碰撞体之间碰撞探测的方法还包括:在将该第一二叉空间分割碰撞体的轴对齐 包围盒进行扩展生成扩展外边缘包围盒的步骤之后,将该扩展外边缘包围盒的四个角分别 添加斜面。
[0073] 其中,该第一二叉空间分割碰撞体中与该扩展外边缘包围盒的斜面对应的平面交 叉线到该斜面的距离为该圆柱碰撞体的半径。
[0074] 通过将扩展外边缘包围盒的四角添加斜面,再得到扩展外边缘包围盒与第二BSP 碰撞体的交集,交集也带有斜面,采用斜面模拟圆角,可进一步方便圆柱碰撞体移过拐角, 进一步缩短了距离,提高了移动效率。
[0075] 图14为一个实施例中扩展外边缘包围盒的四角添加斜面的示意图。如图14所示, 在扩展外边缘包围盒的四个角添加了斜面作为倒角面,即对扩展外边缘包围盒的四个角上 的直角做切割处理形成斜面,直角切割时,切割的部分投影到平面上形成的三角形内的锐 角为45度。
[0076] 在一个实施例中,上述实时虚拟场景中碰撞体之间碰撞探测的方法还包括:将该 第一二叉空间分割碰撞体的轴对齐包围盒进行扩展生成扩展外边缘包围盒的步骤之后,还 包括:将该扩展外边缘包围盒的四个角分别添加圆弧面。
[0077] 其中,该第一二叉空间分割碰撞体中与该扩展外边缘包围盒的圆弧面对应的平面 交叉线到该圆弧面的最短距离为该圆柱碰撞体的半径。
[0078] 通过将扩展外边缘包围盒的四角添加圆弧面,再得到扩展外边缘包围盒与第二 BSP碰撞体的交集,交集也带有圆弧面,采用圆弧面更贴合圆柱碰撞体,可进一步方便圆柱 碰撞体移过拐角,进一步缩短了距离,提高了移动效率。
[0079] 下面结合具体的应用场景说明实时虚拟场景中碰撞体之间碰撞探测的方法的实 现过程,以实时游戏场景为例,圆柱碰撞体为虚拟角色,第一二叉空间分割碰撞体为墙体, 结合图14,其中圆形为圆柱体的二维投影,三角形为第一二叉空间分割碰撞体的二维投影。 碰撞探测的过程包括:
[0080] (1)获取实时游戏场景中虚拟角色所对应的圆柱碰撞体到第一二叉空间分割碰撞 体各个平面的最短距离。
[0081] (2)根据该最短距离扩展该第一二叉空间分割碰撞体的各个平面形成第二二叉空 间分割碰撞体。
[0082] (3)将该第一二叉空间分割碰撞体的轴对齐包围盒进行扩展生成扩展外边缘包围 盒,将该扩展外边缘包围盒的四个角分别添加圆弧面。
[0083] (4)将该生成的扩展外边缘包围盒与该第二二叉空间分割碰撞体取交集。
[0084] (5)将该圆柱碰撞体与该扩展外边缘包围盒与该第二二叉空间分割碰撞体取交集 得到的结果进行碰撞探测。
[0085] 碰撞探测是指探测碰撞体之间是否发生碰撞,发生碰撞后调整圆柱碰撞体原来的 移动方向,绕过第二二叉空间分割碰撞体。
[0086] 圆柱碰撞体投影的圆形同扩展外边缘包围盒与第二二叉空间分割碰撞体所取的 交集进行碰撞探测,即得到圆柱碰撞体的移动路线,如图14所示。
[0087] 图15为一个实施例中实时虚拟场景中碰撞体之间碰撞探测的装置的结构框图。图 15中的实时虚拟场景中碰撞体之间碰撞探测的装置,为实现图4中实时虚拟场景中碰撞体 之间碰撞探测的方法所构建的功能架构,所包含的功能模块的划分不限于本实施例中所列 举的,也可采用其他方式进行划分。如图15所示,一种实时虚拟场景中碰撞体之间碰撞探测 的装置包括距离获取模块1510、扩展模块1520、生成模块1530、取值模块1540、碰撞探测模 块1550。
[0088]距离获取模块1510用于获取虚拟场景中虚拟对象所对应的圆柱碰撞体到第一二 叉空间分割碰撞体各个平面的最短距离。
[0089] 本实施例中,首先采用BSP方法通过面将空间划分为"面内"和"面外"来组成形体。 采用若干平面将空间切割成若干凸体,然后凸体之间以布尔运算组合成复杂的形状。
[0090] 第一二叉空间分割碰撞体是采用BSP划分出来的空间,第一二叉空间分割碰撞体 的面为BSP划分出的空间的表面。
[0091] 虚拟对象可为虚拟场景中可以动态运行的人物或物体等。将虚拟对象配置为圆柱 碰撞体。碰撞体是用于计算物体之间是否碰撞的物体,即实际参与碰撞算法计算的物体。 [0092]该虚拟对象所对应的圆柱碰撞体到第一二叉空间分割碰撞体各个平面的最短距 离为该虚拟对象所对应的圆柱碰撞体接触第一二叉空间分割碰撞体的平面时,该圆柱碰撞 体的中心点到接触的该第一二叉空间分割碰撞体的平面的距离。
[0093]本实施例中,距离获取模块1510还用于若虚拟对象所对应的圆柱碰撞体的轴向与 第一二叉空间分割碰撞体的平面平行,且第一二叉空间分割碰撞体的平面紧贴圆柱碰撞体 的一条侧边线,则虚拟对象所对应的圆柱碰撞体到该第一二叉空间分割碰撞体的平面的最 短距离为圆柱碰撞体的半径;以及
[0094] 若第一二叉空间分割碰撞体的平面紧贴圆柱碰撞体的一个点,则获取并根据圆柱 碰撞体的半径、半高及第一二叉空间分割碰撞体的平面的法向量的XYZ坐标分量,得到圆柱 碰撞体到第一二叉空间分割碰撞体的平面的最短距离。
[0095] 具体地,根据圆柱碰撞体的半径、半高及第一二叉空间分割碰撞体的平面的法向 量的XYZ坐标分量,得到圆柱碰撞体到第一二叉空间分割碰撞体的平面的最短距离的计算 公式为先求取法向量的XY坐标分量的平方根与圆柱碰撞体半径的乘积,再求取圆柱碰撞体 的半高与法向量的Z坐标分量的绝对值的乘积,最后求取两个乘积的和得到,计算公式如下 式⑴:
[0097]式(1)中,S为圆柱碰撞体到第一二叉空间分割碰撞体的平面的最短距离,R为圆柱 碰撞体的半径,X、y、Z为平面的法向量的三个XYZ坐标系下的三个坐标分量,H为圆柱碰撞体 的半高,I Z I为法向量的Z分量的绝对值。
[0098] 扩展模块1520用于根据该最短距离扩展该第一二叉空间分割碰撞体的各个平面 形成第二二叉空间分割碰撞体。
[0099] 本实施例中,将圆柱碰撞体退化为一个点(即中心点),将BSP碰撞体(第一二叉空 间分割碰撞体)的各个平面向外扩展,扩展长度为圆柱碰撞体到该平面的最短距离,形成新 的BSP碰撞体,即第二二叉空间分割碰撞体。
[0100]生成模块1530用于将该第一二叉空间分割碰撞体的轴对齐包围盒进行扩展生成 扩展外边缘包围盒。
[0101] 具体的,生成模块1530还用于将该第一二叉空间分割碰撞体的轴对齐包围盒以圆 柱碰撞体的中心点为基准扫描整个第一二叉空间分割碰撞体轴对齐包围盒,生成扩展外边 缘包围盒。
[0102] 取值模块1540用于将该生成的扩展外边缘包围盒与该第二二叉空间分割碰撞体 取交集。
[0103] 碰撞探测模块1550用于将该圆柱碰撞体与该扩展外边缘包围盒与该第二二叉空 间分割碰撞体取交集得到的结果进行碰撞探测。
[0104] 具体地,通过圆柱碰撞体与交集进行碰撞来实现圆柱碰撞体与第一二叉空间分割 碰撞体进行碰撞。
[0105] 上述实时虚拟场景中碰撞体之间碰撞探测的装置,通过将第一二叉空间分割碰撞 体的各个平面向外根据最短距离进行扩展得到第二二叉空间分割碰撞体,且以圆柱碰撞体 的中心点为基准对第一二叉空间分割碰撞体扩展得到扩展外边缘包围盒,将第二二叉空间 分割碰撞体和扩展外边缘包围盒取交集,通过圆柱碰撞体与交集进行碰撞,实现了圆柱碰 撞体与第一二叉空间分割碰撞体的碰撞探测,碰撞探测是为了避免碰撞体碰撞,采用圆柱 碰撞体与第一二叉空间分割碰撞体的轴对齐包围盒的碰撞探测,相比于传统的碰撞体以两 个轴对齐包围盒进行碰撞探测,不需像轴对齐包围盒一样控制虚拟对象移出整个身子才能 从第一二叉空间分割碰撞体的拐角越过,圆柱碰撞体在拐角处可以平滑的越过,即只
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1