会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利分类库 / 运动;游戏;娱乐活动 / 角色攀爬方法、装置、计算机设备及计算机可读存储介质

色攀爬方法、装置、计算机设备及计算机可读存储介质

申请号 CN202211594445.8 申请日 2022-12-13 公开(公告)号 CN117732074A 公开(公告)日 2024-03-22
申请人 苏州幻塔网络科技有限公司; 发明人 李宁徽; 汤杰;
摘要 本 申请 公开了一种 角 色攀爬方法、装置、计算机设备及计算机可读存储介质,涉及游戏设计技术领域,根据 算法 自适应不同的地形,调整虚拟角色的 姿态 和动作,使得虚拟角色的模型可以紧贴地形,手、脚和腿能够表现得自然合理,身体各个部位处于合适的 位置 ,提升游戏的细节展示和真实感,避免游戏失真,为游戏角色赋予生命 力 ,给玩家带来更加新奇的游戏体验。所述方法包括:在检测到虚拟角色处于攀爬状态的条件下,确定所述虚拟角色胶囊体与所述虚拟角色攀爬对象地形之间的物理 碰撞检测 数据;依据所述物理碰撞检测数据,对所述虚拟角色当前的攀爬姿态进行调整,以使所述虚拟角色模型紧贴所述攀爬对象地形进行攀爬。
权利要求

1.一种色攀爬方法,其特征在于,包括:
在检测到虚拟角色处于攀爬状态的条件下,确定所述虚拟角色胶囊体与所述虚拟角色攀爬对象地形之间的物理碰撞检测数据;
依据所述物理碰撞检测数据,对所述虚拟角色当前的攀爬姿态进行调整,以使所述虚拟角色模型紧贴所述攀爬对象地形进行攀爬。
2.根据权利要求1所述的方法,其特征在于,所述物理碰撞检测数据包括所述虚拟角色与所述攀爬对象地形的碰撞点位置和所述碰撞点位置对应的法线数据,通过所述法线数据计算得到所述虚拟角色胶囊体的朝向,通过所述碰撞点位置计算所述虚拟角色的骨骼模型位置并通过矩阵转换得到所述虚拟角色骨骼模型相对于所述虚拟角色胶囊体的相对位置,将所述相对位置应用,以使所述虚拟角色骨骼模型紧贴所述攀爬对象地形。
3.根据权利要求1所述的方法,其特征在于,所述依据所述物理碰撞检测数据,对所述虚拟角色当前的攀爬姿态进行调整,包括:
以所述虚拟角色的胶囊体为基准,在平方向环形、垂直方向分层向所述攀爬对象进行射线检测,得到法线数据组和碰撞点位置数据组;
基于所述法线数据组计算平均法线值,以所述平均法线值的横轴方向作为所述虚拟角色的朝前方向,计算所述虚拟角色的角色朝向和切斜值,以及按照所述角色朝向和所述切斜值对所述胶囊体的朝向进行调整;
基于所述碰撞点位置数据组计算平均位置值,以所述平均位置值计算所述虚拟角色的骨骼模型位置,对所述骨骼模型位置进行矩阵转换,得到骨骼模型相对于所述胶囊体的相对位置,以及按照所述相对位置对所述虚拟角色的胶囊体进行调整。
4.根据权利要求3所述的方法,其特征在于,所述在水平方向环形、垂直方向分层向所述攀爬对象进行射线检测,得到法线数据组和碰撞点位置数据组,包括:
从所述胶囊体的顶端到底端,将所述胶囊体划分为预设数目的层;
对所述预设数目的层中的每一层执行以下处理:以所述胶囊体为基准,在水平方向上每隔预设角度进行射线检测,以及获取基于射线检测返回的检测结果,将所述检测结果携带的碰撞点位置和法线信息存入缓存数组,直至当前射线检测的角度返回至射线检测的起始角度;
在所述缓存数组中获取在所述预设数目的层中确定的多个法线信息,生成包括所述多个法线信息的所述法线数据组;
在所述缓存数组中获取在所述预设数目的层中确定的多个碰撞点位置,生成包括所述多个碰撞点位置的所述碰撞点位置数据组。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述虚拟角色攀爬的过程中,根据所述虚拟角色在所述攀爬对象地形的攀爬姿态,对所述虚拟角色肢体部分的攀爬肢体参数进行预测,所述虚拟角色攀爬姿态包括所述虚拟角色肢体部分攀爬姿态,所述攀爬肢体参数至少包括肢体放置位置、肢体角度其中任意一项或两项;
根据所述攀爬肢体参数调整所述虚拟角色肢体部分攀爬姿态,以使所述虚拟角色肢体部分模型紧贴所述攀爬对象地形进行攀爬。
6.根据权利要求5所述的方法,其特征在于,所述在所述虚拟角色攀爬的过程中,根据所述虚拟角色在所述攀爬对象地形的攀爬姿态,对所述虚拟角色肢体部分的攀爬肢体参数进行预测,包括:
在所述虚拟角色攀爬过程中,获取所述虚拟角色当前所述攀爬姿态,利用逆向运动学算法,计算所述虚拟角色的肢体部分位置参数,基于所述肢体部分位置参数计算所述虚拟角色的肢体部分的放置位置;
根据所述肢体部分的放置位置与所述攀爬对象地形碰撞点法线信息,计算所述肢体部分旋转的肢体角度;
将所述放置位置和所述肢体角度作为所述攀爬肢体参数。
7.根据权利要求6所述的方法,其特征在于,所述利用逆向运动学算法,计算所述虚拟角色的肢体部分位置参数,基于所述肢体部分位置参数计算所述虚拟角色的肢体部分的放置位置,包括:
以所述虚拟对象的胶囊体当前所处位置为基准,在所述胶囊体顶部竖直方向向上预设高度、水平方向向前预设长度进行球形检测,确定头部位置点,其中,所述胶囊体的高度是所述预设高度的二倍,所述预设长度是所述胶囊体的半径长度的四倍;
在所述胶囊体中间部位水平方向向前所述预设长度进行球形检测,确定中间部分位置点;
利用所述逆向运动学算法,对所述头部位置点和所述中间部分位置点进行计算,得到所述肢体部分位置参数;
按照所述肢体部分位置参数对所述虚拟角色进行调整,以及在调整后的虚拟角色上确定四肢骨骼点;
从所述四肢骨骼点水平向所述攀爬对象进行射线检测,确定所述射线检测在所述攀爬对象上的碰撞点,以及将所述碰撞点作为所述虚拟角色的肢体部分的放置位置。
8.根据权利要求5所述的方法,其特征在于,所述根据所述攀爬肢体参数调整所述虚拟角色肢体部分攀爬姿态,以使所述虚拟角色肢体部分模型紧贴所述攀爬对象地形进行攀爬,包括:
确定所述攀爬肢体参数指示的放置位置,控制所述虚拟角色的四肢由当前位置移动至所述放置位置;
按照所述攀爬肢体参数指示的肢体角度对所述虚拟角色的四肢进行调整;
按照所述虚拟角色的四肢当前所处位置和角度,对所述虚拟角色的关节部分进行位置和角度的调整,以使所述关节部分的动画表现与所述虚拟角色的四肢相匹配。
9.一种角色攀爬装置,其特征在于,包括:
确定模,用于在检测到虚拟角色处于攀爬状态的条件下,确定所述虚拟角色胶囊体与所述虚拟角色攀爬对象地形之间的物理碰撞检测数据;
调整模块,用于依据所述物理碰撞检测数据,对所述虚拟角色当前的攀爬姿态进行调整,以使所述虚拟角色模型紧贴所述攀爬对象地形进行攀爬。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述方法的步骤。

说明书全文

色攀爬方法、装置、计算机设备及计算机可读存储介质

技术领域

[0001] 本申请涉及游戏设计技术领域,特别是涉及一种角色攀爬方法、装置、计算机设备及计算机可读存储介质。

背景技术

[0002] 近年来,游戏设计技术飞速发展,为了更好的游戏体验,游戏开发人员对游戏的要求也越来越高,现在市面上的很多游戏都十分注重玩家在游戏时与游戏世界中的地形、建筑等的交互,所以在游戏中增加了角色的攀爬、翻越等功能,使得游戏的玩法增加,玩家可以体会别样的游戏感受。
[0003] 相关技术中,游戏在设计时,游戏开发人员会在游戏中设置一些可以攀爬的建筑,沿着可以攀爬的建筑制作攀爬路线,或者设置一些特定的攀爬玩法、攀爬场景,这样,玩家在游戏时,便可以控制自己的角色在游戏世界中按照设计的攀爬路线、攀爬玩法以及攀爬场景进行攀爬,实现对游戏世界的探索。
[0004] 在实现本发明的过程中,发明人发现相关技术至少存在以下问题:
[0005] 有些游戏对可以攀爬的地形、建筑、物件等,是有制作标准限制的,比如角度、大小、高度、厚度等等。所以,攀爬时,人物交互的动作按照设定好的动作规范执行,就可以表现得比较合理;但是,如果地形、建筑、物件等是不做任何限制时,交互动作就会表现得不够自然合理了,如抖动、穿模、反关节、浮空等等,游戏的细节展示和真实感较差,导致游戏失真且游戏的角色缺乏生命,无法为玩家带来更新奇的游戏体验。

发明内容

[0006] 有鉴于此,本申请提供了一种角色攀爬方法、装置、计算机设备及计算机可读存储介质,主要目的在于解决目前游戏的细节展示和真实感较差,导致游戏失真且游戏的角色缺乏生命力,无法为玩家带来更新奇的游戏体验的问题。
[0007] 依据本申请第一方面,提供了一种角色攀爬方法,该方法包括:
[0008] 在检测到虚拟角色处于攀爬状态的条件下,确定所述虚拟角色胶囊体与所述虚拟角色攀爬对象地形之间的物理碰撞检测数据;
[0009] 依据所述物理碰撞检测数据,对所述虚拟角色当前的攀爬姿态进行调整,以使所述虚拟角色模型紧贴所述攀爬对象地形进行攀爬。
[0010] 可选地,所述物理碰撞检测数据包括所述虚拟角色与所述攀爬对象地形的碰撞点位置和所述碰撞点位置对应的法线数据,通过所述法线数据计算得到所述虚拟角色胶囊体的朝向,通过所述碰撞点位置计算所述虚拟角色的骨骼模型位置并通过矩阵转换得到所述虚拟角色骨骼模型相对于所述虚拟角色胶囊体的相对位置,将所述相对位置应用,以使所述虚拟角色骨骼模型紧贴所述攀爬对象地形。
[0011] 可选地,所述依据所述物理碰撞检测数据,对所述虚拟角色当前的攀爬姿态进行调整,包括:
[0012] 以所述虚拟角色的胶囊体为基准,在平方向环形、垂直方向分层向所述攀爬对象进行射线检测,得到法线数据组和碰撞点位置数据组;
[0013] 基于所述法线数据组计算平均法线值,以所述平均法线值的横轴方向作为所述虚拟角色的朝前方向,计算所述虚拟角色的角色朝向和切斜值,以及按照所述角色朝向和所述切斜值对所述胶囊体的朝向进行调整;
[0014] 基于所述碰撞点位置数据组计算平均位置值,以所述平均位置值计算所述虚拟角色的骨骼模型位置,对所述骨骼模型位置进行矩阵转换,得到骨骼模型相对于所述胶囊体的相对位置,以及按照所述相对位置对所述虚拟角色的胶囊体进行调整。
[0015] 可选地,所述在水平方向环形、垂直方向分层向所述攀爬对象进行射线检测,得到法线数据组和碰撞点位置数据组,包括:
[0016] 从所述胶囊体的顶端到底端,将所述胶囊体划分为预设数目的层;
[0017] 对所述预设数目的层中的每一层执行以下处理:以所述胶囊体为基准,在水平方向上每隔预设角度进行射线检测,以及获取基于射线检测返回的检测结果,将所述检测结果携带的碰撞点位置和法线信息存入缓存数组,直至当前射线检测的角度返回至射线检测的起始角度;
[0018] 在所述缓存数组中获取在所述预设数目的层中确定的多个法线信息,生成包括所述多个法线信息的所述法线数据组;
[0019] 在所述缓存数组中获取在所述预设数目的层中确定的多个碰撞点位置,生成包括所述多个碰撞点位置的所述碰撞点位置数据组。
[0020] 可选地,所述方法还包括:
[0021] 在所述虚拟角色攀爬的过程中,根据所述虚拟角色在所述攀爬对象地形的攀爬姿态,对所述虚拟角色肢体部分的攀爬肢体参数进行预测,所述虚拟角色攀爬姿态包括所述虚拟角色肢体部分攀爬姿态,所述攀爬肢体参数至少包括肢体放置位置、肢体角度其中任意一项或两项;
[0022] 根据所述攀爬肢体参数调整所述虚拟角色肢体部分攀爬姿态,以使所述虚拟角色肢体部分模型紧贴所述攀爬对象地形进行攀爬。
[0023] 可选地,所述在所述虚拟角色攀爬的过程中,根据所述虚拟角色在所述攀爬对象地形的攀爬姿态,对所述虚拟角色肢体部分的攀爬肢体参数进行预测,包括:
[0024] 在所述虚拟角色攀爬过程中,获取所述虚拟角色当前所述攀爬姿态,利用逆向运动学算法,计算所述虚拟角色的肢体部分位置参数,基于所述肢体部分位置参数计算所述虚拟角色的肢体部分的放置位置;
[0025] 根据所述肢体部分的放置位置与所述攀爬对象地形碰撞点法线信息,计算所述肢体部分旋转的肢体角度;
[0026] 将所述放置位置和所述肢体角度作为所述攀爬肢体参数。
[0027] 可选地,所述利用逆向运动学算法,计算所述虚拟角色的肢体部分位置参数,基于所述肢体部分位置参数计算所述虚拟角色的肢体部分的放置位置,包括:
[0028] 以所述虚拟对象的胶囊体当前所处位置为基准,在所述胶囊体顶部竖直方向向上预设高度、水平方向向前预设长度进行球形检测,确定头部位置点,其中,所述胶囊体的高度是所述预设高度的二倍,所述预设长度是所述胶囊体的半径长度的四倍;
[0029] 在所述胶囊体中间部位水平方向向前所述预设长度进行球形检测,确定中间部分位置点;
[0030] 利用所述逆向运动学算法,对所述头部位置点和所述中间部分位置点进行计算,得到所述肢体部分位置参数;
[0031] 按照所述肢体部分位置参数对所述虚拟角色进行调整,以及在调整后的虚拟角色上确定四肢骨骼点;
[0032] 从所述四肢骨骼点水平向所述攀爬对象进行射线检测,确定所述射线检测在所述攀爬对象上的碰撞点,以及将所述碰撞点作为所述虚拟角色的肢体部分的放置位置。
[0033] 可选地,所述方法还包括:
[0034] 当从所述四肢骨骼点水平向所述攀爬对象进行的射线检测未与所述攀爬对象发生碰撞时,从所述中间部分位置点水平向所述攀爬对象进行射线检测,确定所述射线检测在所述攀爬对象上的碰撞点作为基准点;
[0035] 获取固定偏移量,以所述四肢骨骼点为起始向所述基准点的方向移动所述固定偏移量,确定一位置点,以及将所述位置点作为所述虚拟角色的肢体部分的放置位置。
[0036] 可选地,所述根据所述肢体部分的放置位置与所述攀爬对象地形碰撞点法线信息,计算所述肢体部分旋转的肢体角度,包括:
[0037] 在所述肢体部分上确定多个预设位置点,分别确定所述多个预设位置点中每个预设位置点与所述攀爬对象的碰撞点,以及获取碰撞点的碰撞点法线信息,得到多个碰撞点法线信息;
[0038] 对所述多个碰撞点法线信息进行向量和计算,得到所述肢体部分旋转的肢体角度。
[0039] 可选地,所述根据所述攀爬肢体参数调整所述虚拟角色肢体部分攀爬姿态,以使所述虚拟角色肢体部分模型紧贴所述攀爬对象地形进行攀爬,包括:
[0040] 确定所述攀爬肢体参数指示的放置位置,控制所述虚拟角色的四肢由当前位置移动至所述放置位置;
[0041] 按照所述攀爬肢体参数指示的肢体角度对所述虚拟角色的四肢进行调整;
[0042] 按照所述虚拟角色的四肢当前所处位置和角度,对所述虚拟角色的关节部分进行位置和角度的调整,以使所述关节部分的动画表现与所述虚拟角色的四肢相匹配。
[0043] 依据本申请第二方面,提供了一种角色攀爬装置,该装置包括:
[0044] 确定模,用于在检测到虚拟角色处于攀爬状态的条件下,确定所述虚拟角色胶囊体与所述虚拟角色攀爬对象地形之间的物理碰撞检测数据;
[0045] 调整模块,用于依据所述物理碰撞检测数据,对所述虚拟角色当前的攀爬姿态进行调整,以使所述虚拟角色模型紧贴所述攀爬对象地形进行攀爬。
[0046] 可选地,所述物理碰撞检测数据包括所述虚拟角色与所述攀爬对象地形的碰撞点位置和所述碰撞点位置对应的法线数据,通过所述法线数据计算得到所述虚拟角色胶囊体的朝向,通过所述碰撞点位置计算所述虚拟角色的骨骼模型位置并通过矩阵转换得到所述虚拟角色骨骼模型相对于所述虚拟角色胶囊体的相对位置,将所述相对位置应用,以使所述虚拟角色骨骼模型紧贴所述攀爬对象地形。
[0047] 可选地,所述调整模块,用于以所述虚拟角色的胶囊体为基准,在水平方向环形、垂直方向分层向所述攀爬对象进行射线检测,得到法线数据组和碰撞点位置数据组;基于所述法线数据组计算平均法线值,以所述平均法线值的横轴方向作为所述虚拟角色的朝前方向,计算所述虚拟角色的角色朝向和切斜值,以及按照所述角色朝向和所述切斜值对所述胶囊体的朝向进行调整;基于所述碰撞点位置数据组计算平均位置值,以所述平均位置值计算所述虚拟角色的骨骼模型位置,对所述骨骼模型位置进行矩阵转换,得到骨骼模型相对于所述胶囊体的相对位置,以及按照所述相对位置对所述虚拟角色的胶囊体进行调整。
[0048] 可选地,所述调整模块,用于从所述胶囊体的顶端到底端,将所述胶囊体划分为预设数目的层;对所述预设数目的层中的每一层执行以下处理:以所述胶囊体为基准,在水平方向上每隔预设角度进行射线检测,以及获取基于射线检测返回的检测结果,将所述检测结果携带的碰撞点位置和法线信息存入缓存数组,直至当前射线检测的角度返回至射线检测的起始角度;在所述缓存数组中获取在所述预设数目的层中确定的多个法线信息,生成包括所述多个法线信息的所述法线数据组;在所述缓存数组中获取在所述预设数目的层中确定的多个碰撞点位置,生成包括所述多个碰撞点位置的所述碰撞点位置数据组。
[0049] 可选地,所述装置还包括:
[0050] 预测模块,用于在所述虚拟角色攀爬的过程中,根据所述虚拟角色在所述攀爬对象地形的攀爬姿态,对所述虚拟角色肢体部分的攀爬肢体参数进行预测,所述虚拟角色攀爬姿态包括所述虚拟角色肢体部分攀爬姿态,所述攀爬肢体参数至少包括肢体放置位置、肢体角度其中任意一项或两项;
[0051] 所述调整模块,还用于根据所述攀爬肢体参数调整所述虚拟角色肢体部分攀爬姿态,以使所述虚拟角色肢体部分模型紧贴所述攀爬对象地形进行攀爬。
[0052] 可选地,所述预测模块,用于在所述虚拟角色攀爬过程中,获取所述虚拟角色当前所述攀爬姿态,利用逆向运动学算法,计算所述虚拟角色的肢体部分位置参数,基于所述肢体部分位置参数计算所述虚拟角色的肢体部分的放置位置;根据所述肢体部分的放置位置与所述攀爬对象地形碰撞点法线信息,计算所述肢体部分旋转的肢体角度;将所述放置位置和所述肢体角度作为所述攀爬肢体参数。
[0053] 可选地,所述预测模块,用于以所述虚拟对象的胶囊体当前所处位置为基准,在所述胶囊体顶部竖直方向向上预设高度、水平方向向前预设长度进行球形检测,确定头部位置点,其中,所述胶囊体的高度是所述预设高度的二倍,所述预设长度是所述胶囊体的半径长度的四倍;在所述胶囊体中间部位水平方向向前所述预设长度进行球形检测,确定中间部分位置点;利用所述逆向运动学算法,对所述头部位置点和所述中间部分位置点进行计算,得到所述肢体部分位置参数;按照所述肢体部分位置参数对所述虚拟角色进行调整,以及在调整后的虚拟角色上确定四肢骨骼点;从所述四肢骨骼点水平向所述攀爬对象进行射线检测,确定所述射线检测在所述攀爬对象上的碰撞点,以及将所述碰撞点作为所述虚拟角色的肢体部分的放置位置。
[0054] 可选地,所述预测模块,还用于当从所述四肢骨骼点水平向所述攀爬对象进行的射线检测未与所述攀爬对象发生碰撞时,从所述中间部分位置点水平向所述攀爬对象进行射线检测,确定所述射线检测在所述攀爬对象上的碰撞点作为基准点;获取固定偏移量,以所述四肢骨骼点为起始向所述基准点的方向移动所述固定偏移量,确定一位置点,以及将所述位置点作为所述虚拟角色的肢体部分的放置位置。
[0055] 可选地,所述预测模块,用于在所述肢体部分上确定多个预设位置点,分别确定所述多个预设位置点中每个预设位置点与所述攀爬对象的碰撞点,以及获取碰撞点的碰撞点法线信息,得到多个碰撞点法线信息;对所述多个碰撞点法线信息进行向量和计算,得到所述肢体部分旋转的肢体角度。
[0056] 可选地,所述调整模块,用于确定所述攀爬肢体参数指示的放置位置,控制所述虚拟角色的四肢由当前位置移动至所述放置位置;按照所述攀爬肢体参数指示的肢体角度对所述虚拟角色的四肢进行调整;按照所述虚拟角色的四肢当前所处位置和角度,对所述虚拟角色的关节部分进行位置和角度的调整,以使所述关节部分的动画表现与所述虚拟角色的四肢相匹配。
[0057] 依据本申请第三方面,提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面中任一项所述方法的步骤。
[0058] 依据本申请第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面中任一项所述的方法的步骤。
[0059] 借由上述技术方案,本申请提供的一种角色攀爬方法、装置、计算机设备及计算机可读存储介质,本申请在检测到虚拟角色处于攀爬状态的条件下,确定虚拟角色胶囊体与虚拟角色攀爬对象地形之间的物理碰撞检测数据,依据物理碰撞检测数据,对虚拟角色当前的攀爬姿态进行调整,以使虚拟角色模型紧贴攀爬对象地形进行攀爬,根据算法自适应不同的地形,调整虚拟角色的姿态和动作,使得虚拟角色的模型可以紧贴地形,手、脚和腿能够表现得自然合理,身体各个部位处于合适的位置,提升游戏的细节展示和真实感,避免游戏失真,为游戏角色赋予生命力,给玩家带来更加新奇的游戏体验。
[0060] 上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。附图说明
[0061] 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0062] 图1示出了本申请实施例提供的一种角色攀爬方法流程示意图;
[0063] 图2A示出了本申请实施例提供的另一种角色攀爬方法流程示意图;
[0064] 图2B示出了本申请实施例提供的一种角色攀爬方法的示意图;
[0065] 图2C示出了本申请实施例提供的一种角色攀爬方法的示意图;
[0066] 图2D示出了本申请实施例提供的一种角色攀爬方法的示意图;
[0067] 图2E示出了本申请实施例提供的一种角色攀爬方法的示意图;
[0068] 图2F示出了本申请实施例提供的一种角色攀爬方法的示意图;
[0069] 图2G示出了本申请实施例提供的一种角色攀爬方法流程示意图;
[0070] 图3示出了本申请实施例提供的一种角色攀爬装置的结构示意图;
[0071] 图4示出了本申请实施例提供的一种计算机设备的装置结构示意图。

具体实施方式

[0072] 下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。
[0073] 本申请实施例提供了一种角色攀爬方法,如图1所示,该方法包括:
[0074] 101、在检测到虚拟角色处于攀爬状态的条件下,确定虚拟角色胶囊体与虚拟角色攀爬对象地形之间的物理碰撞检测数据。
[0075] 申请人认识到,有些游戏对可以攀爬的地形、建筑、物件等,是有制作标准限制的,比如角度、大小、高度、厚度等等,所以攀爬时,人物交互的动作按照设定好的动作规范执行,就可以表现得比较合理。但是,如果地形、建筑、物件等是不做任何限制时,交互动作就会表现得不够自然合理了,如抖动、穿模、反关节、浮空等等。因此,本申请提出了一种角色攀爬方法,在检测到虚拟角色处于攀爬状态的条件下,确定虚拟角色胶囊体与虚拟角色攀爬对象地形之间的物理碰撞检测数据,依据物理碰撞检测数据,对虚拟角色当前的攀爬姿态进行调整,以使虚拟角色模型紧贴攀爬对象地形进行攀爬,在不限制攀爬路线,地形、建筑、物件等障碍制作不做任何限制的情况下,当游戏人物的虚拟角色进入攀爬状态以后,虚拟角色在和攀爬地形做动作交互时,虚拟角色根据不同的地形,根据算法可以自适应地形,调整虚拟角色的姿态和动作,使得虚拟角色的模型可以紧贴地形,手、脚和腿能够表现得自然合理,身体各个部位处于合适的位置,进行攀爬、攀爬跳跃、攀爬下滑和翻越等,并且不会出现诸如攀爬时候的人物无规则抖动;虚拟角色模型和地形、建筑、物件相互穿模;人物手脚腿紧贴地形时出现反关节;人物模型出现浮空的情况等等。通过本申请的技术方案,能够提升游戏的细节展示和真实感,避免游戏失真,为游戏角色赋予生命力,给玩家带来更加新奇的游戏体验。
[0076] 本申请的技术方案可以应用于基于游戏引擎开发的单机游戏、网络游戏或者虚拟世界中,游戏引擎具体可以是UE4(Unreal Engine 4,虚幻引擎4)、UE5(Unreal Engine 5,虚幻引擎5)、Untiy等游戏引擎,本申请对此不进行具体限定。在本申请实施例中,在检测到虚拟角色处于攀爬状态的条件下,需要确定虚拟角色胶囊体与虚拟角色攀爬对象地形之间的物理碰撞检测数据,物理碰撞检测数据包括虚拟角色与攀爬对象地形的碰撞点位置和碰撞点位置对应的法线数据,后续利用物理碰撞检测数据进行计算,得出与地形相匹配的倾斜角度,以及虚拟角色的模型和地形之间保持的合适距离,保证虚拟角色紧贴地形,既不会出现虚拟角色的模型和地形太近而出现穿模的情况,又不会出现虚拟角色的模型和地形太远而出现虚拟角色浮空于地形的情况。
[0077] 102、依据物理碰撞检测数据,对虚拟角色当前的攀爬姿态进行调整,以使虚拟角色模型紧贴攀爬对象地形进行攀爬。
[0078] 在本申请实施例中,计算得到了物理碰撞检测数据后,便可以依据物理碰撞检测数据,对虚拟角色当前的攀爬姿态进行调整,以使虚拟角色模型紧贴攀爬对象地形进行攀爬。
[0079] 本申请实施例提供的方法,在检测到虚拟角色处于攀爬状态的条件下,确定虚拟角色胶囊体与虚拟角色攀爬对象地形之间的物理碰撞检测数据,依据物理碰撞检测数据,对虚拟角色当前的攀爬姿态进行调整,以使虚拟角色模型紧贴攀爬对象地形进行攀爬,根据算法自适应不同的地形,调整虚拟角色的姿态和动作,使得虚拟角色的模型可以紧贴地形,手、脚和腿能够表现得自然合理,身体各个部位处于合适的位置,提升游戏的细节展示和真实感,避免游戏失真,为游戏角色赋予生命力,给玩家带来更加新奇的游戏体验。
[0080] 进一步的,作为上述实施例具体实施方式的细化和扩展,为了完整说明本实施例的具体实施过程,本申请实施例提供了另一种角色攀爬方法,如图2A所示,该方法包括:
[0081] 201、在检测到虚拟角色处于攀爬状态的条件下,确定虚拟角色胶囊体与虚拟角色攀爬对象地形之间的物理碰撞检测数据。
[0082] 在游戏中虚拟角色的碰撞是由虚拟角色的胶囊体和地形进行物理检测碰撞负责的,因此,如果地形或者墙面不够平整,很容易出现因为一个凸起物导致胶囊体被顶出地形,给人感觉角色是浮在空中的感觉。为了解决这个问题,本申请实施例在检测到虚拟角色处于攀爬状态的条件下,确定虚拟角色胶囊体与虚拟角色攀爬对象地形之间的物理碰撞检测数据,物理碰撞检测数据包括虚拟角色与攀爬对象地形的碰撞点位置和碰撞点位置对应的法线数据,通过法线数据计算得到虚拟角色胶囊体的朝向,通过碰撞点位置计算虚拟角色的骨骼模型位置并通过矩阵转换得到虚拟角色骨骼模型相对于虚拟角色胶囊体的相对位置,将相对位置应用,以使虚拟角色骨骼模型紧贴攀爬对象地形。
[0083] 在一个可选地实施方案中,可以以虚拟角色的胶囊体为基准,在水平方向环形、垂直方向分层向攀爬对象进行射线检测,得到法线数据组和碰撞点位置数据组作为物理碰撞检测数据,具体过程如下:
[0084] 首先,从胶囊体的顶端到底端,将胶囊体划分为预设数目的层。随后,对预设数目的层中的每一层执行以下处理:以胶囊体为基准,在水平方向上每隔预设角度进行射线检测,以及获取基于射线检测返回的检测结果,将检测结果携带的碰撞点位置和法线信息存入缓存数组,直至当前射线检测的角度返回至射线检测的起始角度。接下来,在缓存数组中获取在预设数目的层中确定的多个法线信息,生成包括多个法线信息的法线数据组,并在缓存数组中获取在预设数目的层中确定的多个碰撞点位置,生成包括多个碰撞点位置的碰撞点位置数据组。
[0085] 实际上上述过程也即是水平方向通过360°环形检测地形,垂直方向通过胶囊体由上往下分层检测地形,进而得到一组地形的碰撞点位置和对应的法线数据作为物理碰撞检测数据。具体参见图2B中所示的平视图,图中可以看到,本申请实施例中把水平面360°分成60份,也就是每6°发出一条射线,环形检测虚拟角色周围地形,如果检测到地形,就把检测到的碰撞点的位置和法线信息存入缓存数组;如果没有检测到,则返回。从平视图中可以看到,本申请实施例中从胶囊体顶端到低端,分成10份,做上述环形检测,如果检测到数据,就存入缓存数组,如果没有检测到,就返回。这样,通过这一系列过程,会得到0组到10组检测数据,把这些组的检测数据作为物理碰撞检测数据。
[0086] 需要说明的是,环形检测中把360°分成多少份(也即每隔多少度发出一条射线),还有分层检测中把胶囊体高度分成多少份(也即预设数目的层具体数量),都是可以配置的,分成份数越多,检测越精细,同时,功耗也越大。本申请实施例在效果和功耗做出平衡,优选60份和10层。
[0087] 202、依据物理碰撞检测数据,对虚拟角色当前的攀爬姿态进行调整,以使虚拟角色模型紧贴攀爬对象地形进行攀爬。
[0088] 在本申请实施例中,获取到物理碰撞检测数据后,便可以依据物理碰撞检测数据,对虚拟角色当前的攀爬姿态进行调整,以使虚拟角色模型紧贴攀爬对象地形进行攀爬,具体调整过程如下:
[0089] 一方面,基于法线数据组计算平均法线值,以平均法线值的横轴方向作为虚拟角色的朝前方向,计算虚拟角色的角色朝向和切斜值,以及按照角色朝向和切斜值对胶囊体的朝向进行调整。
[0090] 另一方面,基于碰撞点位置数据组计算平均位置值,以平均位置值计算虚拟角色的骨骼模型位置,对骨骼模型位置进行矩阵转换,得到骨骼模型相对于胶囊体的相对位置,以及按照相对位置对虚拟角色的胶囊体进行调整。
[0091] 也就是说,通过物理碰撞检测数据中的法线数据,求得平均值法线值,以此平均值法线的X轴方向作为虚拟角色的朝前方向,计算出虚拟角色的朝向和切斜值,设置胶囊体的朝向;而通过碰撞点位置,求得平均位置数据,以此平均位置值,计算出虚拟角色的Mesh(网格)骨骼模型的位置,通过矩阵转换成Mesh骨骼模型相对于胶囊体的相对位置,并应用,从而让Mesh骨骼模型紧贴地形。其中,Mesh骨骼模型是指虚拟角色整个身体的骨架模型,矩阵转换是把射线检测出来的世界坐标系中的矩阵转换成本地坐标系的矩阵,因为射线检测的位置都是游戏大世界的世界坐标系,要转成胶囊体的本地坐标系,方便设置Mesh骨骼模型对于胶囊体的相对位置,如图2C所示,图2C中椭圆形表示胶囊体,椭圆形中的火柴人表示Mesh骨骼模型,图2C中①所示是Mesh骨骼模型的原始文件,而图2C中②所示便是从原始位置矩阵转换后确定的Mesh骨骼模型的最终位置。
[0092] 203、在虚拟角色攀爬的过程中,根据虚拟角色在攀爬对象地形的攀爬姿态,对虚拟角色肢体部分的攀爬肢体参数进行预测。
[0093] 通过上述步骤201至步骤202中的过程,在攀爬状态下,计算出了虚拟角色和地形保持合理位置的情况下后,在本申请实施例中,还可以利用逆向运动学算法,计算出虚拟角色的手、脚、腿应该放置的位置、角度以及旋转,使得手和脚需要紧紧贴合地形,腿的位置和角度也要合理自然,不会因为不停的攀爬移动而出现手脚或者身体的不停抖动的情况,更不会出现手脚抓在地形墙面上,而手臂或者腿部关节出现反关节的不自然不合理的情况。
[0094] 其中,虚拟角色攀爬姿态包括虚拟角色肢体部分攀爬姿态,攀爬肢体参数至少包括肢体放置位置、肢体角度其中任意一项或两项。在虚拟角色攀爬过程中,需要获取虚拟角色当前攀爬姿态,利用逆向运动学算法,计算虚拟角色的肢体部分位置参数,基于肢体部分位置参数计算虚拟角色的肢体部分的放置位置。接着,根据肢体部分的放置位置与攀爬对象地形碰撞点法线信息,计算肢体部分旋转的肢体角度,将放置位置和肢体角度作为攀爬肢体参数。
[0095] 具体地,在计算攀爬肢体参数中的肢体放置位置时,可以以虚拟对象的胶囊体当前所处位置为基准,在胶囊体顶部竖直方向向上预设高度、水平方向向前预设长度进行球形检测,确定头部位置点,其中,胶囊体的高度是预设高度的二倍,预设长度是胶囊体的半径长度的四倍。随后,在胶囊体中间部位水平方向向前预设长度进行球形检测,确定中间部分位置点,利用逆向运动学算法,对头部位置点和中间部分位置点进行计算,得到肢体部分位置参数。接下来,按照肢体部分位置参数对虚拟角色进行调整,以及在调整后的虚拟角色上确定四肢骨骼点,从四肢骨骼点水平向攀爬对象进行射线检测,确定射线检测在攀爬对象上的碰撞点,以及将碰撞点作为虚拟角色的肢体部分的放置位置。需要说明的是,有可能从四肢骨骼点水平向攀爬对象进行的射线检测未与攀爬对象发生碰撞,在这种情况下,需要从中间部分位置点水平向攀爬对象进行射线检测,确定射线检测在攀爬对象上的碰撞点作为基准点,获取固定偏移量,以四肢骨骼点为起始向基准点的方向移动固定偏移量,确定一位置点,以及将位置点作为虚拟角色的肢体部分的放置位置。
[0096] 实际应用的过程中,由于本申请的技术方案应用于利用UE4等开发引擎开发的游戏中,因此,在计算攀爬肢体参数时,以左手为例,UE4中左手的IK位置IKLeftHandVines和旋转LeftHandVinesRot是在动画骨骼运算中使用的两个参数来计算IK的,这两个值将会在虚拟角色攀爬时,在更新地形算法的函数中进行计算得到,然后更新到虚拟角色的动画骨骼运算中的变量里,并在IK应用计算使用。其中,IKLeftHandVines作为末端受动器的位置,LeftHandVinesRot作为IK旋转解得唯一性确认参数;首先使用区分是通过传入具体手脚为参数,通过CheckIKByType函数,调整人物整体的旋转,按照Z值进行排序,取最上和最下两点。如图2D所示,最上一点为VOSHead(也即2D_1点),VOSHead是胶囊体位置向上0.5个胶囊体半高位置且水平向前4个胶囊体半径长度的球形检测(检测半径为10)确定的,也即上述过程提到的头部位置点;而最下一点为VOSMiddle(也即2D_2点),VOSMiddle是虚拟角色胶囊体位置水平向前4个胶囊体半径长度的球形检测(检测半径为10)确定的,也即上述过程提到的中间部分位置点。需要说明的是,为了准确计算,还可以确定VOSCapsule(也即2D_3点),VOSCapsule同VOSMiddle,但是使用的是胶囊体检测。然后计算出VinesVectorOffset用作动画骨骼运算中做盆骨骨骼位移的位移参数,计算手部IK旋转的是通过CheckIKByType函数,对左右手都进行一次计算得到动画骨骼运算中需要的参数IKLeftHandVinesC和LeftHandVinesRotC。接着,如图2E所示,从骨骼点VBHandL向正前方检测,得到在墙上的碰撞点。
[0097] 而如图2F所示便是上面描述的没有获取到碰撞点的情况,虚拟角色在边缘攀爬,从四肢骨骼点水平向攀爬对象进行的射线检测未与攀爬对象发生碰撞,因此,需要确定射线检测在攀爬对象上的碰撞点作为基准点;随后,获取固定偏移量,以四肢骨骼点为起始向基准点的方向移动固定偏移量,确定一位置点,以及将位置点作为虚拟角色的肢体部分的放置位置。这样,通过两次检测便确定了虚拟角色的肢体部分的放置位置。
[0098] 虚拟角色的肢体部分的放置位置确定后,为了使放置的肢体部分符合真实情况,避免发生扭曲,本申请实施例还会计算肢体部分的旋转角度,以便后续完成肢体部分的放置后,再按照旋转角度进行手掌、脚掌等的调整,使肢体部分的表现更加自然。具体地,在计算旋转角度时,需要在肢体部分上确定多个预设位置点,分别确定多个预设位置点中每个预设位置点与攀爬对象的碰撞点,以及获取碰撞点的碰撞点法线信息,得到多个碰撞点法线信息,并对多个碰撞点法线信息进行向量和计算,得到肢体部分旋转的肢体角度。实际应用的过程中,可以通过VBFinger1(食指)、VBFinger4(小拇指)、VBHand(手掌)3个点,获取由碰撞点法线计算出手掌的旋转角度。需要说明的是,法线信息也可以以指根位置获取,这样,得到的肢体角度便使手掌心的方向;具体地,根据手部的旋转方向和碰撞点的法向量可以分为垂直墙面、水平面、垂直于投影平面、斜面这四种情况。
[0099] 204、根据攀爬肢体参数调整虚拟角色肢体部分攀爬姿态,以使虚拟角色肢体部分模型紧贴攀爬对象地形进行攀爬。
[0100] 在本申请实施例中,计算得到攀爬肢体参数后,便可以根据攀爬肢体参数调整虚拟角色肢体部分攀爬姿态,以使虚拟角色肢体部分模型紧贴攀爬对象地形进行攀爬。在一个可选地实施方案中,可以确定攀爬肢体参数指示的放置位置,控制虚拟角色的四肢由当前位置移动至放置位置,一方面按照攀爬肢体参数指示的肢体角度对虚拟角色的四肢进行调整,另一方面按照虚拟角色的四肢当前所处位置和角度,对虚拟角色的关节部分进行位置和角度的调整,以使关节部分的动画表现与虚拟角色的四肢相匹配。
[0101] 实际应用的过程中,在UE4中,继续及左手为例,UE4中的OutRotation便是本申请实施例需要的LeftHandVinesRotC,将其赋值给动画骨骼运算中的变量,在动画骨骼位移运算用得以应用,就可以实现左手IK的动作表现了。
[0102] 需要说明的是,上面步骤201至步骤203中的过程描述的是在一动画中角色攀爬的计算过程,实际应用的过程中,多帧的积累才能够形成动画,因此,可以重复执行本申请的技术方案,实现每帧的攀爬调整,得到自然真实的攀爬效果。这样,在开放世界类型的游戏中存在丰富的地形,不同的地形能够提供不一样的玩法体验,并在此基础上实现各种演出。攀爬时,玩家人物角色和地形的交互时,人物的动作表现是否自然合理,特别是对地形没有做任何限制的情况下,会给玩家展示更多的游戏细节和真实感,让玩家可以更加沉浸地体验游戏,感受游戏的魅力。
[0103] 综上所述,本申请的技术方案总结如下:
[0104] 如图2G所示,游戏开始后,游戏场景初始化默认数据,持续检测玩家的虚拟角色的状态,判断虚拟角色是否处于攀爬状态。若未处于攀爬状态,则结束流程即可,而若处于攀爬状态,则物理碰撞检测数据修正虚拟角色胶囊体的朝向、切斜和位置。同时,持续检测虚拟角色是否静止,如果没有静止,表示已经完成了攀爬肢体参数的预测,按照预测的攀爬肢体参数保持运动即可;而如果虚拟角色当前处于静止状态,则表示需要对虚拟角色在下一帧中的攀爬肢体参数进行预测,因此,扫描计算盆骨调整位置,计算四肢的放置位置和旋转角度,修正角色骨骼模型相对于胶囊体的位置,将计算得到的这些数据和位置应用,完成角色的攀爬表现。接着,如果接下来的地形还满足继续攀爬的条件,则继续对所述虚拟角色肢体部分的攀爬肢体参数进行预测,而如果地形不满足继续攀爬的条件,则控制虚拟角色退出攀爬状态,并清除数据。
[0105] 本申请实施例提供的方法,在检测到虚拟角色处于攀爬状态的条件下,确定虚拟角色胶囊体与虚拟角色攀爬对象地形之间的物理碰撞检测数据,依据物理碰撞检测数据,对虚拟角色当前的攀爬姿态进行调整,以使虚拟角色模型紧贴攀爬对象地形进行攀爬,根据算法自适应不同的地形,调整虚拟角色的姿态和动作,使得虚拟角色的模型可以紧贴地形,手、脚和腿能够表现得自然合理,身体各个部位处于合适的位置,提升游戏的细节展示和真实感,避免游戏失真,为游戏角色赋予生命力,给玩家带来更加新奇的游戏体验。
[0106] 进一步地,作为图1所述方法的具体实现,本申请实施例提供了一种角色攀爬装置,如图3所示,所述装置包括:确定模块301和调整模块302。
[0107] 该确定模块301,用于在检测到虚拟角色处于攀爬状态的条件下,确定所述虚拟角色胶囊体与所述虚拟角色攀爬对象地形之间的物理碰撞检测数据;
[0108] 该调整模块302,用于依据所述物理碰撞检测数据,对所述虚拟角色当前的攀爬姿态进行调整,以使所述虚拟角色模型紧贴所述攀爬对象地形进行攀爬。
[0109] 在具体的应用场景中,所述物理碰撞检测数据包括所述虚拟角色与所述攀爬对象地形的碰撞点位置和所述碰撞点位置对应的法线数据,通过所述法线数据计算得到所述虚拟角色胶囊体的朝向,通过所述碰撞点位置计算所述虚拟角色的骨骼模型位置并通过矩阵转换得到所述虚拟角色骨骼模型相对于所述虚拟角色胶囊体的相对位置,将所述相对位置应用,以使所述虚拟角色骨骼模型紧贴所述攀爬对象地形。
[0110] 在具体的应用场景中,该调整模块302,用于以所述虚拟角色的胶囊体为基准,在水平方向环形、垂直方向分层向所述攀爬对象进行射线检测,得到法线数据组和碰撞点位置数据组;基于所述法线数据组计算平均法线值,以所述平均法线值的横轴方向作为所述虚拟角色的朝前方向,计算所述虚拟角色的角色朝向和切斜值,以及按照所述角色朝向和所述切斜值对所述胶囊体的朝向进行调整;基于所述碰撞点位置数据组计算平均位置值,以所述平均位置值计算所述虚拟角色的骨骼模型位置,对所述骨骼模型位置进行矩阵转换,得到骨骼模型相对于所述胶囊体的相对位置,以及按照所述相对位置对所述虚拟角色的胶囊体进行调整。
[0111] 在具体的应用场景中,该调整模块302,用于从所述胶囊体的顶端到底端,将所述胶囊体划分为预设数目的层;对所述预设数目的层中的每一层执行以下处理:以所述胶囊体为基准,在水平方向上每隔预设角度进行射线检测,以及获取基于射线检测返回的检测结果,将所述检测结果携带的碰撞点位置和法线信息存入缓存数组,直至当前射线检测的角度返回至射线检测的起始角度;在所述缓存数组中获取在所述预设数目的层中确定的多个法线信息,生成包括所述多个法线信息的所述法线数据组;在所述缓存数组中获取在所述预设数目的层中确定的多个碰撞点位置,生成包括所述多个碰撞点位置的所述碰撞点位置数据组。
[0112] 在具体的应用场景中,该装置还包括:
[0113] 预测模块,用于在所述虚拟角色攀爬的过程中,根据所述虚拟角色在所述攀爬对象地形的攀爬姿态,对所述虚拟角色肢体部分的攀爬肢体参数进行预测,所述虚拟角色攀爬姿态包括所述虚拟角色肢体部分攀爬姿态,所述攀爬肢体参数至少包括肢体放置位置、肢体角度其中任意一项或两项;
[0114] 该调整模块302,还用于根据所述攀爬肢体参数调整所述虚拟角色肢体部分攀爬姿态,以使所述虚拟角色肢体部分模型紧贴所述攀爬对象地形进行攀爬。
[0115] 在具体的应用场景中,该预测模块,用于在所述虚拟角色攀爬过程中,获取所述虚拟角色当前所述攀爬姿态,利用逆向运动学算法,计算所述虚拟角色的肢体部分位置参数,基于所述肢体部分位置参数计算所述虚拟角色的肢体部分的放置位置;根据所述肢体部分的放置位置与所述攀爬对象地形碰撞点法线信息,计算所述肢体部分旋转的肢体角度;将所述放置位置和所述肢体角度作为所述攀爬肢体参数。
[0116] 在具体的应用场景中,该预测模块,用于以所述虚拟对象的胶囊体当前所处位置为基准,在所述胶囊体顶部竖直方向向上预设高度、水平方向向前预设长度进行球形检测,确定头部位置点,其中,所述胶囊体的高度是所述预设高度的二倍,所述预设长度是所述胶囊体的半径长度的四倍;在所述胶囊体中间部位水平方向向前所述预设长度进行球形检测,确定中间部分位置点;利用所述逆向运动学算法,对所述头部位置点和所述中间部分位置点进行计算,得到所述肢体部分位置参数;按照所述肢体部分位置参数对所述虚拟角色进行调整,以及在调整后的虚拟角色上确定四肢骨骼点;从所述四肢骨骼点水平向所述攀爬对象进行射线检测,确定所述射线检测在所述攀爬对象上的碰撞点,以及将所述碰撞点作为所述虚拟角色的肢体部分的放置位置。
[0117] 在具体的应用场景中,该预测模块,还用于当从所述四肢骨骼点水平向所述攀爬对象进行的射线检测未与所述攀爬对象发生碰撞时,从所述中间部分位置点水平向所述攀爬对象进行射线检测,确定所述射线检测在所述攀爬对象上的碰撞点作为基准点;获取固定偏移量,以所述四肢骨骼点为起始向所述基准点的方向移动所述固定偏移量,确定一位置点,以及将所述位置点作为所述虚拟角色的肢体部分的放置位置。
[0118] 在具体的应用场景中,该预测模块,用于在所述肢体部分上确定多个预设位置点,分别确定所述多个预设位置点中每个预设位置点与所述攀爬对象的碰撞点,以及获取碰撞点的碰撞点法线信息,得到多个碰撞点法线信息;对所述多个碰撞点法线信息进行向量和计算,得到所述肢体部分旋转的肢体角度。
[0119] 在具体的应用场景中,该调整模块302,用于确定所述攀爬肢体参数指示的放置位置,控制所述虚拟角色的四肢由当前位置移动至所述放置位置;按照所述攀爬肢体参数指示的肢体角度对所述虚拟角色的四肢进行调整;按照所述虚拟角色的四肢当前所处位置和角度,对所述虚拟角色的关节部分进行位置和角度的调整,以使所述关节部分的动画表现与所述虚拟角色的四肢相匹配。
[0120] 本申请实施例提供的装置,在检测到虚拟角色处于攀爬状态的条件下,确定虚拟角色胶囊体与虚拟角色攀爬对象地形之间的物理碰撞检测数据,依据物理碰撞检测数据,对虚拟角色当前的攀爬姿态进行调整,以使虚拟角色模型紧贴攀爬对象地形进行攀爬,根据算法自适应不同的地形,调整虚拟角色的姿态和动作,使得虚拟角色的模型可以紧贴地形,手、脚和腿能够表现得自然合理,身体各个部位处于合适的位置,提升游戏的细节展示和真实感,避免游戏失真,为游戏角色赋予生命力,给玩家带来更加新奇的游戏体验。
[0121] 需要说明的是,本申请实施例提供的一种角色攀爬装置所涉及各功能单元的其他相应描述,可以参考图1和图2A至图2G中的对应描述,在此不再赘述。
[0122] 需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
[0123] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0124] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
[0125] 在示例性实施例中,参见图4,还提供了一种计算机设备,该计算机设备包括总线、处理器、存储器和通信接口,还可以包括输入输出接口和显示设备,其中,各个功能单元之间可以通过总线完成相互间的通信。该存储器存储有计算机程序,处理器,用于执行存储器上所存放的程序,执行上述实施例中的角色攀爬方法。
[0126] 一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的角色攀爬方法的步骤。
[0127] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD‑ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。
[0128] 本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。
[0129] 本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0130] 上述本申请序号仅仅为了描述,不代表实施场景的优劣。
[0131] 以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。