本申请涉及计算机人机交互技术,尤其涉及一种虚拟场景中的事件处理方法、装置、设备及计算机可读存储介质。
背景技术:
随着计算机技术的发展,电子设备可以实现更加丰富的和形象的虚拟场景。虚拟场景是指计算机通过数字通讯技术勾勒出的数字化场景,用户可以在虚拟场景中获得视觉、听觉等方面的完全虚拟化的感受(例如虚拟现实)或部分虚拟化的感受(例如增强现实),同时可以控制虚拟场景中的对象进行交互,以获得反馈。
相关技术中,在控制虚拟对象使用虚拟道具与虚拟对象自身的手指模型进行交互的过程中,无法对虚拟道具的作用点进行精准的控制,使得为达到虚拟对象的交互目的,用户需要多次交互操作,造成人机交互效率低,大大影响了用户在虚拟场景中的体验。
技术实现要素:
本申请实施例提供一种虚拟场景中的事件处理方法、装置、设备及计算机可读存储介质,能够使虚拟对象对虚拟道具进行精准的控制,提高人机交互效率。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种虚拟场景中的事件处理方法,包括:
在虚拟场景的界面中呈现目标事件的图标;
响应于针对所述图标的触控操作,呈现与虚拟对象的手部相对应的手指模型、与所述手指模型相适配的标识轨道、以及在所述标识轨道上运动的提示标识;
在所述提示标识在所述标识轨道上运动的过程中,响应于针对虚拟道具的操作指令,控制所述虚拟对象手持所述虚拟道具作用于所述提示标识所处的位置;
输出与所述位置相对应的所述目标事件的处理结果。
本申请实施例提供一种虚拟场景中的事件处理装置,包括:
第一呈现模块,用于在虚拟场景的界面中呈现目标事件的图标;
第二呈现模块,用于响应于针对所述图标的触控操作,呈现与虚拟对象的手部相对应的手指模型、与所述手指模型相适配的标识轨道、以及在所述标识轨道上运动的提示标识;
控制模块,用于在所述提示标识在所述标识轨道上运动的过程中,响应于针对虚拟道具的操作指令,控制所述虚拟对象手持所述虚拟道具作用于所述提示标识所处的位置;
输出模块,用于输出与所述位置相对应的所述目标事件的处理结果。
上述方案中,所述在虚拟场景的界面中呈现目标事件的图标之前,所述方法还包括:
视角编辑模块,用于在虚拟场景的界面中呈现视角编辑界面;
响应于基于所述视角编辑界面触发的视角编辑操作,得到基于所述视角编辑操作所编辑的视角对应的虚拟场景的画面。
上述方案中,所述第二呈现模块,还用于
当所述虚拟场景的画面为第三人称视角的画面时,将虚拟场景的画面由第三人称视角切换为第一人称视角,并在所述第一人称视角的画面中呈现与虚拟对象的手部相对应的手指模型、与所述手指模型相适配的标识轨道、以及在所述标识轨道上运动的提示标识;或者,
当所述虚拟场景的画面为第一人称视角的画面时,将虚拟场景的画面由第一人称视角切换为第三人称视角,并在所述第三人称视角的画面中呈现与虚拟对象的手部相对应的手指模型、与所述手指模型相适配的标识轨道、以及在所述标识轨道上运动的提示标识。
上述方案中,所述呈现与虚拟对象的手部相对应的手指模型、与所述手指模型相适配的标识轨道、以及在所述标识轨道上运动的提示标识之前,所述装置还包括:
轨道编辑模块,用于呈现轨道编辑界面;
在所述轨道编辑界面中,确定所述手指模型中距离手掌心为预设长度的骨骼点为中心控制点、及位于所述手指模型外且位于所述中心控制点两侧的起始控制点和结束控制点;
基于所述中心控制点、所述起始控制点和结束控制点,确定弧度角为预设角度、弧长为预设弧长的弧形轨道,并将所述弧形轨道作为与所述手指模型相适配的标识轨道。
上述方案中,所述将所述弧形轨道作为与所述手指模型相适配的标识轨道之后,所述装置还包括:
轨道调整模块,用于当所述虚拟场景所对应的视角发生变化时,获取当前视角对应的虚拟场景的画面中所述手指模型的骨骼点构成的骨骼网格、以及所述弧形轨道上对应所述手指模型中各手指的碰撞区域及非碰撞区域;
基于所述骨骼网格,获取所述虚拟对象的手指模型的骨骼点的实时位置;
基于所述骨骼点的实时位置,调整所述弧形轨道上对应各手指的碰撞区域,使得各所述碰撞区域的中心点与相应手指的中心骨骼点相重叠,并将调整后的弧形轨道作为与所述手指模型相适配的标识轨道。
上述方案中,所述第二呈现模块,还用于区别显示所述标识轨道中对应所述手指模型中各手指的碰撞区域及非碰撞区域;
呈现在所述碰撞区域与所述非碰撞区域之间交替运动的提示标识。
上述方案中,所述第二呈现模块,还用于呈现所述提示标识以第一速率循环在所述标识轨道上运动的动画;
输出与所述位置相对应的所述目标事件的处理结果之后,所述方法还包括:
当所述处理结果所取得的成绩达到成绩阈值时,呈现所述提示标识以第二速率循环在所述标识轨道上运动的动画;
其中,所述第二速率大于所述第一速率。
上述方案中,所述控制模块,还用于当所述虚拟场景处于反向动力学动画模式时,确定所述虚拟对象的手臂的骨骼父节点和骨骼子节点;
获取所述提示标识所处的位置,并基于所述提示标识所处的位置,调整所述骨骼子节点的位置,所述骨骼子节点位置的调整,带动所述骨骼父节点的调整,以控制所述虚拟对象手持所述虚拟道具作用于所述提示标识所处的位置。
上述方案中,所述控制模块,还用于获取所述虚拟道具的作用点、以及对应所述虚拟道具的手持中心点;
确定所述虚拟道具的作用点与所述提示标识所处的位置之间的第一连线,以及对应所述虚拟道具的手持中心点与所述骨骼子节点之间的第二连线;
确定所述第一连线与所述第二连线之间的偏移角度;
基于所述偏移角度,调整所述虚拟道具的作用点的位置,所述虚拟道具的作用点的位置的调整,带动所述骨骼子节点的调整,以控制虚拟对象手持所述虚拟道具作用于所述提示标识所处的位置。
上述方案中,所述输出模块,还用于呈现与所述位置相对应的所述目标事件所取得的成绩;或者,
播放与所述位置相对应的所述目标事件的媒体文件,其中,所述媒体文件包括以下至少之一:背景音频文件、背景动画文件。
上述方案中,所述输出模块,还用于当所述位置位于所述手指模型的手指缝区域时,输出与所述手指缝区域相对应的所述目标事件的操作成功指示信息;
当所述位置位于所述手指模型的手指区域时,控制所述虚拟对象收缩所述手指模型,并输出与所述手指区域相对应的所述目标事件的操作失败指示信息。
上述方案中,所述输出与所述位置相对应的所述目标事件的处理结果之后,所述装置还包括:
视角切换模块,用于呈现针对所述目标事件的结束指示界面,并在所述结束指示界面中呈现退出图标;
响应于针对所述退出图标的触控操作,呈现所述目标事件所对应的虚拟场景的画面切换为虚拟场景的目标画面。
本申请实施例提供一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的虚拟场景中的事件处理方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的虚拟场景中的事件处理方法。
本申请实施例具有以下有益效果:
在虚拟场景的界面中呈现目标事件的图标,响应于针对图标的触控操作,呈现与虚拟对象的手部相对应的手指模型、与手指模型相适配的标识轨道、以及在标识轨道上运动的提示标识,在提示标识在标识轨道上运动的过程中,响应于针对虚拟道具的操作指令,控制虚拟对象手持虚拟道具作用于提示标识所处的位置,并输出与作用的位置相对应的目标事件的处理结果;
如此,用户在虚拟场景下,可以控制虚拟对象手持虚拟道具作用于提示标识所处的位置,使得虚拟对象对虚拟道具进行精准的控制,进而减少达到交互目的所需的交互次数,提高了人机交互效率,减少了硬件处理资源的占用。
附图说明
图1为本申请实施例提供的虚拟场景中的事件处理处理系统的一个可选的架构示意图;
图2为本申请实施例提供的电子设备的一个可选的结构示意图;
图3为本申请实施例提供的虚拟场景中的事件处理装置中安装的人机交互引擎的原理示意图;
图4为本申请实施例提供的虚拟场景中的事件处理方法的一个可选的流程示意图;
图5a-5b为本申请实施例提供的虚拟场景的界面示意图;
图6a-6c为本申请实施例提供的显示界面示意图;
图7a-7b为本申请实施例提供的标识轨道编辑界面示意图;
图8a-8c为本申请实施例提供的显示界面示意图;
图9为本申请实施例提供的显示界面示意图;
图10为本申请实施例提供的虚拟场景中的事件处理方法的流程示意图;
图11为本申请实施例提供的手臂动作状态机示意图;
图12为本申请实施例提供的手臂动作状态机示意图;
图13为本申请实施例提供的虚拟场景中的事件处理装置的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二…”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二…”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)客户端,终端中运行的用于提供各种服务的应用程序,例如视频播放客户端、游戏客户端等。
2)响应于,用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
3)虚拟场景,是应用程序在终端上运行时显示(或提供)的虚拟场景。该虚拟场景可以是对真实世界的仿真环境,也可以是半仿真半虚构的虚拟环境,还可以是纯虚构的虚拟环境。虚拟场景可以是二维虚拟场景、2.5维虚拟场景或者三维虚拟场景中的任意一种,本申请实施例对虚拟场景的维度不加以限定。例如,虚拟场景可以包括天空、陆地、海洋等,该陆地可以包括沙漠、城市等环境元素,用户可以控制虚拟对象在该虚拟场景中进行移动。
4)虚拟对象,虚拟场景中可以进行交互的各种人和物的形象,或在虚拟场景中的可活动对象。该可活动对象可以是虚拟人物、虚拟动物、动漫人物等,比如:在虚拟场景中显示的人物、动物、植物、油桶、墙壁、石块等。该虚拟对象可以是该虚拟场景中的一个虚拟的用于代表用户的虚拟形象。虚拟场景中可以包括多个虚拟对象,每个虚拟对象在虚拟场景中具有自身的形状和体积,占据虚拟场景中的一部分空间。
可选地,该虚拟对象可以是通过客户端上的操作进行控制的用户角色,也可以是通过训练设置在虚拟场景对战中的人工智能(ai,artificialintelligence),还可以是设置在虚拟场景互动中的非用户角色(npc,non-playercharacter)。可选地,该虚拟对象可以是在虚拟场景中进行对抗式交互的虚拟人物。可选地,该虚拟场景中参与互动的虚拟对象的数量可以是预先设置的,也可以是根据加入互动的客户端的数量动态确定的。
以射击类游戏为例,用户可以控制虚拟对象在该虚拟场景的天空中自由下落、滑翔或者打开降落伞进行下落等,在陆地上中跑动、跳动、爬行、弯腰前行等,也可以控制虚拟对象在海洋中游泳、漂浮或者下潜等,当然,用户也可以控制虚拟对象乘坐虚拟载具在该虚拟场景中进行移动,例如,该虚拟载具可以是虚拟汽车、虚拟飞行器、虚拟游艇等,在此仅以上述场景进行举例说明,本申请实施例对此不作具体限定。用户也可以控制虚拟对象通过虚拟道具与其他虚拟对象进行对抗式的交互,例如,该虚拟道具可以是手雷、集束雷、粘性手雷等投掷类虚拟道具,也可以是机枪、手枪、步枪等射击类虚拟道具,本申请对虚拟道具的类型不作具体限定。
5)场景数据,表示虚拟场景中的对象在交互过程中受所表现的各种特征,例如,可以包括对象在虚拟场景中的位置。当然,根据虚拟场景的类型可以包括不同类型的特征;例如,在游戏的虚拟场景中,场景数据可以包括虚拟场景中配置的各种功能时需要等待的时间(取决于在特定时间内能够使用同一功能的次数),还可以表示游戏角色的各种状态的属性值,例如包括生命值(也称为红量)和魔法值(也称为蓝量)等。
6)反向动力学(inversekinematics,ik):是一种通过先确定骨骼子节点的位置,然后反求推导出其所在骨骼链上n级骨骼父节点位置,从而确定整条骨骼链的方法,具体是依据某些骨骼子节点的最终位置、角度,来反求出整个骨架的形态。
参见图1,图1为本申请实施例提供的虚拟场景中的事件处理处理系统100的一个可选的架构示意图,为实现支撑一个示例性应用,终端(示例性地,终端400-1和终端400-2),通过网络300连接服务器200,网络300可以是广域网或者局域网,又或者是二者的组合,使用无线或有线链路实现数据传输。
终端可以为智能手机、平板电脑、笔记本电脑等各种类型的用户终端,还可以为台式计算机、游戏机、电视机或者这些数据处理设备中任意两个或多个的组合;服务器200既可以为单独配置的支持各种业务的一个服务器,亦可以配置为一个服务器集群,还可以为云服务器等。
在实际应用中,终端安装和运行有支持虚拟场景的应用程序,该应用程序可以是第一人称射击游戏(fps,first-personshootinggame)、第三人称射击游戏、多人在线战术竞技游戏(moba,multiplayeronlinebattlearenagames)、二维(twodimension,简称2d)游戏应用、三维(threedimension,简称3d)游戏应用、虚拟现实应用程序、三维地图程序、军事仿真程序或者多人枪战类生存游戏中的任意一种,该应用程序还可以是单机版的应用程序,比如单机版的3d游戏程序。
本发明实施例中涉及到的虚拟场景可以用于模拟一个三维虚拟空间,该三维虚拟空间可以是一个开放空间,该虚拟场景可以用于模拟现实中的真实环境,例如,该虚拟场景中可以包括天空、陆地、海洋等,该陆地可以包括沙漠、城市等环境元素。当然,在该虚拟场景中还可以包括虚拟物品,例如,建筑物、桌子、载具、虚拟场景中的虚拟对象用于武装自己或与其他虚拟对象进行战斗所需的兵器等道具。该虚拟场景还可以用于模拟不同天气下的真实环境,例如,晴天、雨天、雾天或黑夜等天气。该虚拟对象可以是该虚拟场景中的一个虚拟的用于代表用户的虚拟形象,该虚拟形象可以是任一种形态,例如,仿真人物、仿真动物等,本发明对此不作限定。在实际实施时,用户可以使用终端控制虚拟对象在该虚拟场景中进行活动,该活动包括但不限于:调整身体姿态、爬行、奔跑、骑行、跳跃、驾驶、拾取、射击、攻击、投掷、切戳中的至少一种。
以电子游戏场景为示例性场景,用户可以提前在该终端上进行操作,该终端检测到用户的操作后,可以下载电子游戏的游戏配置文件,该游戏配置文件可以包括该电子游戏的应用程序、界面显示数据或虚拟场景数据等,以使得该用户在该终端上登录电子游戏时可以调用该游戏配置文件,对电子游戏界面进行渲染显示。用户可以在终端上进行触控操作,该终端检测到触控操作后,可以确定该触控操作所对应的游戏数据,并对该游戏数据进行渲染显示,该游戏数据可以包括虚拟场景数据、该虚拟场景中虚拟对象的行为数据等。
在实际应用中,终端在虚拟场景的界面中呈现目标事件的图标,响应于针对所述图标的触控操作,发送虚拟场景的场景数据的获取请求至服务器200,服务器基于接收到场景数据的获取请求,获取并返回虚拟场景的场景数据至终端;终端接收到虚拟场景的场景数据,基于该场景数据对虚拟场景的画面进行渲染,呈现虚拟场景的画面,并在虚拟场景的画面中,呈现与虚拟对象的手部相对应的手指模型、与手指模型相适配的标识轨道、以及在标识轨道上运动的提示标识,在提示标识在标识轨道上运动的过程中,响应于针对虚拟道具的操作指令,控制虚拟对象手持虚拟道具作用于提示标识所处的位置,并输出与位置相对应的目标事件的处理结果。
以军事虚拟仿真应用为示例性场景,采用虚拟场景技术使受训者在视觉和听觉上真实体验战场环境、熟悉将作战区域的环境特征,通过必要的设备与虚拟环境中的对象进行交互作用,虚拟战场环境的实现方法可通过相应的三维战场环境图形图像库,包括作战背景、战地场景、各种武器装备和作战人员等,通过背景生成与图像合成创造一种险象环生、几近真实的立体战场环境。在实际实施时,终端在虚拟场景的界面中呈现目标事件的图标,响应于针对所述图标的触控操作,发送虚拟场景的场景数据的获取请求至服务器,服务器基于接收到场景数据的获取请求,获取并返回虚拟场景的场景数据至终端;终端接收到虚拟场景的场景数据,基于该场景数据对虚拟场景的画面进行渲染,呈现虚拟场景的画面,并在虚拟场景的画面中,呈现与虚拟对象(比如模拟作战人员)的手部相对应的手指模型、与手指模型相适配的标识轨道、以及在标识轨道上运动的提示标识,在提示标识在标识轨道上运动的过程中,响应于针对虚拟道具的操作指令,控制虚拟对象手持虚拟道具作用于提示标识所处的位置,并输出与位置相对应的目标事件的处理结果。
参见图2,图2为本申请实施例提供的电子设备500的一个可选的结构示意图,在实际应用中,电子设备500可以为图1中的终端或服务器,以电子设备为图1所示的终端400为例,对实施本申请实施例的虚拟场景中的事件处理方法的计算机设备进行说明。图2所示的电子设备500包括:至少一个处理器510、存储器550、至少一个网络接口520和用户接口530。电子设备500中的各个组件通过总线系统540耦合在一起。可理解,总线系统540用于实现这些组件之间的连接通信。总线系统540除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统540。
处理器510可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(dsp,digitalsignalprocessor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口530包括使得能够呈现媒体内容的一个或多个输出装置531,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口530还包括一个或多个输入装置532,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器550可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器550可选地包括在物理位置上远离处理器510的一个或多个存储设备。
存储器550包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(rom,readonlymemory),易失性存储器可以是随机存取存储器(ram,randomaccessmemory)。本申请实施例描述的存储器550旨在包括任意适合类型的存储器。
在一些实施例中,存储器550能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统551,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块552,用于经由一个或多个(有线或无线)网络接口520到达其他计算设备,示例性的网络接口520包括:蓝牙、无线相容性认证(wifi)、和通用串行总线(usb,universalserialbus)等;
呈现模块553,用于经由一个或多个与用户接口530相关联的输出装置531(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块554,用于对一个或多个来自一个或多个输入装置532之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的虚拟场景中的事件处理装置可以采用软件方式实现,图2示出了存储在存储器550中的虚拟场景中的事件处理装置555,其可以是程序和插件等形式的软件,包括以下软件模块:第一呈现模块5551、第二呈现模块5552、控制模块5553、输出模块5554、视角编辑模块5555、轨道编辑模块5556和轨道调整模块5557,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分,将在下文中说明各个模块的功能。
在一些实施例中,虚拟场景中的事件处理装置555中安装有用于实现虚拟场景中的事件处理方法的人机交互引擎,人机交互引擎包括用于实现虚拟场景中的事件处理方法的功能模块、组件或插件,图3为本申请实施例提供的虚拟场景中的事件处理装置中安装的人机交互引擎的原理示意图,参见图3,以虚拟场景为游戏场景为例,相应的,人机交互引擎为游戏引擎。
游戏引擎是一个为运行某一类游戏的机器设计的能够被机器识别的代码(指令)集合,它像一个发动机,控制着游戏的运行,一个游戏程序可以分为游戏引擎和游戏资源两大部分,游戏资源包括图像,声音,动画等部分,游戏=引擎(程序代码)+资源(图像,声音,动画等),游戏引擎则是按游戏设计的要求顺序地调用这些资源。
本申请实施例提供的虚拟场景中的事件处理方法可以由图3中所示出的虚拟场景中的事件处理装置中的各个模块通过调用图3所示出的游戏引擎的相关模块、组件或插件实现,下面对图3示出的游戏引擎所包括的模块、组件或插件进行示例性说明。
如图3所示,场景组织用于管理整个游戏世界,使得游戏应用能更高效地处理场景的更新及事件;渲染模块用于对模型、场景等提供二维及三维图形的渲染、光影效果的处理、材质的渲染等;底层算法模块用于处理游戏中的逻辑、负责角色对事件的反应、复杂智能算法的实现等;编辑器组件是为便于游戏开发而提供的辅助开发工具,包括场景编辑器、模型编辑器、动画编辑器、逻辑编辑器、特效编辑器等辅助管理工具;用户界面(ui,userinterface)组件负责用户和系统的交互,用于显示渲染组件实现模型渲染及场景渲染后所得到的虚拟场景的画面;骨骼动画组件用于管理类似骨骼带动物体产生运动等关键帧动画和骨骼动画,丰富角色,使之动作更逼真;模型插件和模型对游戏中的模型进行管理;地形管理模块对游戏世界中的地形、路径等进行管理,使得游戏更加逼真;特效组件负责在游戏世界中实时模拟各类自然现象,使得游戏更加绚丽等。
例如,第一呈现模块5551可以通过调用图3中的ui组件实现目标事件的图标的呈现;
第二显示模块5552可以调用图3的渲染模块、骨骼动画组件及模型插件制作二维或者三维模型,并在模型制作完毕之后,通过骨骼动画部分按照不同的面把材质贴图赋予模型,通过渲染部分将模型、动画、光影、特效等所有效果实时计算出来并展示在人机交互界面上,实现在接收到针对图标的触发操作时,呈现与虚拟对象的手部相对应的手指模型、与手指模型相适配的标识轨道、以及在标识轨道上运动的提示标识;
控制模块5553可以通过调用图3所示游戏引擎中的相机组件以及场景组织模块实现对提示标识的运动进行检测,调用底层算法模块和编辑器模块根据检测结果计算指示标识移动轨迹,并在提示标识在标识轨道上运动的过程中,响应于针对虚拟道具的操作指令,控制虚拟对象手持虚拟道具作用于提示标识所处的位置;
输出模块5554可以调用图3所示的渲染模块,当控制虚拟对象手持虚拟道具作用于提示标识所处的位置后,对处理结果进行渲染并展示在人机交互界面上;
视角编辑模块5555可以调用图3中的编辑器模块对视角进行编辑,得到基于视角编辑操作所编辑的视角对应的虚拟场景的画面;轨道编辑模块4556可以调用图3中的编辑器模块对标识轨道进行编辑,得到标识轨道;
轨道调整模块5557可以调用图3中的相机组件实现对手指模型的骨骼点的实时位置进行检测,调用底层算法模块根据检测结果计算各个手指对应的宽度,通过编辑器模块对标识轨道进行调整,得到调整后的标识轨道。
接下来对本申请实施例的提供的虚拟场景中的事件处理方法进行说明,在实际实施时,本申请实施例提供的虚拟场景中的事件处理方法可由服务器或终端单独实施,还可由服务器及终端协同实施。
参见图4,图4为本申请实施例提供的虚拟场景中的事件处理方法的一个可选的流程示意图,将结合图4示出的步骤进行说明。
步骤101:终端在虚拟场景的界面中呈现目标事件的图标。
这里,终端上安装有支持虚拟场景的客户端,当用户打开终端上的客户端,且终端运行该客户端时,终端呈现虚拟场景(比如射击游戏场景)的界面,该界面是以虚拟对象视角对虚拟场景观察得到的,该虚拟对象为当前用户账号所对应的虚拟场景中的虚拟对象。在该虚拟场景中,用户可通过虚拟场景的界面,控制虚拟对象执行动作,具体地,虚拟对象可以持有虚拟道具,该虚拟道具可以是虚拟对象与其他虚拟对象进行交互时使用的任一种道具,例如,虚拟枪支、虚拟弓箭、虚拟匕首等,用户可基于终端显示的虚拟场景界面,控制该虚拟对象与其他虚拟对象进行交互。
当该虚拟场景处于空闲状态时,还可呈现针对目标事件的图标,其中,所谓空闲状态是指该虚拟场景处于未交互状态,例如,针对射击游戏这一虚拟场景,在虚拟对象完成一局射击对战且未开启新的一局射击对战时,即可认为该射击游戏处于空闲状态。目标事件为不同于虚拟场景的事件,如目标事件可为刀戳手指缝的游戏,在虚拟场景的界面中呈现目标事件的图标,可实现基于虚拟场景的界面中呈现的图标开启其他目标事件,如用户在玩射击游戏的过程中,当结束一局射击游戏时,可在该射击游戏的虚拟场景界面中呈现对应刀戳手指缝这一游戏的图标,通过该图标实现在玩射击游戏的间隙中,通过玩刀戳手指缝这一小游戏来达到调节、缓解用户心情的作用。
需要说明的是,虚拟场景还可为目标事件对应的虚拟场景,即用户可单独体验目标事件这一虚拟场景。
在一些实施例中,在虚拟场景的界面中呈现目标事件的图标之前,终端还可通过如下方式编辑虚拟场景的视角:
在虚拟场景的界面中呈现视角编辑界面;响应于基于视角编辑界面触发的视角编辑操作,得到基于视角编辑操作所编辑的视角对应的虚拟场景的画面。
这里,视角可为第一人称视角或第三人称视角,不同的视角对应不同的虚拟场景的画面,在实际应用中,用户可基于终端呈现的视角编辑界面对视角进行编辑,以在虚拟场景中根据环境实时呈现与当前视角对应的虚拟场景的画面。
参见图5a-5b,图5a-5b为本申请实施例提供的虚拟场景的界面示意图,图5a中,在虚拟场景的界面中呈现视角编辑界面a2,可在视角编辑界面a2中对视角进行编辑,若编辑视角为第一视角,则呈现第一视角对应的虚拟场景的画面a1;若编辑视角为第三视角,则呈现如图5b所示的第三视角对应的虚拟场景的画面b1,并在虚拟场景的画面b1中呈现对应目标事件的图标b2。
步骤102:响应于针对图标的触控操作,呈现与虚拟对象的手部相对应的手指模型、与手指模型相适配的标识轨道、以及在标识轨道上运动的提示标识。
这里,当用户触发虚拟场景的界面中呈现的针对目标事件的图标时,终端响应于该触发操作,呈现对应目标事件的画面,并在该画面中呈现执行目标事件所需的场景元素,如虚拟对象的手部相对应的手指模型、对应的标识轨道及提示标识,此外,还可呈现辅助道具,如虚拟桌子,在辅助道具上呈现手指模型,提示标识可为如圆点、星星、三角形等能够给用户以提示的符号或图形。
参见图6a,图6a为本申请实施例提供的显示界面示意图,图6a中,在对应目标事件的虚拟场景的画面601中,呈现虚拟对象的手指模型602、与手指模型602相适配的标识轨道603以及在标识轨道603上运动的提示标识604,用户可基于提示标识604在标识轨道603上的位置而确定虚拟道具的作用位置。
在一些实施例中,可通过如下方式呈现与虚拟对象的手部相对应的手指模型、与手指模型相适配的标识轨道、以及在标识轨道上运动的提示标识:
当虚拟场景的画面为第三人称视角的画面时,将虚拟场景的画面由第三人称视角切换为第一人称视角,并在第一人称视角的画面中呈现与虚拟对象的手部相对应的手指模型、与手指模型相适配的标识轨道、以及在标识轨道上运动的提示标识;或者,当虚拟场景的画面为第一人称视角的画面时,将虚拟场景的画面由第一人称视角切换为第三人称视角,并在第三人称视角的画面中呈现与虚拟对象的手部相对应的手指模型、与手指模型相适配的标识轨道、以及在标识轨道上运动的提示标识。
这里,不同视角对应的虚拟场景的画面可相互切换,如可将第三人称视角的虚拟场景的画面切换为第一人称视角的虚拟场景的画面,或将第一人称视角的虚拟场景的画面切换为第三人称视角的虚拟场景的画面。
例如,在图5b所示的第三视角对应的虚拟场景的画面b1呈现对应目标事件的图标b2,当用户触发对应目标事件的图标b2时,呈现如图6b所示的第一人称视角的虚拟场景的画面,图6b为本申请实施例提供的显示界面示意图,图6b中呈现对应目标事件的开始倒计时信息和操作指示信息,当倒计时结束时,呈现如图6c所示的第一人称视角的虚拟场景的画面,图6c为本申请实施例提供的显示界面示意图,在对应目标事件的虚拟场景的画面601中,呈现虚拟对象的手指模型602、与手指模型602相适配的标识轨道603以及在标识轨道603上运动的提示标识604,用户可基于提示标识604在标识轨道603上的位置而确定虚拟道具的作用位置。
在一些实施例中,终端在呈现与虚拟对象的手部相对应的手指模型、与手指模型相适配的标识轨道、以及在标识轨道上运动的提示标识之前,可通过如下方式编辑得到标识轨道:
呈现轨道编辑界面;在轨道编辑界面中,确定手指模型中距离手掌心为预设长度的骨骼点为中心控制点、及位于手指模型外且位于所述中心控制点两侧的起始控制点和结束控制点;基于中心控制点、起始控制点和结束控制点,确定弧度角为预设角度、弧长为预设弧长的弧形轨道,并将弧形轨道作为与手指模型相适配的标识轨道。
在实际应用中,不同的角色对应的手指模型不同,不同的手指模型所适配的标识轨道也不同,为了提高用户体验,可通过轨道编辑界面,对各手指模型对应的标识轨道进行编辑,或对不同视角下的标识轨道进行调整,得到当前视角下的标识轨道。
参见图7a,图7a为本申请实施例提供的标识轨道编辑界面示意图,图7a中,在轨道编辑界面a0中确定中心控制点a1、起始控制点a2和结束控制点a3,其中,中心控制点a1为位于手指模型与手臂的中心轴上、且距离手掌心一定距离的骨骼点,如可为手腕对应的骨骼点,起始控制点a2和结束控制点a3位于中心控制点a1的两侧,根据这三个控制点确定手指模型对应的标识轨道曲线的弧度和长度,使得标识轨道穿过手指模型中各个手指,即标识轨道与手指模型中各个手指存在交叉。
在一些实施例中,在将上述确定的弧形轨道作为与手指模型相适配的标识轨道之后,当虚拟场景所对应的视角发生变化时,相应的,虚拟场景的画面中的手指模型也发生变化,不同的呈现视角对应不同的手指模型,不同的手指模型对应不同的标识轨道,可通过如下方式确定视角变化后的标识轨道:
当虚拟场景所对应的视角发生变化时,获取当前视角对应的虚拟场景的画面中手指模型的骨骼点构成的骨骼网格、以及弧形轨道上对应手指模型中各手指的碰撞区域及非碰撞区域;基于骨骼网格,获取虚拟对象的手指模型的骨骼点的实时位置;基于骨骼点的实时位置,调整弧形轨道上对应各手指的碰撞区域,使得各碰撞区域的中心点与相应手指的中心骨骼点相重叠,并将调整后的弧形轨道作为与手指模型相适配的标识轨道。
这里,标识轨道由碰撞区域和非碰撞区域组成,其中,碰撞区域为标识轨道中标识手指位置的区域,非碰撞区域为标识轨道中标识手指与手指之间的缝隙区域,对于手指模型而言,共有5个手指,则存在5个对应各手指的碰撞区域,6个对应手指缝隙区域的非碰撞区域。由于不同视角下用户观察到的同一角色的手指模型中的手指宽度以及手指缝的间距不同,当视角变化时,原来标识轨道上的碰撞区域与相应的手指可能存在错位,即碰撞区域并没有与相应的手指相重叠,而部分碰撞区域却与手指存在重叠,此种情况下,当用户想要控制虚拟对象手持虚拟道具作用在手指与手指之间的缝隙区域时,在提示标识运动至非碰撞区域时,若控制虚拟对象手持虚拟道具作用于提示标识所处的位置,则虚拟道具最终的作用点将位于碰撞区域(即手指),对虚拟道具控制的精准度大大降低,故为了提高对虚拟道具控制的精准度,有必要对标识轨道进行调整。
在实际实施时,根据当前屏幕空间坐标系,获取当前视角对应的虚拟场景的画面中手指模型的骨骼点构成的骨骼网格,由于骨骼网格中的顶点受到1至4个骨骼点的位置信息以及所对应的权重影响,因此可根据手指模型的骨骼网格和骨骼动画信息,获取每个骨骼网格的顶点的实时位置,并把每个骨骼网格的顶点的实时位置信息转换到屏幕空间上,通过计算距离手指的中心骨骼点最远的顶点确定各个手指的宽度和顶点,调整弧形轨道上对应各手指的碰撞区域,使得各碰撞区域的中心点与相应手指的中心骨骼点相重叠,并将调整后的弧形轨道作为与手指模型相适配的标识轨道。
例如,当虚拟场景所对应的视觉发生变化时,图7a中标识轨道上的碰撞区域701~705与相应的手指存在错位,即碰撞区域并没有与相应的手指相重叠,因此需要对标识轨道进行调整,参见图7b,图7b为本申请实施例提供的标识轨道编辑界面示意图,调整后的标识轨道上的各碰撞区域与相应的手指相重叠。
在一些实施例中,可通过如下方式呈现在标识轨道上运动的提示标识:区别显示标识轨道中对应手指模型中各手指的碰撞区域及非碰撞区域;呈现在碰撞区域与非碰撞区域之间交替运动的提示标识。
这里,提示标识在碰撞区域与非碰撞区域之间交替循环运动,用户可根据提示标识所处位置,决定控制虚拟道具作用在何处。在实际实施时,提示标识在标识轨道上以一定速度在标识轨道上来回移动,可根据提示标识当前的移动速度和帧率计算提示标识每帧移动的距离,并通过拟合运算计算提示标识在标识轨道上的位置。采用如不同的颜色或不同的形状等不同的显示样式区别显示碰撞区域与非碰撞区域,可在提示标识在标识轨道上运动过程中,提高针对提示标识所处位置的识别度,进而有利于提高对虚拟道具进行精准的控制。
在一些实施例中,可通过如下方式呈现在标识轨道上运动的提示标识:呈现提示标识以第一速率循环在标识轨道上运动的动画;相应地,在输出与位置相对应的目标事件的处理结果之后,还可通过如下方式呈现在标识轨道上运动的提示标识:当处理结果所取得的成绩达到成绩阈值时,呈现提示标识以第二速率循环在标识轨道上运动的动画;其中,第二速率大于第一速率。
这里,提示标识在标识轨道上运动的速度与其所处目标事件阶段相对应,也即提示标识在标识轨道上运动的速度根据其所处目标事件阶段的不同而不同,例如,图6中,在起始阶段提示标识604以较慢的运动速度在标识轨道603上进行运动,在输出与位置相对应的目标事件的处理结果以后,根据处理结果所取得的成绩而改变提示标识604在标识轨道603上的运动速度,如所取得的成绩满足一定条件后,提示标识604以更快的运动速度在标识轨道603上进行运动,以提高挑战性,增加刺激感。
步骤103:在提示标识在标识轨道上运动的过程中,响应于针对虚拟道具的操作指令,控制虚拟对象手持虚拟道具作用于提示标识所处的位置。
这里,在提示标识在标识轨道上运动的过程中,用户可根据提示标识在标识轨道上的位置,而决定何时控制虚拟对象手持虚拟道具作用于提示标识所处的位置。
在一些实施例中,可通过如下方式控制虚拟对象手持虚拟道具作用于提示标识所处的位置:
当虚拟场景处于反向动力学动画模式时,确定虚拟对象的手臂的骨骼父节点和骨骼子节点;获取提示标识所处的位置,并基于提示标识所处的位置,调整骨骼子节点的位置,骨骼子节点位置的调整,带动骨骼父节点的调整,以控制虚拟对象手持虚拟道具作用于提示标识所处的位置。
在实际应用中,反向动力学动画模式的开启与关闭,可以通过反向动力学动画的触发操作实现。在反向动力学动画模式下,确定虚拟对象的手臂的骨骼父节点和骨骼子节点,其中,骨骼子节点可以对应虚拟对象手持虚拟道具的手持中心点,骨骼父节点可以对应虚拟对象的手臂部位,若要虚拟道具作用在提示标识所处的位置,可根据提示标识在标识轨道上所处的位置,调整骨骼子节点位置,进而带动调整骨骼父节点的位置,以控制虚拟对象手持虚拟道具作用于提示标识所处的位置。
在一些实施例中,可通过如下方式基于提示标识所处的位置,调整骨骼子节点的位置:
获取虚拟道具的作用点、以及对应虚拟道具的手持中心点;确定虚拟道具的作用点与提示标识所处的位置之间的第一连线,以及对应虚拟道具的手持中心点与骨骼子节点之间的第二连线;确定第一连线与第二连线之间的偏移角度;基于偏移角度,调整虚拟道具的作用点的位置,虚拟道具的作用点的位置的调整,带动骨骼子节点的调整,以控制虚拟对象手持虚拟道具作用于提示标识所处的位置。
在实际应用中,对于某一手指模型而言,标识轨道上存在5个对应各手指的碰撞区域,6个对应手指缝隙区域的非碰撞区域,提示标识在标识轨道上的位置可认为共有11个作用点,故可控制虚拟对象手持虚拟道具作用在11个作用点中任一作用点,但由于视觉误差,可能导致虚拟道具最终的实际作用点与所看到的作用点不一致,因此,需要调整修正虚拟对象的手臂动作。
在实际实施时,虚拟道具的作用点为与辅助道具或手指模型接触的位置,例如,若虚拟道具为虚拟刀具,则虚拟道具的作用点为虚拟刀械的刀尖位置,手持中心点为虚拟对象的另一手部手握虚拟道具的多个接触点中的中心作用点,提示标识所处位置为11个作用点中的其中一个作用点,为了让虚拟道具的作用点最终落在提示标识所处位置,根据提示标识位置所处位置,调整虚拟道具的作用点,进而带动调整手持中心点的位置,使得虚拟道具的作用点与手持中心点之间的连线指向提示标识所处的位置,通过调整手持中心点的位置,带动调整骨骼子节点(对应于手腕)的位置,进而带动调整骨骼父节点的位置,以控制虚拟对象手持虚拟道具作用于提示标识所处的位置。
在一些实施例中,还可将虚拟道具的作用点与骨骼子节点做一条向量,旋转该向量使其指向提示标识所处的位置,得到该骨骼子节点的旋转角度,将该旋转角度与每一帧手臂骨骼动画进行融合,对骨骼动画进行修正,并根据修正后的骨骼动画实时获取虚拟道具的位置,进而控制虚拟对象手持该虚拟道具使虚拟道具最终作用在指定的位置(即提示标识所处的位置)。
步骤104:输出与所述位置相对应的目标事件的处理结果。
在一些实施例中,可通过如下方式输出与位置相对应的目标事件的处理结果:呈现与所述位置相对应的目标事件所取得的成绩;或者,播放与所述位置相对应的目标事件的媒体文件,其中,媒体文件包括以下至少之一:背景音频文件、背景动画文件。
这里,虚拟道具最终作用位置的不同,对应目标事件的处理结果也不同,并可根据处理结果呈现相应的指示信息,或者,播放相应的背景音频文件或背景动画文件,其中,背景音频文件和背景动画文件均与虚拟道具最终的作用位置对应的处理结果相对应。
在一些实施例中,还可通过如下方式输出与位置相对应的目标事件的处理结果:
当所述位置位于手指模型的手指缝区域时,输出与手指缝区域相对应的目标事件的操作成功指示信息;当所述位置位于手指模型的手指区域时,控制虚拟对象收缩手指模型,并输出与手指区域相对应的目标事件的操作失败指示信息。
参见图8a-8c,图8a-8c为本申请实施例提供的显示界面示意图,例如,对于刀戳手指缝这一目标事件,背景音频文件和背景动画文件均与作用手指区域与否的交互操作相对应,当虚拟道具最终的作用位置为手指模型对应的碰撞区域(即手指区域)时,呈现与手指区域相对应的目标事件的操作失败指示信息,如呈现图8a所示的交互次数“-1”或分数“-1”的提示信息,或播放如“呜呜呜…”、“哎呀哎呀…”等模拟虚拟对象发出的呐喊声等背景音乐文件;或播放如“哭泣”、“脸黑”或“泄气”等状态表情的动画,同时如图8c所示的,控制虚拟对象收缩手指模型c1。当虚拟道具最终的作用位置为手指模型对应的非碰撞区域(即手指缝隙区域)时,可呈现如图8b所示的分数“+1”或交互次数“+1”的提示信息,或者,播放如“欧耶…”、“bingo…”等模拟虚拟对象发出的呐喊声等、或如“咚咚咚…”等对应辅助道具(如虚拟桌子)所发出的声音等背景音乐文件;或者,播放如“傲娇”、“笑脸”或“得意”等状态表情的动画。
在一些实施例中,在输出与所述位置相对应的目标事件的处理结果之后,终端还可呈现针对目标事件的结束指示界面,并在结束指示界面中呈现退出图标;响应于针对退出图标的触控操作,呈现目标事件所对应的虚拟场景的画面切换为虚拟场景的目标画面。
当对应目标事件的交互次数为零或达到对应目标事件的限定的交互时间时,呈现对应目标事件的结束指示界面,参见图9,图9为本申请实施例提供的显示界面示意图,在对应目标事件的结束指示界面201中呈现游戏结束的指示信息、本局得分、退出图标和重新开始的图标,当用户触发重新开始的图标时,终端直接弹出针对目标事件的倒计时开始并且重置分数及交互时间后,用户可继续执行目标事件的交互操作。
当用户单独体验目标事件这一虚拟场景时,若用户触发退出图标,终端响应于该触发操作,退出针对目标事件的虚拟场景的画面;当用户是基于不同于目标事件的虚拟场景的界面中的图标进入目标事件的虚拟场景画面时,若用户触发退出图标,终端响应于该触发操作,将呈现目标事件所对应的虚拟场景的画面切换为不同于目标事件的虚拟场景的目标画面,例如,用户通过射击游戏这一虚拟场景的界面中进入刀戳手指缝这一目标事件的虚拟场景时,在刀戳手指缝这一目标事件结束时,在刀戳手指缝这一目标事件对应的虚拟场景画面中呈现退出图标,当用户触发该图标时,终端响应于该触发操作,由刀戳手指缝这一目标事件对应的虚拟场景的画面切换为射击游戏对应的第三人称视角的虚拟场景的画面。
下面,将说明本申请实施例提供的虚拟场景中的事件处理方法在游戏的应用场景中的示例性应用。
本申请实施例提供一种虚拟场景中的事件处理方法,用户(或玩家)可在射击游戏的休闲区域内触发目标事件(如刀戳手指缝游戏),具体地,虚拟场景的界面中呈现对应刀戳手指缝游戏这一目标事件的图标,当用户触发该图标时,终端响应于该触发操作,由第三人称视角的虚拟场景的画面切换为第一人称视角的虚拟场景的画面,并在画面中呈现与虚拟对象的手部相对应的手指模型、与手指模型相适配的标识轨道、以及在标识轨道上运动的提示标识,在提示标识在标识轨道上运动的过程中,响应于针对虚拟道具的操作指令,控制虚拟对象手持虚拟道具(即虚拟刀械)作用于提示标识所处的位置,输出与所述位置相对应的目标事件的处理结果。
本申请实施例不仅提出了这类游戏的实现方案,还融合了射击游戏中的特性以供玩家更好的体验,由于玩家是以3d视角下进行的游戏,游戏中不同的角色对应不同的手指模型,因此,为了控制虚拟对象对虚拟道具进行精准的控制,提高人机交互效率,本申请实施例分别从以下方面进行优化:1)提供3d视角编辑器;2)提供轨道路径编辑器;3)提示标识在标识轨道上循环移动;4)修正手臂动作。
1)提供3d视角编辑器
由于刀戳手指缝游戏为一款3d游戏,游戏模式开展在虚拟场景中的虚拟辅助道具(如桌子模型)上,如图5a所示,在虚拟场景的界面中呈现视角编辑界面a2,可在视角编辑界面a2中对视角进行编辑,若编辑视角为第一视角,则呈现第一视角对应的虚拟场景的画面a1;若编辑视角为第三视角,则呈现如图5b所示的第三视角对应的虚拟场景的画面b1,并在虚拟场景的画面b1中呈现对应目标事件的图标b2。
2)提供轨道路径编辑器
在实际应用中,不同的角色对应的手指模型不同,不同的手指模型所适配的标识轨道也不同,为了提高用户体验,可通过轨道编辑界面,对各手指模型对应的标识轨道进行编辑,如图7a所示,在轨道编辑界面a0中确定中心控制点a1、起始控制点a2和结束控制点a3,其中,中心控制点a1为位于手指模型与手臂的中心轴上、且距离手掌心一定距离的骨骼点(如手腕对应的骨骼点),起始控制点a2和结束控制点a3位于中心控制点a1的两侧,根据这三个控制点确定手指模型对应的标识轨道曲线的弧度和长度,使得标识轨道穿过手指模型中各个手指,即标识轨道与手指模型中各个手指存在交叉。
当虚拟场景所对应的视角发生变化时,虚拟场景的画面中的手指模型也发生变化,不同的呈现视角对应不同的手指模型,不同的手指模型对应不同的标识轨道,标识轨道由碰撞区域和非碰撞区域组成,其中,碰撞区域为标识轨道中标识手指位置的区域,非碰撞区域为标识轨道中标识手指与手指之间的缝隙区域,对于手指模型而言,共有5个手指,则存在5个对应各手指的碰撞区域,6个对应手指缝隙的非碰撞区域。由于不同视角下用户观察到的同一角色的手指模型中的手指宽度以及手指缝的间距不同,当视角变化时,原来标识轨道上的碰撞区域与相应的手指可能存在错位,如图7a中,标识轨道上的碰撞区域701~705与相应的手指存在错位,即碰撞区域并没有与相应的手指相重叠,此种情况下,当用户想要控制虚拟对象手持虚拟道具作用在手指与手指之间的非碰撞区域时,在提示标识运动至非碰撞区域时,若控制虚拟对象手持虚拟道具作用于提示标识所处的位置,则虚拟道具最终的作用点将位于碰撞区域(即手指),对虚拟道具控制的精准度大大降低,故为了提高对虚拟道具控制的精准度,有必要对标识轨道进行调整。
在对标识轨道进行调整时,根据当前屏幕空间坐标系,获取当前视角对应的虚拟场景的画面中手指模型的骨骼点构成的骨骼网格,由于骨骼网格中的顶点受到1至4个骨骼点的位置信息以及所对应的权重影响,因此可根据手指模型的骨骼网格和骨骼动画信息,获取每个骨骼网格的顶点的实时位置,并把每个骨骼网格的顶点的实时位置信息转换到屏幕空间上,通过计算距离手指的中心骨骼点最远的顶点确定各个手指的宽度和顶点,调整弧形轨道上对应各手指的碰撞区域,使得各碰撞区域的中心点与相应手指的中心骨骼点相重叠,并将调整后的弧形轨道作为与手指模型相适配的标识轨道,如图7b中调整后的标识轨道上的各碰撞区域与相应的手指相重叠。
3)提示标识在标识轨道上循环移动
每个分数段游戏的难度不一致,提示标识在标识轨道上运动的速度与其所处阶段相对应,也即提示标识在标识轨道上运动的速度根据其所处目标事件阶段的不同而不同,例如,图6中,在起始阶段提示标识604以较慢的运动速度在标识轨道603上进行运动,在输出与位置相对应的目标事件的处理结果以后,根据处理结果所取得的成绩而改变提示标识604在标识轨道603上的运动速度,如所取得的成绩满足一定条件后,提示标识604以更快的运动速度在标识轨道603上进行运动,以提高挑战性,增加刺激感。
4)修正手臂动作
对于某一手指模型而言,标识轨道上存在5个对应各手指的碰撞区域,6个对应手指缝隙区域的非碰撞区域,提示标识在标识轨道上的位置可认为共有11个作用点,故可控制虚拟对象手持虚拟道具作用在11个作用点中任一作用点,但由于视觉误差,可能导致虚拟道具最终的实际作用点与所看到的作用点不一致,因此,需要调整修正虚拟对象的手臂动作。
为了让虚拟刀械的落刀点最终落在提示标识所处位置,根据提示标识位置所处位置,调整虚拟刀械的落刀点,进而带动调整虚拟对象手持虚拟刀械的手持中心点的位置,使得落刀点与手持中心点之间的连线指向提示标识所处的位置,通过调整手持中心点的位置,带动调整骨骼子节点(对应于手腕)的位置,进而带动调整骨骼父节点的位置,以控制虚拟对象手持虚拟刀械落刀在提示标识所处的位置。
在实际实施时,还可将落刀点与骨骼子节点做一条向量,旋转该向量使其指向提示标识所处的位置,得到该骨骼子节点的旋转角度,将该旋转角度与每一帧手臂骨骼动画进行融合,对骨骼动画进行修正,并根据修正后的骨骼动画实时获取虚拟刀械的位置,进而控制虚拟对象手持该虚拟刀械使虚拟刀械最终落刀在指定的位置(即提示标识所处的位置)。
为方便理解本申请实施例,如图10所示,图10为本申请实施例提供的虚拟场景中的事件处理方法的流程示意图,结合图10示出的步骤进行说明。
步骤201:终端呈现虚拟对象进入虚拟场景的画面。
这里,如图5b所示,在开始刀戳手指缝游戏前,需控制虚拟对象进入酒吧场景,玩家可通过在酒吧场景里触发针对刀戳手指缝这一游戏入口的桌子。
步骤202:判断是否接收到针对坐下按钮的触发操作。
这里,若玩家触控坐下按钮时,执行步骤203,否则执行步骤201。
步骤203:播放虚拟对象坐下动作。
步骤204:是否开始刀戳手指缝游戏。
这里,判断终端是否接收到针对刀戳手指缝游戏的开始操作,当终端接收到针对刀戳手指缝游戏的开始操作时,执行步骤205;否则执行步骤201.
步骤205:视角平滑切换至刀戳游戏视角。
这里,在开始刀戳手指缝游戏后,玩家视角会第三人称平滑的切换为第一人称视角,玩家的镜头将会平移和旋转到事先配置好的视角,并弹出游戏的操作界面。
步骤206:控制虚拟对象拿出虚拟刀械。
这里,控制虚拟对象从背包中拿出虚拟刀械并且播放拿出虚拟刀械的动作。
步骤207:提示标识在标识轨道上来回匀速运动。
这里,视角切换后会有三秒的倒计时,倒计时归零时,在虚拟场景的画面中呈现与虚拟对象的手部相对应的手指模型、与手指模型相适配的标识轨道、以及在标识轨道上运动的提示标识(即下刀提示点),在限定的游戏总时长内,玩家可以选择任意时间点进行下刀。
步骤208:是否接收到下刀操作。
这里,判断玩家是否按下下刀按钮,当玩家按下下刀按钮时,终端接收到下刀操作,执行步骤209,否则,执行步骤207。
步骤209:播放虚拟对象的手臂下刀动作。
步骤210:对虚拟对象的手臂下刀动作进行修正。
步骤211:控制虚拟对象手持虚拟刀械作用在指定下刀点。
步骤212:判断是否刀中手指缝区域。
这里,判断虚拟刀械最终的下刀点是否位于手指缝区域,如果虚拟刀械最终的下刀点位于手指缝区域,则执行步骤213;否则执行步骤214。
步骤213:呈现与刀中手指缝区域对应的分数提升的效果,并判断所取得的分数是否达到下一分数段,若达到下一分数段,则难度提升,提高提示标识在标识轨道上的运动速度,否则,呈现提示标识按原速度在标识轨道上运动。
这里,当玩家下刀的位置是手指缝区域,则积分增加,当积分增加到一定分数时,提示标识的移动速度加快,即不同的分数段对应着不同的移动速度,例如,0~10分,提示标识的移动速度为v1,10~20分,提示标识的移动速度为v2,20~30分,提示标识的移动速度为v3,v1<v2<v3。
步骤214:呈现下刀次数减少的效果,并判断下刀次数是否为零或游戏是否达到限定时间,当下刀次数为零或游戏达到限定时间时,游戏结束。
当玩家下刀的位置不是手指缝区域而是手指时,则下刀次数减少,当下刀次数为零或游戏达到限定时间时,呈现游戏结束的界面,玩家可在界面中查看本局游戏的分数,并且可选择是退出游戏或者是重新开始游戏,当玩家选择重新开始游戏,不再重复拿出虚拟刀械的动作,会直接弹出游戏的主界面倒计时开始,并且重置游戏的分数以及时间;当玩家选择退出游戏时,视角会从第一人称插值平移以及旋转到第三人称视角,恢复到正常在场景中的状态。
上述过程中,当玩家选择下刀后,会播放下刀动作并且利用反向运动(ik,inversekinematics)技术对当前下刀的骨骼动画进行混合,根据当前手臂的骨骼点和刀尖作方向向量,将该方向向量旋转指向到落刀点,并且实时变换小刀的位置,最后实现刀尖指向下刀点,并根据下刀的位置播放不同的音效,例如刀中手指缝则播放敲桌子的音效。
虚拟对象的左手臂对应手指模型放在桌子上,右手臂手持小刀(即虚拟刀械),通过在虚拟对象的手臂模型上挂载了一个动画机来实施,然后按着下面顺序播放动画:进入游戏时播放拿出虚拟刀械的动作,紧接着播放手臂空闲状态机(idle)动作,然后根据玩家选择的下刀点从11个作用点中选择距离下刀点最近的动作并播放,如果刀中手指会播放缩手的动作。由于缩手动作只是作用于左手臂,所以利用动画分层以及遮罩(avatarmask)技术单独处理左臂的动作,在手臂下刀的动作播放完后会回到idle动作,最后玩家选择退出游戏后会播放收回虚拟刀械的动作。
参见图11,图11为本申请实施例提供的手臂动作状态机示意图,状态机的入口是播放拿出小刀的动作(knifestabfingerequip),结束后会一直停留在手臂的挂机动画(knifestabfingeridle),根据玩家判断的下刀点,如果戳中的是手指(即上述的碰撞区域),则会播放下刀戳向手指的动作(knifestabfinger01-05);如果戳中的是桌子(即上述的非碰撞区域),则会播放戳向桌子的动作(knifestabfinger01-06),玩家选择退出游戏,则会播放收起小刀的动作(knifestabfingerputdown)。
参见图12,图12为本申请实施例提供的手臂动作状态机示意图,baselayer是上一层的双臂的状态机,lefthand是当前左臂的状态机,利用参数动画师(animator)分层技术来播放左手臂在不同状态下的动作,玩家戳中手指后,左手会播放缩手的动作(knifestabfinger_lefthand)。
下面继续说明本申请实施例提供的虚拟场景中的事件处理装置455的实施为软件模块的示例性结构,在一些实施例中,参见图13,图13为本申请实施例提供的虚拟场景中的事件处理装置的结构示意图,本申请实施例提供的虚拟场景中的事件处理装置455中的软件模块可以包括:
第一呈现模块4551,用于在虚拟场景的界面中呈现目标事件的图标;
第二呈现模块4552,用于响应于针对所述图标的触控操作,呈现与虚拟对象的手部相对应的手指模型、与所述手指模型相适配的标识轨道、以及在所述标识轨道上运动的提示标识;
控制模块4553,用于在所述提示标识在所述标识轨道上运动的过程中,响应于针对虚拟道具的操作指令,控制所述虚拟对象手持所述虚拟道具作用于所述提示标识所处的位置;
输出模块4554,用于输出与所述位置相对应的所述目标事件的处理结果。
在一些实施例中,所述在虚拟场景的界面中呈现目标事件的图标之前,所述方法还包括:
视角编辑模块,用于在虚拟场景的界面中呈现视角编辑界面;
响应于基于所述视角编辑界面触发的视角编辑操作,得到基于所述视角编辑操作所编辑的视角对应的虚拟场景的画面。
在一些实施例中,所述第二呈现模块,还用于
当所述虚拟场景的画面为第三人称视角的画面时,将虚拟场景的画面由第三人称视角切换为第一人称视角,并在所述第一人称视角的画面中呈现与虚拟对象的手部相对应的手指模型、与所述手指模型相适配的标识轨道、以及在所述标识轨道上运动的提示标识;或者,
当所述虚拟场景的画面为第一人称视角的画面时,将虚拟场景的画面由第一人称视角切换为第三人称视角,并在所述第三人称视角的画面中呈现与虚拟对象的手部相对应的手指模型、与所述手指模型相适配的标识轨道、以及在所述标识轨道上运动的提示标识。
在一些实施例中,所述呈现与虚拟对象的手部相对应的手指模型、与所述手指模型相适配的标识轨道、以及在所述标识轨道上运动的提示标识之前,所述装置还包括:
轨道编辑模块,用于呈现轨道编辑界面;
在所述轨道编辑界面中,确定所述手指模型中距离手掌心为预设长度的骨骼点为中心控制点、及位于所述手指模型外且位于所述中心控制点两侧的起始控制点和结束控制点;
基于所述中心控制点、所述起始控制点和结束控制点,确定弧度角为预设角度、弧长为预设弧长的弧形轨道,并将所述弧形轨道作为与所述手指模型相适配的标识轨道。
在一些实施例中,所述将所述弧形轨道作为与所述手指模型相适配的标识轨道之后,所述装置还包括:
轨道调整模块,用于当所述虚拟场景所对应的视角发生变化时,获取当前视角对应的虚拟场景的画面中所述手指模型的骨骼点构成的骨骼网格、以及所述弧形轨道上对应所述手指模型中各手指的碰撞区域及非碰撞区域;
基于所述骨骼网格,获取所述虚拟对象的手指模型的骨骼点的实时位置;
基于所述骨骼点的实时位置,调整所述弧形轨道上对应各手指的碰撞区域,使得各所述碰撞区域的中心点与相应手指的中心骨骼点相重叠,并将调整后的弧形轨道作为与所述手指模型相适配的标识轨道。
在一些实施例中,所述第二呈现模块,还用于区别显示所述标识轨道中对应所述手指模型中各手指的碰撞区域及非碰撞区域;
呈现在所述碰撞区域与所述非碰撞区域之间交替运动的提示标识。
在一些实施例中,所述第二呈现模块,还用于呈现所述提示标识以第一速率循环在所述标识轨道上运动的动画;
输出与所述位置相对应的所述目标事件的处理结果之后,所述方法还包括:
当所述处理结果所取得的成绩达到成绩阈值时,呈现所述提示标识以第二速率循环在所述标识轨道上运动的动画;
其中,所述第二速率大于所述第一速率。
在一些实施例中,所述控制模块,还用于当所述虚拟场景处于反向动力学动画模式时,确定所述虚拟对象的手臂的骨骼父节点和骨骼子节点;
获取所述提示标识所处的位置,并基于所述提示标识所处的位置,调整所述骨骼子节点的位置,所述骨骼子节点位置的调整,带动所述骨骼父节点的调整,以控制所述虚拟对象手持所述虚拟道具作用于所述提示标识所处的位置。
在一些实施例中,所述控制模块,还用于获取所述虚拟道具的作用点、以及对应所述虚拟道具的手持中心点;
确定所述虚拟道具的作用点与所述提示标识所处的位置之间的第一连线,以及对应所述虚拟道具的手持中心点与所述骨骼子节点之间的第二连线;
确定所述第一连线与所述第二连线之间的偏移角度;
基于所述偏移角度,调整所述虚拟道具的作用点的位置,所述虚拟道具的作用点的位置的调整,带动所述骨骼子节点的调整,以控制虚拟对象手持所述虚拟道具作用于所述提示标识所处的位置。
在一些实施例中,所述输出模块,还用于呈现与所述位置相对应的所述目标事件所取得的成绩;或者,
播放与所述位置相对应的所述目标事件的媒体文件,其中,所述媒体文件包括以下至少之一:背景音频文件、背景动画文件。
在一些实施例中,所述输出模块,还用于当所述位置位于所述手指模型的手指缝区域时,输出与所述手指缝区域相对应的所述目标事件的操作成功指示信息;
当所述位置位于所述手指模型的手指区域时,控制所述虚拟对象收缩所述手指模型,并输出与所述手指区域相对应的所述目标事件的操作失败指示信息。
在一些实施例中,所述输出与所述位置相对应的所述目标事件的处理结果之后,所述装置还包括:
视角切换模块,用于呈现针对所述目标事件的结束指示界面,并在所述结束指示界面中呈现退出图标;
响应于针对所述退出图标的触控操作,呈现所述目标事件所对应的虚拟场景的画面切换为虚拟场景的目标画面。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的虚拟场景中的事件处理方法。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的虚拟场景中的事件处理方法。
在一些实施例中,计算机可读存储介质可以是fram、rom、prom、eprom、eeprom、闪存、磁表面存储器、光盘、或cd-rom等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(html,hypertextmarkuplanguage)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。