CN106215419B - 碰撞控制方法及装置 - Google Patents

碰撞控制方法及装置 Download PDF

Info

Publication number
CN106215419B
CN106215419B CN201610616634.9A CN201610616634A CN106215419B CN 106215419 B CN106215419 B CN 106215419B CN 201610616634 A CN201610616634 A CN 201610616634A CN 106215419 B CN106215419 B CN 106215419B
Authority
CN
China
Prior art keywords
collision
control object
bone
group
control
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610616634.9A
Other languages
English (en)
Other versions
CN106215419A (zh
Inventor
王竞原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201610616634.9A priority Critical patent/CN106215419B/zh
Publication of CN106215419A publication Critical patent/CN106215419A/zh
Priority to PCT/CN2017/093421 priority patent/WO2018019160A1/zh
Priority to US16/003,283 priority patent/US10751626B2/en
Application granted granted Critical
Publication of CN106215419B publication Critical patent/CN106215419B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • A63F13/57Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
    • A63F13/577Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game using determination of contact between game characters or objects, e.g. to avoid collision between virtual racing cars
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • A63F13/58Controlling game characters or game objects based on the game progress by computing conditions of game characters, e.g. stamina, strength, motivation or energy level
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/80Special adaptations for executing a specific game genre or game mode
    • A63F13/837Shooting of targets
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/63Methods for processing data by generating or executing the game program for controlling the execution of the game in time
    • A63F2300/638Methods for processing data by generating or executing the game program for controlling the execution of the game in time according to the timing of operation or a time limit
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/64Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/64Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car
    • A63F2300/643Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car by determining the impact between objects, e.g. collision detection
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/65Methods for processing data by generating or executing the game program for computing the condition of a game character
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/66Methods for processing data by generating or executing the game program for rendering three dimensional images

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明公开了一种碰撞控制方法及装置。其中,该方法包括:获取游戏客户端中的第一控制对象所要执行的碰撞动作;获取第一控制对象的本体信息,其中,本体信息包括第一本体信息和第二本体信息,第一本体信息用于表示第一控制对象的骨骼,第二本体信息用于表示第一控制对象中除骨骼外的、且被骨骼驱动的一组碰撞体;控制骨骼和一组碰撞体执行碰撞动作。本发明解决了采用现有的碰撞控制方法所导致的准确性较低的技术问题。

Description

碰撞控制方法及装置
技术领域
本发明涉及计算机领域,具体而言,涉及一种碰撞控制方法及装置。
背景技术
在传统的3D角色扮演类游戏应用中,主要是利用角色之间的能量数值来判定胜负,而在3D动作类游戏应用中,则往往是依赖于角色之间战斗时产生的碰撞,通过精确的碰撞计算所产生的结果判定战斗的胜负。对于网络游戏来说,因为同时战斗的角色数量远多于单机游戏,同时又有网络传输导致的同步问题,所以网络游戏实现良好的战斗体验是非常困难的。
此外,为了实现精确的碰撞判定,通常需要用专业的第三方引擎来实现碰撞判定计算,但是因为碰撞判定的运算量巨大,建模复杂,第三方引擎通常是在客户端上使用。但是这样做会存在两个问题:首先是由于网络延迟的存在,不同客户端计算的结果会有差异;其次,客户端如果被黑客恶意修改后,就可以进行作弊,破坏了游戏的公平性。因此,为了保证不同客户端之间感受的一致性,同时为了防止作弊,动作类网络游戏的碰撞判定通常是放在服务器端来进行计算的。
但是,目前市场上服务器端常用的做法是简化3D建模,通常采用体素(VolumePixel,Voxel)的建模方式,体素Voxel的概念是从二维空间的最小单位像素衍伸而来。像素用于描述二维的影像,是二维空间上的最小单位。而体素用于描述三维空间上的立体的对象,是三维空间分割上的最小单位。
服务器端用体素Voxel来建立3D模型,虽然较为粗糙(由于在该3D模型中访问的最小单位是一个格子,而不是一个点,所以只能称为伪3D),但可以对3D世界中的物体进行近似的模拟。服务器端基于Voxel建立的3D模型的碰撞检测非常简单,结合图1所示(为了方便观察,用2D图像来表示,3D原理与2D相同)),其步骤包括:
(1).对于每个物体(如图1斜纹阴影部分),建立一个长方体(如图1所示方框)包围;
(2).对于每对物体,首先检测长方体是否相交,如果相交,则表示这两个物体已经很靠近或有重合(如图1点纹阴影部分)。
(3)再检测在两个长方体相交部分中两个物体的体素是否相碰(如图1横纹阴影部分)。
然而上述碰撞检测却存在如下缺点:
(1).与2D的像素Pixel动画一样,3D的体素Voxel动画也是预先设定好的,这样一个角色只能做有限的动作,因此其运动轨迹是固定和规则的,很难模拟显示世界中真实动作的不规则运动轨迹。因此,通常只能检测到角色(或者武器等物体)在规则运动范围内的碰撞,很难对不规则运动轨迹进行模拟和计算,因此大大降低了玩家操作的体验,如图2所示。
(2).与像素Pixel模型的基本单元是长方体类似,体素Voxel的基本单元是立方体。在服务器端为了减少计算量,立方体不可能做得太小,这样将导致很难做到精确的碰撞计算,如图3所示沿着斜向直线(图3所示带箭头的直线)运动,会与多个立方体相碰,但是图3斜线所标明的几个立方体已经与直线偏差得较远了,所以如果立方体较大的话,碰撞计算判定的效果也就非常不准确。
也就是说,采用现有技术提供的基于体素Voxel来建立3D模型进行碰撞控制时,为了减少计算量,用于碰撞计算的立方体不可能做得太小,这样将难以保证碰撞控制过程的准确性。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种碰撞控制方法及装置,以至少解决采用现有的碰撞控制方法所导致的准确性较低的技术问题。
根据本发明实施例的一个方面,提供了一种碰撞控制方法,包括:获取游戏客户端中的第一控制对象所要执行的碰撞动作;获取上述第一控制对象的本体信息,其中,上述本体信息包括第一本体信息和第二本体信息,上述第一本体信息用于表示上述第一控制对象的骨骼,上述第二本体信息用于表示上述第一控制对象中除上述骨骼外的、且被上述骨骼驱动的一组碰撞体;控制上述骨骼和上述一组碰撞体执行上述碰撞动作
根据本发明实施例的另一方面,还提供了一种碰撞控制装置,包括:第一获取单元,用于获取游戏客户端中的第一控制对象所要执行的碰撞动作;第二获取单元,用于获取上述第一控制对象的本体信息,其中,上述本体信息包括第一本体信息和第二本体信息,上述第一本体信息用于表示上述第一控制对象的骨骼,上述第二本体信息用于表示上述第一控制对象中除上述骨骼外的、且被上述骨骼驱动的一组碰撞体;第一控制单元,用于控制上述骨骼和上述一组碰撞体执行上述碰撞动作。
在本发明实施例中,服务器在获取到游戏客户端中的第一控制对象所要执行的碰撞动作后,通过获取该第一控制对象的本体信息,其中,本体信息包括用于表示第一控制对象的骨骼的第一本体信息,及用于表示第一控制对象中除骨骼外的、且被骨骼驱动的一组碰撞体的第二本体信息,以控制上述骨骼和一组碰撞体执行上述碰撞动作。也就是说,通过对游戏客户端中的第一控制对象进行简化,利用简化后与第一控制对象匹配的骨骼和一组碰撞体来执行碰撞动作,从而达到了减少在碰撞判定过程的计算量,提高计算的准确性的目的,以克服现有技术中基于体素建立的模型进行碰撞判定的过程中,难以在减少计算量的情况下保证碰撞判定的准确性的问题,进而实现提高对第一控制对象的碰撞控制的准确性的效果。
此外,通过简化第一控制对象得到与第一控制对象匹配的骨骼和一组碰撞体,还将大大节省服务器对碰撞控制的处理开销,从而达到缩短处理时间,达到实时同步控制的目的,进而实现提高碰撞控制效率的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据现有技术的一种碰撞控制方法的示意图;
图2是根据现有技术的另一种碰撞控制方法的示意图;
图3是根据现有技术的又一种碰撞控制方法的示意图;
图4是根据本发明实施例的一种可选的碰撞控制方法的应用环境示意图;
图5是根据本发明实施例的另一种可选的碰撞控制方法的应用环境示意图;
图6是根据本发明实施例的一种可选的碰撞控制方法的流程图;
图7是根据本发明实施例的一种可选的碰撞控制方法的示意图;
图8是根据本发明实施例的另一种可选的碰撞控制方法的流程图;
图9是根据本发明实施例的又一种可选的碰撞控制方法的流程示意图;
图10是根据本发明实施例的又一种可选的碰撞控制方法的流程示意图;
图11是根据本发明实施例的另一种可选的碰撞控制方法的示意图;
图12是根据本发明实施例的一种可选的碰撞控制装置的示意图;
图13是根据本发明实施例的一种可选的碰撞控制服务器的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
在本发明实施例中,提供了一种上述碰撞控制方法的实施例。作为一种可选的实施方式,该碰撞控制方法可以但不限于应用于如图4所示的应用环境中,运行有游戏客户端(例如3D动作类游戏应用)的终端402,通过网络404与游戏客户端对应的游戏服务器406进行交互。游戏服务器406通过网络404获取游戏客户端中的第一控制对象所要执行的碰撞动作,再获取上述第一控制对象的本体信息,其中,该本体信息包括:用于表示第一控制对象的骨骼的第一本体信息,及用于表示第一控制对象中除骨骼外的、且被骨骼驱动的一组碰撞体的第二本体信息;然后,游戏服务器406控制上述骨骼及一组碰撞体执行上述碰撞动作。
作为另一种可选的实施方式,该碰撞控制方法可以但不限于应用于如图5所示的应用环境中,运行有游戏客户端(例如3D动作类游戏应用)的终端402,通过网络404与游戏客户端对应的游戏服务器406,及用于实施碰撞控制方法的处理服务器502进行交互。处理服务器502通过网络404获取游戏客户端中的第一控制对象所要执行的碰撞动作,再获取上述第一控制对象的本体信息,其中,该本体信息包括:用于表示第一控制对象的骨骼的第一本体信息,及用于表示第一控制对象中除骨骼外的、且被骨骼驱动的一组碰撞体的第二本体信息;然后,处理服务器502控制上述骨骼及一组碰撞体执行上述碰撞动作。
需要说明的是,上述用于实施碰撞控制方法的服务器可以但不限于替换为具有大数据处理能力的硬件设备,如处理器,本实施例中对此不做任何限定。
可选地,在本实施例中,上述终端可以包括但不限于以下至少之一:手机、平板电脑、笔记本电脑、台式PC机及其他安装有游戏客户端的终端。上述网络可以包括但不限于以下至少之一:广域网、城域网、局域网。上述只是一种示例,本实施例对此不做任何限定。
根据本发明实施例,提供了一种碰撞控制方法,如图6所示,该方法包括:
S602,获取游戏客户端中的第一控制对象所要执行的碰撞动作;
S604,获取第一控制对象的本体信息,其中,本体信息包括第一本体信息和第二本体信息,第一本体信息用于表示第一控制对象的骨骼,第二本体信息用于表示第一控制对象中除骨骼外的、且被骨骼驱动的一组碰撞体;
S606,控制骨骼和一组碰撞体执行碰撞动作。
可选地,在本实施例中,上述碰撞控制方法可以但不限于应用于3D网络游戏应用中,例如,角色扮演类游戏应用、动作类游戏应用。其中,上述游戏客户端中的第一控制对象可以但不限于为3D游戏应用中的各种角色,例如,人物角色。上述仅是一种示例,本实施例中对此不做任何限定。
需要说明的是,在本实施例中,服务器在获取到游戏客户端中的第一控制对象所要执行的碰撞动作后,通过获取该第一控制对象的本体信息,其中,本体信息包括用于表示第一控制对象的骨骼的第一本体信息,及用于表示第一控制对象中除骨骼外的、且被骨骼驱动的一组碰撞体的第二本体信息,以控制上述骨骼和一组碰撞体执行上述碰撞动作。也就是说,通过对游戏客户端中的第一控制对象进行简化,以忽略与渲染相关的细节信息(用于反应第一控制对象的真实外形,但与碰撞控制无关),利用简化后与第一控制对象匹配的骨骼和一组碰撞体来执行碰撞动作,从而达到了减少在碰撞判定过程的计算量,提高计算的准确性的目的,以克服现有技术中基于体素建立的模型进行碰撞判定的过程中,难以在减少计算量的情况下保证碰撞判定的准确性的问题,进而实现提高对第一控制对象的碰撞控制的准确性的效果。此外,通过简化第一控制对象得到与第一控制对象匹配的骨骼和一组碰撞体,还将大大节省服务器对碰撞控制的处理开销,从而达到缩短处理时间,达到实时同步控制的目的,进而实现提高碰撞控制效率的效果。
可选地,在本实施例中,在获取第一控制对象的本体信息之后,还包括:根据第一本体信息构建骨骼,其中,骨骼包括:头部骨骼、躯干骨骼、下肢骨骼;根据第二本体信息构建一组碰撞体,其中,一组碰撞体包括以下至少之一:躯体碰撞体、装备碰撞体,躯体碰撞体包括:头部碰撞体、躯干碰撞体、下肢碰撞体。需要说明的是,在本实施例中,一组碰撞体也可以但不限于称之为碰撞体组。下文不再赘述。
例如,第一控制对象(如人物角色)呈现效果可以但不限于如图7最右侧所示,与第一控制对象匹配的骨骼(用第一本体信息表示)呈现效果可以但不限于如图7最左侧所示,一组碰撞体(用第二本体信息表示)呈现效果可以但不限于如图7中间所示,第一控制对象的头部、躯干和下肢,用胶囊体(即两端为球体,中间为圆柱体)来替代以得到碰撞体。需要说明的是,躯干部分还可以用多段不同的球体或圆柱体等立体部件来替代得到对应的碰撞体,本实施例中对此不做任何限定。
需要说明的是,在游戏应用所执行的操作中,头部、躯体与下肢通常是有效的判定部位,例如,在动作类游戏应用中,往往是通过判定头部、躯体与下肢是否被击中来判定攻击是否有效,同时相对与武器装备的长度,简化后的骨骼和一组碰撞体与原先第一控制对象的误差可以忽略不计。因而,在本实施例中,通过上述简化将实现较为精确地碰撞控制及碰撞检测。
可选地,在本实施例中,上述碰撞动作可以但不限于对应一套持续的碰撞动画。其中,在本实施例中,上述碰撞控制过程中的动作可以但不限于通过动作状态机实现控制转换,例如,如图8所示,以战斗状态为例,在动作状态机设置了不同的动作状态(如图8中所示的方框),以及各个状态之间的迁移方式(如图8中所示的带箭头的直线),动画也可以但不限于通过对应的动画状态机实现控制转换,设置关系可以但不限于参照图8所示,本实施例中对此不再赘述。
具体结合图9所示说明上述动作状态机与动画状态实现碰撞控制的步骤:
S1,获取所要执行的碰撞动作(如通过指令获取执行的碰撞动作),战斗逻辑模块向动作模块发出消息;
S2,动作模块中的动作状态机响应消息,做出状态切换,同时向动画状态机发出消息;
S3,动画状态机响应消息,驱动第一控制对象进入相应动画状态;
S4,驱动与第一控制对象匹配的一组碰撞体在3D空间中执行碰撞运动;
S5,物理引擎检测该组碰撞体产生的碰撞,每次碰撞会检测出多个碰撞信息;
S6,将上述碰撞信息反馈给动作模块,动作模块会根据当前状态的需求对碰撞信息进行分析和过滤,再反馈给战斗逻辑,其中,上述当前状态的需求可以包括但不限于:是否为产生碰撞的状态、在状态的哪些时间段内碰撞才有效等。
S7,战斗逻辑根据碰撞计算结果,并通知给游戏客户端进行碰撞动画的展示。
需要说明的是,在本实施例中,上述动作状态机可以但不限于用于为上层的战斗逻辑提供了一系列接口,接受并处理接收到的指令,从而实现对上层屏蔽其他与动作无关的细节,上层逻辑只需要知道动作并进行驱动即可,同时底层的系统也不需要关心上层的战斗逻辑,比如一个动作是否可以打断别的动作,动作的进入和退出时需要的做操作等等;此外,上述动作状态机还用于进行必要的验证,同时对碰撞检测的结果进行过滤,比如不在战斗状态时,如果碰撞体发生碰撞,也会产生碰撞信息,这些则需要被过滤忽略掉,同时在战斗状态中,会产生多个碰撞信息,也需要进行有效过滤,只获取有效的碰撞信息,从而达到减少处理量,节省处理开销的目的。上述动画状态机可以但不限于用于管理负责管理与不同的骨骼对应的骨骼动画。需要说明的是,在本实施例中,骨骼将用于驱动一组碰撞体运动,因而,在每段与碰撞动作对应的碰撞动画中,控制骨骼做相应的运动(如碰撞),将进一步驱动在骨骼之外,受该骨骼驱动的一组碰撞体做出对应的运动(如碰撞)。
可选地,在本实施例中,服务器可以但不限于利用Havok物理引擎,来实现实时的碰撞控制。需要说明的是,上述Havok物理引擎是用于提供快速高效率的物理模拟计算。在本实施例中,通过将第一控制对象简化得到对应的骨骼和一组碰撞体,再结合Havok物理引擎的高效处理能力,将一部保证实现高性能的实时碰撞控制。同时所有的战斗结果判定都是基于真实的物理受力,因此碰撞检测的效果也将更真实。
可选地,在本实施例中,上述控制骨骼和一组碰撞体执行碰撞动作包括:根据碰撞动作的动作类型按照预定频率更新第一控制对象的骨骼和一组碰撞体执行与碰撞动作匹配的碰撞动画。
需要说明的是,由于不同的动作类型所需的展示效果不同,例如,在动作类型指示为攻击类型时,由于所涉及的碰撞动作较多,因而,在本实施例中,可以但不限于按照大于预定阈值的频率来更新对应的碰撞动画;相反,在动作类型指示为非攻击类型时,由于未涉及碰撞动作,因而可以但不限于按照小于等于预定阈值的频率来更新对应的碰撞动画。此外,在本实施例中,对于一种动作类型中的不同过程也可以但不限于设置不同的更新频率,本实施例中对此不做限定。通过变频更新的方式来更新对应的碰撞动画,从而保证节省碰撞控制的处理开销,达到实时准确地展示碰撞动画的目的。
可选地,在本实施例中,在控制骨骼和一组碰撞体执行碰撞动作之后,还包括:控制游戏客户端按照服务器的时间线展示第一控制对象执行碰撞动作。
需要说明的是,在本实施例中,为了克服网络时延与网络波动带来的客户端与服务器,以及不同客户端之间的不一致性,通过控制游戏客户端中所有的逻辑都以服务器的时间线为准,其中,服务器逻辑在一条固定的时间轴上向前推进。通过上述方式将实现在客户端与服务器之间的同步机制,进而有效地解决了由于网络传输导致的不一致问题。
通过本申请提供的实施例,服务器在获取到游戏客户端中的第一控制对象所要执行的碰撞动作后,通过获取该第一控制对象的本体信息,其中,本体信息包括用于表示第一控制对象的骨骼的第一本体信息,及用于表示第一控制对象中除骨骼外的、且被骨骼驱动的一组碰撞体的第二本体信息,以控制上述骨骼和一组碰撞体执行上述碰撞动作。也就是说,通过对游戏客户端中的第一控制对象进行简化,以忽略与渲染相关的细节信息(用于反应第一控制对象的真实外形,但与碰撞控制无关),利用简化后与第一控制对象匹配的骨骼和一组碰撞体来执行碰撞动作,从而达到了减少在碰撞判定过程的计算量,提高计算的准确性的目的,以克服现有技术中基于体素建立的模型进行碰撞判定的过程中,难以在减少计算量的情况下保证碰撞判定的准确性的问题,进而实现提高对第一控制对象的碰撞控制的准确性的效果。此外,通过简化第一控制对象得到与第一控制对象匹配的骨骼和一组碰撞体,还将大大节省服务器对碰撞控制的处理开销,从而达到缩短处理时间,达到实时同步控制的目的,进而实现提高碰撞控制效率的效果。
作为一种可选的方案,控制骨骼和一组碰撞体执行碰撞动作包括:
S1,根据碰撞动作的动作类型按照预定频率更新第一控制对象的骨骼和一组碰撞体执行与碰撞动作匹配的碰撞动画。
可选地,在本实施例中,针对不同的动作类型可以但不限于配置不同的预定频率,例如,对于攻击类型的动作可以但不限于配置高频进行更新,对于非攻击类型的动作可以但不限于配置低频进行更新。例如,最低频率可以为每秒1次,最高频率可以为每秒20次。
需要说明的是,在游戏应用的角色(如控制对象)处于行走移动中,或者与战斗碰撞无关的动作中,由于不需要很高的实时性,因而,在本实施例中,可以但不限于对这些动作配置低于预定阈值的频率(即低频)进行更新,只要保证这些动作在执行完毕后可以达到目标位置即可,其中,该目标位置可以但不限于为利用高于预定阈值的频率(即高频)更新的碰撞动作的起始位置。以保证在执行碰撞动作时,可以实现准确实时的碰撞控制。
可选地,在本实施例中,更新上述碰撞动画可以但不限于更新骨骼及对应一组碰撞体在碰撞动画中的位置。也就是说,在本实施例中可以但不限于实时获取碰撞动作对应的碰撞动画的执行进度,根据该执行进度计算骨骼的位置,进而获取与骨骼的位置对应的一组碰撞体的位置,以更新该组碰撞体的位置。
通过本申请提供的实施例,通过根据不同的动作类型来使用变频更新策略控制对与碰撞动作对应的碰撞动画的更新,从而达到节省了大量的计算处理开销,提高应用性能的目的,进而保证碰撞控制的实时性和准确性。
作为一种可选的方案,根据碰撞动作的动作类型按照预定频率更新第一控制对象的骨骼和一组碰撞体执行与碰撞动作匹配的碰撞动画包括:
S1,在动作类型指示为攻击类型时,则按照大于第一预定阈值的频率更新第一控制对象的骨骼和一组碰撞体执行碰撞动画;
S2,在动作类型指示为非攻击类型时,则按照小于等于第一预定阈值的频率更新第一控制对象的骨骼和一组碰撞体执行碰撞动画。
可选地,在本实施例中,在动作类型指示为攻击类型时,则按照大于第一预定阈值的频率更新第一控制对象的骨骼和一组碰撞体执行碰撞动画包括:S11,在处于攻击类型所指示的攻击的攻击过程中,则按照大于第二预定阈值的频率更新第一控制对象的骨骼和一组碰撞体执行碰撞动画;S12,在处于攻击的攻击准备过程中或攻击防御过程中,则按照小于等于第二预定阈值的频率更新第一控制对象的骨骼和一组碰撞体执行碰撞动画;其中,第二预定区域大于第一预定阈值。
具体结合表1所示进行说明,如表1示出了不同频率的动画状:
表1
序号 动画状态 更新频率
1 待机 低频
2 换出盾牌 低频
3 收起盾牌 低频
4 被盾击 中频
5 破防受击 低频
6 被击退 中频
7 上劈预备 低频
8 上劈蓄力 低频
表1(续)
序号 动画状态 更新频率
9 上劈过程 高频
10 上劈结束 低频
11 上劈被反弹 低频
12 上劈被招架 低频
通过本申请提供的实施例,针对不同的动作类型,及不同的过程,可以通过设置不同的更新频率,实现对控制对象中的骨骼及一组碰撞体进行变频更新,从而达到节省处理开销,保证实时进行碰撞控制的目的。
作为一种可选的方案,根据碰撞动作的动作类型按照预定频率更新第一控制对象的骨骼和一组碰撞体执行与碰撞动作匹配的碰撞动画包括:
S1,每隔与预定频率对应的时间间隔,获取第一控制对象执行碰撞动画的执行进度;
S2,计算在执行进度骨骼的位置;
S3,根据骨骼的位置更新一组碰撞体在碰撞动画中的位置。
可选地,在本实施例中,上述与碰撞动作匹配的碰撞动画可以但不限于是预先配置的,根据不同的执行进度,可以但不限于直接或间接计算出对应的骨骼所在的位置,进而计算出在骨骼外,受骨骼驱动的一组碰撞体所在的位置。
通过本申请提供的实施例,在每隔与预定频率对应的时间间隔,根据每个碰撞动画播放的进度(即执行进度),计算骨骼的位置,从而实现对一组碰撞体在碰撞动画中的位置的更新。
作为一种可选的方案,在控制骨骼和所述一组碰撞体执行碰撞动作之后,还包括:
S1,检测第一控制对象是否与第二控制对象发生碰撞;
S2,在检测出第一控制对象与第二控制对象发生碰撞后,获取碰撞的动作状态;
S3,根据碰撞的动作状态获取与第一控制对象所要执行的碰撞动作匹配的碰撞信息。
可选地,在本实施例中,检测第一控制对象是否与第二控制对象发生碰撞包括:
S11,检测第一控制对象所在第一长方体是否与第二控制对象所在第二长方体相交;
S12,在检测出第一控制对象所在第一长方体与第二控制对象所在第二长方体相交后,检测第一控制对象所在第一凸包体是否与第二控制对象所在第二凸包体相交,其中,第一凸包体的体积小于第一长方体的体积,第一凸包体的体积大于第一控制对象中的一组碰撞体的体积,第二凸包体的体积小于第二长方体的体积,第二凸包体的体积大于第二控制对象中的一组碰撞体的体积;
S13,在检测出第一控制对象所在第一凸包体与第二控制对象所在第二凸包体相交后,检测第一控制对象中的一组碰撞体是否与第二控制对象中的一组碰撞体相交;
S4,在检测出检测第一控制对象中的一组碰撞体与第二控制对象中的一组碰撞体相交后,判定第一控制对象与第二控制对象发生碰撞。
具体结合以下示例进行说明,如图10所示:
S1002,碰撞体分组:碰撞体根据相关性进行分组,每个组独立于其它的组,以整个组为单位进行激活和休眠,其中,在激活状态的分组会进行碰撞检测。假设对于每个控制对象配置了躯体碰撞体(如图7中间所示头部碰撞体、躯干碰撞体及下肢碰撞体),及装备碰撞体(如武器),上述四个碰撞体可以分为一组,当控制对象长期处于静止状态,同时离其它组碰撞体较远时,就可以进入休眠状态,只有与其它组碰撞体较近时才进行激活。
S1004,施加作用:这里所施加的作用是提供的接口,以改变碰撞体的运动,比如施加力、冲量等。当装备碰撞体(如武器)与躯干碰撞体相交时,根据物理定律将会产生作用力。该作用力会施加于武器和躯体碰撞体上,从而使两个碰撞体都产生向某个方向移动的趋势。
S1006,建立约束:约束用于限制碰撞体的移动方向,包括接触约束(在物体之间发生碰撞时生成,用于防止碰撞体互相穿透)和配置约束(配置在物体之间的约束,如铰链、球状关节等)。武器与躯体碰撞体之间就有一个约束,而三个碰撞体之间存在两个球状关节约束(防止躯体碰撞体解体)。这些约束共同作用,限制了碰撞体的移动方向。
S1008,约束求解:采用迭代的方法,尝试最小化碰撞体在物理世界中的实际位置与约束所定义的理想位置的误差,移动碰撞体以同时满足最大量的约束。碰撞检测到的碰撞点(接触约束)也算是一种约束,需要循环代入约束求解,最后得到碰撞体的瞬时最新位置。
S1010,整合:由于碰撞体本身是在移动中而不是静止的,所以还需要将约束求解结果,代入参与碰撞的碰撞体的运动方程重新计算,从而得出这些碰撞体新的位置、朝向、速度、加速度等。
1012,碰撞检测:分为三个阶段的方式,以缩减每步中所需检测的碰撞体集合
Ⅰ、粗略阶段:使用长方体包围盒测试判断哪些碰撞体组有机会碰撞。长方体包围盒检测法只需要看八个顶点的相对位置关系即可判定是否相交,因此用于初步的检测,可以高效地排除大量不会相交的碰撞体组;
Ⅱ、中间阶段:检测复合形状的凸包体(用更精细的多面体去包围碰撞体组,该多面体尽量紧包碰撞体组,但是必须是凸的,凸包体的计算量比碰撞体组要小很多),如果不相交,则不需要测试碰撞体的碰撞;
Ⅲ、精确阶段:测试碰撞体组中的碰撞体是否相交。
其中,在检测到相交后,将其作为接触约束,再代入S1006进行迭代计算。这个迭代会重复多次,当每次迭代得到的结果之间的差值小于预定阈值后,其结果就可以作为碰撞检测的结果进行输出了,如步骤S1014,结果输出。
通过本申请提供的实施例,通过不同阶段的碰撞检测,来减少碰撞检测的处理量,从而达到节省处理开销,提高检测性能的目的,进而提高碰撞检测的效率的效果。
作为一种可选的方案,根据碰撞的动作状态获取与第一控制对象所要执行的碰撞动作匹配的碰撞信息包括:
S1,在动作状态指示处于战斗状态时,则获取与第一控制对象所要执行的碰撞动作匹配的碰撞信息;
S2,在动作状态指示处于非战斗状态时,则忽略第一控制对象所要执行的碰撞动作的碰撞信息。
可选地,在本实施例中,对于不同的动作状态下产生的碰撞动作,可以但不限于分别进行过滤和整理。
例如,对于非战斗状态下产生的碰撞动作的碰撞信息可以但不限于进行忽略处理。需要说明的是,不在战斗状态时,两个控制对象之间还可以因擦肩而过得到碰撞信息,对于这类碰撞信息,则可以忽略过滤,以减少服务器的处理开销。
又例如,对于战斗状态下产生的碰撞动作的碰撞信息可以但不限直接获取,还可以但不限于根据预定条件进一步过滤后再获取。其中,每次碰撞都会有一个渐变的穿插过程,如先是边缘接触,然后是碰撞体整体碰到,最后是边缘接触,直至相互分离。这里需要说明的是,如果碰撞体较厚,则可能有多次整体碰撞得到的碰撞信息,这时可以但不限于取最中间的碰撞信息的值,最终形成上层战斗逻辑所关心的碰撞信息,这时战斗逻辑就能够拿到质量很高的碰撞数据了。
通过本申请提供的实施例,根据不同的动作状态来实现对碰撞动作产生的碰撞信息进行过滤,以简化用于控制的信息内容,并节省了对碰撞信息的存储空间。
作为一种可选的方案,在控制骨骼和一组碰撞体执行碰撞动作之后,还包括:
S1,控制游戏客户端按照服务器的时间线展示第一控制对象执行碰撞动作。
可选地,在本实施例中,控制游戏客户端按照服务器的时间线展示第一控制对象执行碰撞动作可以包括但不限于:通知游戏客户端缓存预定时间,以使游戏客户端在预定时间后按照服务器的时间线同步展示碰撞动作。
可选地,在本实施例中,控制游戏客户端按照服务器的时间线展示第一控制对象执行碰撞动作还可以包括但不限于:通知游戏客户端缓存预定帧。
具体结合以下示例进行说明,服务器从游戏客户端获取碰撞动作,经对控制对象的简化、分析处理后,控制将碰撞动画下发给游戏客户端进行展示,同时还会通知游戏客户端会缓存一定时间,以按服务器的时间线来展示。如图11所示游戏客户端时间轴和服务器时间轴,游戏客户端产生操作但不处理,发送给服务器处理操作,然后发送给游戏客户端展示结果,从而实现为了抵消客户端的网络延迟,以保证不同客户端之间结果播放的一致性。
需要说明的是,在本实施例中,如果网络延迟较小,那么客户端缓存的时间接近于40毫秒,如果网络延迟较大,则有40毫秒的时间缓冲来抵消这个延迟。如果缓存的时间在能保持在0~40毫秒之间,那么玩家看到的结果将与服务器端时间轴上操作的播放时序和节奏完全一致。
通过本申请提供的实施例,通过上述方式将实现在客户端与服务器之间的同步机制,进而有效地解决了由于网络传输导致的不一致问题。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
根据本发明实施例,还提供了一种用于实施上述碰撞控制方法的碰撞控制装置,如图12所示,该装置包括:
1)第一获取单元1202,用于获取游戏客户端中的第一控制对象所要执行的碰撞动作;
2)第二获取单元1204,用于获取第一控制对象的本体信息,其中,本体信息包括第一本体信息和第二本体信息,第一本体信息用于表示第一控制对象的骨骼,第二本体信息用于表示第一控制对象中除骨骼外的、且被骨骼驱动的一组碰撞体;
3)第一控制单元1206,用于控制骨骼和一组碰撞体执行碰撞动作。
可选地,在本实施例中,上述碰撞控制装置可以但不限于应用于3D网络游戏应用中,例如,角色扮演类游戏应用、动作类游戏应用。其中,上述游戏客户端中的第一控制对象可以但不限于为3D游戏应用中的各种角色,例如,人物角色。上述仅是一种示例,本实施例中对此不做任何限定。
需要说明的是,在本实施例中,服务器在获取到游戏客户端中的第一控制对象所要执行的碰撞动作后,通过获取该第一控制对象的本体信息,其中,本体信息包括用于表示第一控制对象的骨骼的第一本体信息,及用于表示第一控制对象中除骨骼外的、且被骨骼驱动的一组碰撞体的第二本体信息,以控制上述骨骼和一组碰撞体执行上述碰撞动作。也就是说,通过对游戏客户端中的第一控制对象进行简化,以忽略与渲染相关的细节信息(用于反应第一控制对象的真实外形,但与碰撞控制无关),利用简化后与第一控制对象匹配的骨骼和一组碰撞体来执行碰撞动作,从而达到了减少在碰撞判定过程的计算量,提高计算的准确性的目的,以克服现有技术中基于体素建立的模型进行碰撞判定的过程中,难以在减少计算量的情况下保证碰撞判定的准确性的问题,进而实现提高对第一控制对象的碰撞控制的准确性的效果。此外,通过简化第一控制对象得到与第一控制对象匹配的骨骼和一组碰撞体,还将大大节省服务器对碰撞控制的处理开销,从而达到缩短处理时间,达到实时同步控制的目的,进而实现提高碰撞控制效率的效果。
可选地,在本实施例中,还包括:1)第一构建单元,用于在获取第一控制对象的本体信息之后,根据第一本体信息构建骨骼,其中,骨骼包括:头部骨骼、躯干骨骼、下肢骨骼;2)第二构建单元,用于根据第二本体信息构建一组碰撞体,其中,一组碰撞体包括以下至少之一:躯体碰撞体、装备碰撞体,躯体碰撞体包括:头部碰撞体、躯干碰撞体、下肢碰撞体
例如,第一控制对象(如人物角色)呈现效果可以但不限于如图7最右侧所示,与第一控制对象匹配的骨骼(用第一本体信息表示)呈现效果可以但不限于如图7最左侧所示,一组碰撞体(用第二本体信息表示)呈现效果可以但不限于如图7中间所示,第一控制对象的头部、躯干和下肢,用胶囊体(即两端为球体,中间为圆柱体)来替代以得到碰撞体。需要说明的是,躯干部分还可以用多段不同的球体或圆柱体等立体部件来替代得到对应的碰撞体,本实施例中对此不做任何限定。
需要说明的是,在游戏应用所执行的操作中,头部、躯体与下肢通常是有效的判定部位,例如,在动作类游戏应用中,往往是通过判定头部、躯体与下肢是否被击中来判定攻击是否有效,同时相对与武器装备的长度,简化后的骨骼和一组碰撞体与原先第一控制对象的误差可以忽略不计。因而,在本实施例中,通过上述简化将实现较为精确地碰撞控制及碰撞检测。
可选地,在本实施例中,上述碰撞动作可以但不限于对应一套持续的碰撞动画。其中,在本实施例中,上述碰撞控制过程中的动作可以但不限于通过动作状态机实现控制转换,例如,如图8所示,以战斗状态为例,在动作状态机设置了不同的动作状态(如图8中所示的方框),以及各个状态之间的迁移方式(如图8中所示的带箭头的直线),动画也可以但不限于通过对应的动画状态机实现控制转换,设置关系可以但不限于参照图8所示,本实施例中对此不再赘述。
具体结合图9所示说明上述动作状态机与动画状态实现碰撞控制的步骤:
S1,获取所要执行的碰撞动作(如通过指令获取执行的碰撞动作),战斗逻辑模块向动作模块发出消息;
S2,动作模块中的动作状态机响应消息,做出状态切换,同时向动画状态机发出消息;
S3,动画状态机响应消息,驱动第一控制对象进入相应动画状态;
S4,驱动与第一控制对象匹配的一组碰撞体在3D空间中执行碰撞运动;
S5,物理引擎检测该一组碰撞体产生的碰撞,每次碰撞会检测出多个碰撞信息;
S6,将上述碰撞信息反馈给动作模块,动作模块会根据当前状态的需求对碰撞信息进行分析和过滤,再反馈给战斗逻辑,其中,上述当前状态的需求可以包括但不限于:是否为产生碰撞的状态、在状态的哪些时间段内碰撞才有效等。
S7,战斗逻辑根据碰撞计算结果,并通知给游戏客户端进行碰撞动画的展示。
需要说明的是,在本实施例中,上述动作状态机可以但不限于用于为上层的战斗逻辑提供了一系列接口,接受并处理接收到的指令,从而实现对上层屏蔽其他与动作无关的细节,上层逻辑只需要知道动作并进行驱动即可,同时底层的系统也不需要关心上层的战斗逻辑,比如一个动作是否可以打断别的动作,动作的进入和退出时需要的做操作等等;此外,上述动作状态机还用于进行必要的验证,同时对碰撞检测的结果进行过滤,比如不在战斗状态时,如果碰撞体发生碰撞,也会产生碰撞信息,这些则需要被过滤忽略掉,同时在战斗状态中,会产生多个碰撞信息,也需要进行有效过滤,只获取有效的碰撞信息,从而达到减少处理量,节省处理开销的目的。上述动画状态机可以但不限于用于管理负责管理与不同的骨骼对应的骨骼动画。需要说明的是,在本实施例中,骨骼将用于驱动一组碰撞体运动,因而,在每段与碰撞动作对应的碰撞动画中,控制骨骼做相应的运动(如碰撞),将进一步驱动在骨骼之外,受该骨骼驱动的一组碰撞体做出对应的运动(如碰撞)。
可选地,在本实施例中,服务器可以但不限于利用Havok物理引擎,来实现实时的碰撞控制。需要说明的是,上述Havok物理引擎是用于提供快速高效率的物理模拟计算。在本实施例中,通过将第一控制对象简化得到对应的骨骼和一组碰撞体,再结合Havok物理引擎的高效处理能力,将一部保证实现高性能的实时碰撞控制。同时所有的战斗结果判定都是基于真实的物理受力,因此碰撞检测的效果也将更真实。
可选地,在本实施例中,上述控制骨骼和一组碰撞体执行碰撞动作包括:根据碰撞动作的动作类型按照预定频率更新第一控制对象的骨骼和一组碰撞体执行与碰撞动作匹配的碰撞动画。
需要说明的是,由于不同的动作类型所需的展示效果不同,例如,在动作类型指示为攻击类型时,由于所涉及的碰撞动作较多,因而,在本实施例中,可以但不限于按照大于预定阈值的频率来更新对应的碰撞动画;相反,在动作类型指示为非攻击类型时,由于未涉及碰撞动作,因而可以但不限于按照小于等于预定阈值的频率来更新对应的碰撞动画。此外,在本实施例中,对于一种动作类型中的不同过程也可以但不限于设置不同的更新频率,本实施例中对此不做限定。通过变频更新的方式来更新对应的碰撞动画,从而保证节省碰撞控制的处理开销,达到实时准确地展示碰撞动画的目的。
可选地,在本实施例中,在控制骨骼和一组碰撞体执行碰撞动作之后,还包括:控制游戏客户端按照服务器的时间线展示第一控制对象执行碰撞动作。
需要说明的是,在本实施例中,为了克服网络时延与网络波动带来的客户端与服务器,以及不同客户端之间的不一致性,通过控制游戏客户端中所有的逻辑都以服务器的时间线为准,其中,服务器逻辑在一条固定的时间轴上向前推进。通过上述方式将实现在客户端与服务器之间的同步机制,进而有效地解决了由于网络传输导致的不一致问题。
通过本申请提供的实施例,服务器在获取到游戏客户端中的第一控制对象所要执行的碰撞动作后,通过获取该第一控制对象的本体信息,其中,本体信息包括用于表示第一控制对象的骨骼的第一本体信息,及用于表示第一控制对象中除骨骼外的、且被骨骼驱动的一组碰撞体的第二本体信息,以控制上述骨骼和一组碰撞体执行上述碰撞动作。也就是说,通过对游戏客户端中的第一控制对象进行简化,以忽略与渲染相关的细节信息(用于反应第一控制对象的真实外形,但与碰撞控制无关),利用简化后与第一控制对象匹配的骨骼和一组碰撞体来执行碰撞动作,从而达到了减少在碰撞判定过程的计算量,提高计算的准确性的目的,以克服现有技术中基于体素建立的模型进行碰撞判定的过程中,难以在减少计算量的情况下保证碰撞判定的准确性的问题,进而实现提高对第一控制对象的碰撞控制的准确性的效果。此外,通过简化第一控制对象得到与第一控制对象匹配的骨骼和一组碰撞体,还将大大节省服务器对碰撞控制的处理开销,从而达到缩短处理时间,达到实时同步控制的目的,进而实现提高碰撞控制效率的效果。
作为一种可选的方案,第一控制单元1206包括:
1)控制模块,用于根据碰撞动作的动作类型按照预定频率更新第一控制对象的骨骼和一组碰撞体执行与碰撞动作匹配的碰撞动画。
可选地,在本实施例中,针对不同的动作类型可以但不限于配置不同的预定频率,例如,对于攻击类型的动作可以但不限于配置高频进行更新,对于非攻击类型的动作可以但不限于配置低频进行更新。例如,最低频率可以为每秒1次,最高频率可以为每秒20次。
需要说明的是,在游戏应用的角色(如控制对象)处于行走移动中,或者与战斗碰撞无关的动作中,由于不需要很高的实时性,因而,在本实施例中,可以但不限于对这些动作配置低于预定阈值的频率(即低频)进行更新,只要保证这些动作在执行完毕后可以达到目标位置即可,其中,该目标位置可以但不限于为利用高于预定阈值的频率(即高频)更新的碰撞动作的起始位置。以保证在执行碰撞动作时,可以实现准确实时的碰撞控制。
可选地,在本实施例中,更新上述碰撞动画可以但不限于更新骨骼及对应一组碰撞体在碰撞动画中的位置。也就是说,在本实施例中可以但不限于实时获取碰撞动作对应的碰撞动画的执行进度,根据该执行进度计算骨骼的位置,进而获取与骨骼的位置对应的一组碰撞体的位置,以更新该组碰撞体的位置。
通过本申请提供的实施例,通过根据不同的动作类型来使用变频更新策略控制对与碰撞动作对应的碰撞动画的更新,从而达到节省了大量的计算处理开销,提高应用性能的目的,进而保证碰撞控制的实时性和准确性。
作为一种可选的方案,控制模块包括:
1)第一控制子模块,用于在动作类型指示为攻击类型时,则按照大于第一预定阈值的频率更新第一控制对象的骨骼和一组碰撞体执行碰撞动画;
2)第二控制子模块,用于在动作类型指示为非攻击类型时,则按照小于等于第一预定阈值的频率更新第一控制对象的骨骼和一组碰撞体执行碰撞动画。
可选地,在本实施例中,第一控制子模块通过以下步骤实现在动作类型指示为攻击类型时,则按照大于第一预定阈值的频率更新第一控制对象的骨骼和一组碰撞体执行碰撞动画:在处于攻击类型所指示的攻击的攻击过程中,则按照大于第二预定阈值的频率更新第一控制对象的骨骼和一组碰撞体执行碰撞动画;在处于攻击的攻击准备过程中或攻击防御过程中,则按照小于等于第二预定阈值的频率更新第一控制对象的骨骼和一组碰撞体执行碰撞动画;其中,第二预定区域大于第一预定阈值。
具体结合表1所示进行说明,如表2示出了不同频率的动画状:
表2
序号 动画状态 更新频率
1 待机 低频
2 换出盾牌 低频
3 收起盾牌 低频
表2(续)
序号 动画状态 更新频率
4 被盾击 中频
5 破防受击 低频
6 被击退 中频
7 上劈预备 低频
8 上劈蓄力 低频
9 上劈过程 高频
10 上劈结束 低频
11 上劈被反弹 低频
12 上劈被招架 低频
通过本申请提供的实施例,针对不同的动作类型,及不同的过程,可以通过设置不同的更新频率,实现对控制对象中的骨骼及一组碰撞体进行变频更新,从而达到节省处理开销,保证实时进行碰撞控制的目的。
作为一种可选的方案,控制模块包括:
1)获取子模块,用于每隔与预定频率对应的时间间隔,获取第一控制对象执行碰撞动画的执行进度;
2)计算子模块,用于计算在执行进度骨骼的位置;
3)更新子模块,用于根据骨骼的位置更新一组碰撞体在碰撞动画中的位置。
可选地,在本实施例中,上述与碰撞动作匹配的碰撞动画可以但不限于是预先配置的,根据不同的执行进度,可以但不限于直接或间接计算出对应的骨骼所在的位置,进而计算出在骨骼外,受骨骼驱动的一组碰撞体所在的位置。
通过本申请提供的实施例,在每隔与预定频率对应的时间间隔,根据每个碰撞动画播放的进度(即执行进度),计算骨骼的位置,从而实现对一组碰撞体在碰撞动画中的位置的更新。
作为一种可选的方案,第一获取单元1202包括:
1)检测模块,用于在控制所述骨骼和一组碰撞体执行碰撞动作之后,检测第一控制对象是否与第二控制对象发生碰撞;
2)第一获取模块,用于在检测出第一控制对象与第二控制对象发生碰撞后,获取碰撞的动作状态;
3)第二获取模块,用于根据碰撞的动作状态获取与第一控制对象所要执行的碰撞动作匹配的碰撞信息。
可选地,在本实施例中,检测模块包括:
(1)第一检测子模块,用于检测第一控制对象所在第一长方体是否与第二控制对象所在第二长方体相交;
(2)第二检测子模块,用于在检测出第一控制对象所在第一长方体与第二控制对象所在第二长方体相交后,检测第一控制对象所在第一凸包体是否与第二控制对象所在第二凸包体相交,其中,第一凸包体的体积小于第一长方体的体积,第一凸包体的体积大于第一控制对象中的一组碰撞体的体积,第二凸包体的体积小于第二长方体的体积,第二凸包体的体积大于第二控制对象中的一组碰撞体的体积;
(3)第三检测子模块,用于在检测出第一控制对象所在第一凸包体与第二控制对象所在第二凸包体相交后,检测第一控制对象中的一组碰撞体是否与第二控制对象中的一组碰撞体相交;
(4)判定子模块,用于在检测出检测第一控制对象中的一组碰撞体与第二控制对象中的一组碰撞体相交后,判定第一控制对象与第二控制对象发生碰撞。
具体结合以下示例进行说明,如图10所示:
S1002,碰撞体分组:碰撞体根据相关性进行分组,每个组独立于其它的组,以整个组为单位进行激活和休眠,其中,在激活状态的分组会进行碰撞检测。假设对于每个控制对象配置了躯体碰撞体(如图7中间所示头部碰撞体、躯干碰撞体及下肢碰撞体),及装备碰撞体(如武器),上述四个碰撞体可以分为一组,当控制对象长期处于静止状态,同时离其它组碰撞体较远时,就可以进入休眠状态,只有与其它组碰撞体较近时才进行激活。
S1004,施加作用:这里所施加的作用是提供的接口,以改变碰撞体的运动,比如施加力、冲量等。当装备碰撞体(如武器)与躯干碰撞体相交时,根据物理定律将会产生作用力。该作用力会施加于武器和躯体碰撞体上,从而使两个碰撞体都产生向某个方向移动的趋势。
S1006,建立约束:约束用于限制碰撞体的移动方向,包括接触约束(在物体之间发生碰撞时生成,用于防止碰撞体互相穿透)和配置约束(配置在物体之间的约束,如铰链、球状关节等)。武器与躯体碰撞体之间就有一个约束,而三个碰撞体之间存在两个球状关节约束(防止躯体碰撞体解体)。这些约束共同作用,限制了碰撞体的移动方向。
S1008,约束求解:采用迭代的方法,尝试最小化碰撞体在物理世界中的实际位置与约束所定义的理想位置的误差,移动碰撞体以同时满足最大量的约束。碰撞检测到的碰撞点(接触约束)也算是一种约束,需要循环代入约束求解,最后得到碰撞体的瞬时最新位置。
S1010,整合:由于碰撞体本身是在移动中而不是静止的,所以还需要将约束求解结果,代入参与碰撞的碰撞体的运动方程重新计算,从而得出这些碰撞体新的位置、朝向、速度、加速度等。
S1012,碰撞检测:分为三个阶段的方式,以缩减每步中所需检测的碰撞体集合:
Ⅰ、粗略阶段:使用长方体包围盒测试判断哪些碰撞体组有机会碰撞。长方体包围盒检测法只需要看八个顶点的相对位置关系即可判定是否相交,因此用于初步的检测,可以高效地排除大量不会相交的碰撞体组;
Ⅱ、中间阶段:检测复合形状的凸包体(用更精细的多面体去包围碰撞体组,该多面体尽量紧包碰撞体组,但是必须是凸的,凸包体的计算量比碰撞体组要小很多),如果不相交,则不需要测试碰撞体的碰撞;
Ⅲ、精确阶段:测试碰撞体组中的碰撞体是否相交。
其中,在检测到相交后,将其作为接触约束,再代入S1006进行迭代计算。这个迭代会重复多次,当每次迭代得到的结果之间的差值小于预定阈值后,其结果就可以作为碰撞检测的结果进行输出了,如步骤S1014,结果输出。
通过本申请提供的实施例,通过不同阶段的碰撞检测,来减少碰撞检测的处理量,从而达到节省处理开销,提高检测性能的目的,进而提高碰撞检测的效率的效果。
作为一种可选的方案,第二获取模块包括:
1)第一获取子模块,用于在动作状态指示处于战斗状态时,则获取与第一控制对象所要执行的碰撞动作匹配的碰撞信息;
2)第二获取子模块,用于在动作状态指示处于非战斗状态时,则忽略第一控制对象所要执行的碰撞动作的碰撞信息。
可选地,在本实施例中,对于不同的动作状态下产生的碰撞动作,可以但不限于分别进行过滤和整理。
例如,对于非战斗状态下产生的碰撞动作的碰撞信息可以但不限于进行忽略处理。需要说明的是,不在战斗状态时,两个控制对象之间还可以因擦肩而过得到碰撞信息,对于这类碰撞信息,则可以忽略过滤,以减少服务器的处理开销。
又例如,对于战斗状态下产生的碰撞动作的碰撞信息可以但不限直接获取,还可以但不限于根据预定条件进一步过滤后再获取。其中,每次碰撞都会有一个渐变的穿插过程,如先是边缘接触,然后是碰撞体整体碰到,最后是边缘接触,直至相互分离。这里需要说明的是,如果碰撞体较厚,则可能有多次整体碰撞得到的碰撞信息,这时可以但不限于取最中间的碰撞信息的值,最终形成上层战斗逻辑所关心的碰撞信息,这时战斗逻辑就能够拿到质量很高的碰撞数据了。
通过本申请提供的实施例,根据不同的动作状态来实现对碰撞动作产生的碰撞信息进行过滤,以简化用于控制的信息内容,并节省了对碰撞信息的存储空间。
作为一种可选的方案,还包括:
1)第二控制单元,用于在控制骨骼和一组碰撞体执行碰撞动作之后,控制游戏客户端按照服务器的时间线展示第一控制对象执行碰撞动作。
可选地,在本实施例中,第二控制单元包括:通知模块,用于通知游戏客户端缓存预定时间,以使游戏客户端在预定时间后按照服务器的时间线同步展示碰撞动作。
可选地,在本实施例中,控制游戏客户端按照服务器的时间线展示第一控制对象执行碰撞动作还可以包括但不限于:通知游戏客户端缓存预定帧。
具体结合以下示例进行说明,服务器从游戏客户端获取碰撞动作,经对控制对象的简化、分析处理后,控制将碰撞动画下发给游戏客户端进行展示,同时还会通知游戏客户端会缓存一定时间,以按服务器的时间线来展示。如图11所示游戏客户端时间轴和服务器时间轴,游戏客户端产生操作但不处理,发送给服务器处理操作,然后发送给游戏客户端展示结果,从而实现为了抵消客户端的网络延迟,以保证不同客户端之间结果播放的一致性。
需要说明的是,在本实施例中,如果网络延迟较小,那么客户端缓存的时间接近于40毫秒,如果网络延迟较大,则有40毫秒的时间缓冲来抵消这个延迟。如果缓存的时间在能保持在0~40毫秒之间,那么玩家看到的结果将与服务器端时间轴上操作的播放时序和节奏完全一致。
通过本申请提供的实施例,通过上述方式将实现在客户端与服务器之间的同步机制,进而有效地解决了由于网络传输导致的不一致问题。
实施例3
本发明实施例的应用环境可以但不限于参照实施例1中的应用环境,本实施例中对此不再赘述。本发明实施例提供了用于实施上述碰撞控制方法的一种可选的具体应用示例。
作为一种可选的实施例,假设游戏应用客户端以网络3D动作类游戏为例,150人对150人在同一个全3D网络游戏场景中,进行流畅战斗。假设其中5对角色将要在战斗状态执行攻击类型的碰撞动作,则服务器会对上述角色进行大量的简化,舍弃了碰撞动作无关的所有细节信息。即,可以通过分别获取上述不同角色(即控制对象)的本体信息以构建与各个角色对应的骨骼及碰撞体组。当碰撞发生时,服务器端通过控制骨骼及碰撞体组执行与碰撞运动对应的碰撞动画,以实现向客户端同步展示对应的碰撞动画,二者具有很高的一致性(如碰撞是否发生、发生的位置、碰撞的力度),具有较高的精确度。进一步,根据对应的碰撞动作变频更新各自的碰撞动画,实现真实、实时、准确的碰撞控制与碰撞检测。具体的实施例可以参照上述实施例1及实施例2,本实施例中对此不再限定。
在本实施例中,实现了服务器端的真3D碰撞检测,同时在保证较高的碰撞检测质量的前提下,对3D模型及碰撞检测流程进行了简化,因此在减少计算量的同时,又具有较高的承载能力,保证了碰撞控制的准确性。同时,在本实施例中对网络同步进行了优化,通过通知客户端缓存预定时间,以按照服务器的时间线来展示碰撞动画,还将克服由于网络传输,客户端与服务器展示进度不一致的问题,进而达到提高应用客户端的性能,改善用户体验的效果。
实施例4
根据本发明实施例,还提供了一种用于实施上述碰撞控制方法的碰撞控制服务器,如图13所示,该服务器包括:
1)通讯接口1302,设置为获取游戏客户端中的第一控制对象所要执行的碰撞动作;
2)处理器1304,与通讯接口1302连接,设置为获取第一控制对象的本体信息,其中,本体信息包括第一本体信息和第二本体信息,第一本体信息用于表示第一控制对象的骨骼,第二本体信息用于表示第一控制对象中除骨骼外的、且被骨骼驱动的一组碰撞体;还设置为控制骨骼和一组碰撞体执行碰撞动作;
3)存储器1306,与通讯接口1302及处理器1304连接,设置为存储第一控制对象的本体信息及第一控制对象所要执行的碰撞动作。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
实施例5
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以位于网络中的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
S1,获取游戏客户端中的第一控制对象所要执行的碰撞动作;
S2,获取第一控制对象的本体信息,其中,本体信息包括第一本体信息和第二本体信息,第一本体信息用于表示第一控制对象的骨骼,第二本体信息用于表示第一控制对象中除骨骼外的、且被骨骼驱动的一组碰撞体;
S3,控制骨骼和一组碰撞体执行碰撞动作。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
S1,根据碰撞动作的动作类型按照预定频率更新第一控制对象的骨骼和一组碰撞体执行与碰撞动作匹配的碰撞动画。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
S1,在控制骨骼和所述一组碰撞体执行碰撞动作之后,检测第一控制对象是否与第二控制对象发生碰撞;
S2,在检测出第一控制对象与第二控制对象发生碰撞后,获取碰撞的动作状态;
S3,根据碰撞的动作状态获取与第一控制对象所要执行的碰撞动作匹配的碰撞信息。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在获取第一控制对象的本体信息之后,根据第一本体信息构建骨骼,其中,骨骼包括:头部骨骼、躯干骨骼、下肢骨骼;根据第二本体信息构建一组碰撞体,其中,一组碰撞体包括以下至少之一:躯体碰撞体、装备碰撞体,躯体碰撞体包括:头部碰撞体、躯干碰撞体、下肢碰撞体。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在控制骨骼和一组碰撞体执行碰撞动作之后,控制游戏客户端按照服务器的时间线展示第一控制对象执行碰撞动作。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (18)

1.一种碰撞控制方法,其特征在于,包括:
获取游戏客户端中的第一控制对象所要执行的碰撞动作;
获取所述第一控制对象的本体信息,其中,所述本体信息包括第一本体信息和第二本体信息,所述第一本体信息用于表示所述第一控制对象的骨骼,所述第二本体信息用于表示所述第一控制对象中除所述骨骼外的、且被所述骨骼驱动的一组碰撞体;
控制所述骨骼和所述一组碰撞体执行所述碰撞动作;
在检测出所述第一控制对象与第二控制对象发生碰撞后,获取所述碰撞的动作状态;
在所述动作状态指示处于战斗状态时,则获取与所述第一控制对象所要执行的所述碰撞动作匹配的所述碰撞信息;
在所述动作状态指示处于非战斗状态时,则忽略所述第一控制对象所要执行的所述碰撞动作的所述碰撞信息。
2.根据权利要求1所述的方法,其特征在于,所述控制所述骨骼和所述一组碰撞体执行所述碰撞动作包括:
根据所述碰撞动作的动作类型按照预定频率更新所述第一控制对象的所述骨骼和所述一组碰撞体执行与所述碰撞动作匹配的碰撞动画。
3.根据权利要求2所述的方法,其特征在于,所述根据所述碰撞动作的动作类型按照预定频率更新所述第一控制对象的所述骨骼和所述一组碰撞体执行与所述碰撞动作匹配的碰撞动画包括:
在所述动作类型指示为攻击类型时,则按照大于第一预定阈值的频率更新所述第一控制对象的所述骨骼和所述一组碰撞体执行所述碰撞动画;
在所述动作类型指示为非攻击类型时,则按照小于等于所述第一预定阈值的频率更新所述第一控制对象的所述骨骼和所述一组碰撞体执行所述碰撞动画。
4.根据权利要求3所述的方法,其特征在于,所述在所述动作类型指示为攻击类型时,则按照大于第一预定阈值的频率更新所述第一控制对象的所述骨骼和所述一组碰撞体执行所述碰撞动画包括:
在处于所述攻击类型所指示的攻击的攻击过程中,则按照大于第二预定阈值的频率更新所述第一控制对象的所述骨骼和所述一组碰撞体执行所述碰撞动画;
在处于所述攻击的攻击准备过程中或攻击防御过程中,则按照小于等于所述第二预定阈值的频率更新所述第一控制对象的所述骨骼和所述一组碰撞体执行所述碰撞动画;
其中,所述第二预定区域大于所述第一预定阈值。
5.根据权利要求2所述的方法,其特征在于,所述根据所述碰撞动作的动作类型按照预定频率更新所述第一控制对象的所述骨骼和所述一组碰撞体执行与所述碰撞动作匹配的碰撞动画包括:
每隔与所述预定频率对应的时间间隔,获取所述第一控制对象执行所述碰撞动画的执行进度;
计算在所述执行进度所述骨骼的位置;
根据所述骨骼的位置更新所述一组碰撞体在所述碰撞动画中的位置。
6.根据权利要求1所述的方法,其特征在于,所述检测所述第一控制对象是否与第二控制对象发生碰撞包括:
检测所述第一控制对象所在第一长方体是否与所述第二控制对象所在第二长方体相交;
在检测出所述第一控制对象所在第一长方体与所述第二控制对象所在第二长方体相交后,检测所述第一控制对象所在第一凸包体是否与所述第二控制对象所在第二凸包体相交,其中,所述第一凸包体的体积小于所述第一长方体的体积,所述第一凸包体的体积大于所述第一控制对象中的所述一组碰撞体的体积,所述第二凸包体的体积小于所述第二长方体的体积,所述第二凸包体的体积大于所述第二控制对象中的一组碰撞体的体积;
在检测出所述第一控制对象所在所述第一凸包体与所述第二控制对象所在所述第二凸包体相交后,检测所述第一控制对象中的所述一组碰撞体是否与所述第二控制对象中的所述一组碰撞体相交;
在检测出检测所述第一控制对象中的所述一组碰撞体与所述第二控制对象中的所述一组碰撞体相交后,判定所述第一控制对象与所述第二控制对象发生所述碰撞。
7.根据权利要求1所述的方法,其特征在于,在所述获取所述第一控制对象的本体信息之后,还包括:
根据所述第一本体信息构建所述骨骼,其中,所述骨骼包括:头部骨骼、躯干骨骼、下肢骨骼;
根据所述第二本体信息构建所述一组碰撞体,其中,所述一组碰撞体包括以下至少之一:躯体碰撞体、装备碰撞体,所述躯体碰撞体包括:头部碰撞体、躯干碰撞体、下肢碰撞体。
8.根据权利要求1所述的方法,其特征在于,在所述控制所述骨骼和所述一组碰撞体执行所述碰撞动作之后,还包括:
控制所述游戏客户端按照服务器的时间线展示所述第一控制对象执行所述碰撞动作。
9.根据权利要求8所述的方法,其特征在于,所述控制所述游戏客户端按照服务器的时间线展示所述第一控制对象执行所述碰撞动作包括:
通知所述游戏客户端缓存预定时间,以使所述游戏客户端在所述预定时间后按照所述服务器的时间线同步展示所述碰撞动作。
10.一种碰撞控制装置,其特征在于,包括:
第一获取单元,用于获取游戏客户端中的第一控制对象所要执行的碰撞动作;
第二获取单元,用于获取所述第一控制对象的本体信息,其中,所述本体信息包括第一本体信息和第二本体信息,所述第一本体信息用于表示所述第一控制对象的骨骼,所述第二本体信息用于表示所述第一控制对象中除所述骨骼外的、且被所述骨骼驱动的一组碰撞体;
第一控制单元,用于控制所述骨骼和所述一组碰撞体执行所述碰撞动作;
其中,所述第一获取单元还包括:第一获取模块,用于在检测出所述第一控制对象与第二控制对象发生碰撞后,获取所述碰撞的动作状态,第二获取模块,所述第二获取模块包括:第一获取子模块,用于在所述动作状态指示处于战斗状态时,则获取与所述第一控制对象所要执行的所述碰撞动作匹配的所述碰撞信息;第二获取子模块,用于在所述动作状态指示处于非战斗状态时,则忽略所述第一控制对象所要执行的所述碰撞动作的所述碰撞信息。
11.根据权利要求10所述的装置,其特征在于,所述第一控制单元包括:
控制模块,用于根据所述碰撞动作的动作类型按照预定频率更新所述第一控制对象的所述骨骼和所述一组碰撞体执行与所述碰撞动作匹配的碰撞动画。
12.根据权利要求11所述的装置,其特征在于,所述控制模块包括:
第一控制子模块,用于在所述动作类型指示为攻击类型时,则按照大于第一预定阈值的频率更新所述第一控制对象的所述骨骼和所述一组碰撞体执行所述碰撞动画;
第二控制子模块,用于在所述动作类型指示为非攻击类型时,则按照小于等于所述第一预定阈值的频率更新所述第一控制对象的所述骨骼和所述一组碰撞体执行所述碰撞动画。
13.根据权利要求12所述的装置,其特征在于,所述第一控制子模块通过以下步骤实现在所述动作类型指示为攻击类型时,则按照大于第一预定阈值的频率更新所述第一控制对象的所述骨骼和所述一组碰撞体执行所述碰撞动画:
在处于所述攻击类型所指示的攻击的攻击过程中,则按照大于第二预定阈值的频率更新所述第一控制对象的所述骨骼和所述一组碰撞体执行所述碰撞动画;
在处于所述攻击的攻击准备过程中或攻击防御过程中,则按照小于等于所述第二预定阈值的频率更新所述第一控制对象的所述骨骼和所述一组碰撞体执行所述碰撞动画;
其中,所述第二预定区域大于所述第一预定阈值。
14.根据权利要求11所述的装置,其特征在于,所述控制模块包括:
获取子模块,用于每隔与所述预定频率对应的时间间隔,获取所述第一控制对象执行所述碰撞动画的执行进度;
计算子模块,用于计算在所述执行进度所述骨骼的位置;
更新子模块,用于根据所述骨骼的位置更新所述一组碰撞体在所述碰撞动画中的位置。
15.根据权利要求11所述的装置,其特征在于,所述检测模块包括:
第一检测子模块,用于检测所述第一控制对象所在第一长方体是否与所述第二控制对象所在第二长方体相交;
第二检测子模块,用于在检测出所述第一控制对象所在第一长方体与所述第二控制对象所在第二长方体相交后,检测所述第一控制对象所在第一凸包体是否与所述第二控制对象所在第二凸包体相交,其中,所述第一凸包体的体积小于所述第一长方体的体积,所述第一凸包体的体积大于所述第一控制对象中的所述一组碰撞体的体积,所述第二凸包体的体积小于所述第二长方体的体积,所述第二凸包体的体积大于所述第二控制对象中的一组碰撞体的体积;
第三检测子模块,用于在检测出所述第一控制对象所在所述第一凸包体与所述第二控制对象所在所述第二凸包体相交后,检测所述第一控制对象中的所述一组碰撞体是否与所述第二控制对象中的所述一组碰撞体相交;
判定子模块,用于在检测出检测所述第一控制对象中的所述一组碰撞体与所述第二控制对象中的所述一组碰撞体相交后,判定所述第一控制对象与所述第二控制对象发生所述碰撞。
16.根据权利要求11所述的装置,其特征在于,还包括:
第一构建单元,用于在所述获取所述第一控制对象的本体信息之后,根据所述第一本体信息构建所述骨骼,其中,所述骨骼包括:头部骨骼、躯干骨骼、下肢骨骼;
第二构建单元,用于根据所述第二本体信息构建所述一组碰撞体,其中,所述一组碰撞体包括以下至少之一:躯体碰撞体、装备碰撞体,所述躯体碰撞体包括:头部碰撞体、躯干碰撞体、下肢碰撞体。
17.根据权利要求11所述的装置,其特征在于,还包括:
第二控制单元,用于在所述控制所述骨骼和所述一组碰撞体执行所述碰撞动作之后,控制所述游戏客户端按照服务器的时间线展示所述第一控制对象执行所述碰撞动作。
18.根据权利要求17所述的装置,其特征在于,所述第二控制单元包括:
通知模块,用于通知所述游戏客户端缓存预定时间,以使所述游戏客户端在所述预定时间后按照所述服务器的时间线同步展示所述碰撞动作。
CN201610616634.9A 2016-07-28 2016-07-28 碰撞控制方法及装置 Active CN106215419B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201610616634.9A CN106215419B (zh) 2016-07-28 2016-07-28 碰撞控制方法及装置
PCT/CN2017/093421 WO2018019160A1 (zh) 2016-07-28 2017-07-18 碰撞控制方法、装置及存储介质
US16/003,283 US10751626B2 (en) 2016-07-28 2018-06-08 Collision control method and apparatus, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610616634.9A CN106215419B (zh) 2016-07-28 2016-07-28 碰撞控制方法及装置

Publications (2)

Publication Number Publication Date
CN106215419A CN106215419A (zh) 2016-12-14
CN106215419B true CN106215419B (zh) 2019-08-16

Family

ID=57535513

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610616634.9A Active CN106215419B (zh) 2016-07-28 2016-07-28 碰撞控制方法及装置

Country Status (3)

Country Link
US (1) US10751626B2 (zh)
CN (1) CN106215419B (zh)
WO (1) WO2018019160A1 (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106215419B (zh) 2016-07-28 2019-08-16 腾讯科技(深圳)有限公司 碰撞控制方法及装置
CN106846129A (zh) * 2017-03-22 2017-06-13 北京太阳花互动科技有限公司 一种虚拟试衣的碰撞检测方法和系统
CN107376351B (zh) * 2017-07-12 2019-02-26 腾讯科技(深圳)有限公司 对象的控制方法和装置
CN108144301B (zh) * 2017-11-30 2020-12-01 腾讯科技(深圳)有限公司 虚拟对象信息的显示方法和装置、存储介质、电子装置
CN108970113B (zh) * 2018-07-26 2021-07-23 广州多益网络股份有限公司 一种碰撞检测方法、装置、设备及介质
CN109464804A (zh) * 2018-09-11 2019-03-15 苏州蜗牛数字科技股份有限公司 一种游戏内被击打目标生物的建模表现方法
CN109621421A (zh) * 2018-12-24 2019-04-16 网易(杭州)网络有限公司 信息处理方法及装置
CN110075523B (zh) * 2019-04-30 2020-04-17 网易(杭州)网络有限公司 动作生成方法、装置、电子设备和计算机可读介质
CN110694276B (zh) * 2019-10-14 2023-08-01 北京代码乾坤科技有限公司 物理效果模拟方法、装置、存储介质、处理器及电子装置
JP7078596B2 (ja) * 2019-11-21 2022-05-31 株式会社コーエーテクモゲームス 画像生成プログラム、画像生成処理装置及び画像生成方法
CN110992466B (zh) 2019-12-05 2021-05-18 腾讯科技(深圳)有限公司 光照探针生成方法、装置、存储介质和计算机设备
CN111346379B (zh) * 2020-03-12 2023-05-12 竞技世界(北京)网络技术有限公司 一种实现碰撞处理的方法及装置
CN111467795B (zh) * 2020-04-02 2023-06-13 北京代码乾坤科技有限公司 游戏场景内的物理结算方法和装置
CN111494954B (zh) * 2020-04-22 2023-09-15 网易(杭州)网络有限公司 游戏中的动画处理方法、装置、电子设备及存储介质
CN111514587B (zh) 2020-04-27 2021-05-11 网易(杭州)网络有限公司 信息处理方法、装置、设备及存储介质
CN113289348A (zh) * 2020-04-28 2021-08-24 阿里巴巴集团控股有限公司 对象处理方法、客户端、服务端、电子设备及存储介质
US11340707B2 (en) * 2020-05-29 2022-05-24 Microsoft Technology Licensing, Llc Hand gesture-based emojis
CN112774204B (zh) * 2021-01-22 2023-10-20 北京字跳网络技术有限公司 一种角色碰撞规避方法、装置、设备以及存储介质
CN116152404B (zh) * 2023-04-19 2023-07-14 苏州浪潮智能科技有限公司 动画重定向方法、装置、计算机设备及存储介质
CN116912431B (zh) * 2023-09-14 2023-12-22 腾讯科技(深圳)有限公司 数据处理方法、装置、电子设备、存储介质及程序产品

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101458825A (zh) * 2009-01-04 2009-06-17 腾讯科技(深圳)有限公司 显卡中实现3d骨骼动画模型的碰撞检测方法及显卡、系统
CN102163077A (zh) * 2010-02-16 2011-08-24 微软公司 使用碰撞体来捕捉屏幕对象
CN104281458A (zh) * 2013-07-02 2015-01-14 腾讯科技(深圳)有限公司 应用程序数据处理方法、装置及处理系统
CN104606887A (zh) * 2014-12-30 2015-05-13 北京像素软件科技股份有限公司 一种碰撞判定方法
CN104606886A (zh) * 2014-12-25 2015-05-13 珠海金山网络游戏科技有限公司 一种分布式无碰撞移动规划的方法
JP2016041238A (ja) * 2015-02-06 2016-03-31 株式会社 ディー・エヌ・エー システム、サーバ装置、および、プログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5680534A (en) * 1994-10-31 1997-10-21 Nintendo Co., Ltd. Video game/videographics program fabricating system and method with superimpose control
US6067096A (en) * 1998-03-04 2000-05-23 Nagle; John Method and system for generating realistic collisions in graphical simulations
US20020082065A1 (en) * 2000-12-26 2002-06-27 Fogel David B. Video game characters having evolving traits
US20040143852A1 (en) * 2003-01-08 2004-07-22 Meyers Philip G. Systems and methods for massively multi-player online role playing games
JP4740644B2 (ja) * 2005-05-11 2011-08-03 任天堂株式会社 画像処理プログラムおよび画像処理装置
CN1975785A (zh) * 2006-12-19 2007-06-06 北京金山软件有限公司 骨骼动画的生成、实现方法/装置、游戏光盘以及外接卡
US7872653B2 (en) * 2007-06-18 2011-01-18 Microsoft Corporation Mesh puppetry
CN101071515A (zh) * 2007-06-25 2007-11-14 北京金山软件有限公司 一种在服务器端实现三维游戏碰撞检测的方法
US10532286B2 (en) * 2014-05-01 2020-01-14 Activision Publishing, Inc. Reactive emitters of a video game effect based on intersection of coverage and detection zones
CN105469406B (zh) * 2015-11-30 2018-05-04 东北大学 一种基于包围盒与空间划分的虚拟物体碰撞检测方法
CN106215419B (zh) * 2016-07-28 2019-08-16 腾讯科技(深圳)有限公司 碰撞控制方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101458825A (zh) * 2009-01-04 2009-06-17 腾讯科技(深圳)有限公司 显卡中实现3d骨骼动画模型的碰撞检测方法及显卡、系统
CN102163077A (zh) * 2010-02-16 2011-08-24 微软公司 使用碰撞体来捕捉屏幕对象
CN104281458A (zh) * 2013-07-02 2015-01-14 腾讯科技(深圳)有限公司 应用程序数据处理方法、装置及处理系统
CN104606886A (zh) * 2014-12-25 2015-05-13 珠海金山网络游戏科技有限公司 一种分布式无碰撞移动规划的方法
CN104606887A (zh) * 2014-12-30 2015-05-13 北京像素软件科技股份有限公司 一种碰撞判定方法
JP2016041238A (ja) * 2015-02-06 2016-03-31 株式会社 ディー・エヌ・エー システム、サーバ装置、および、プログラム

Also Published As

Publication number Publication date
US10751626B2 (en) 2020-08-25
WO2018019160A1 (zh) 2018-02-01
CN106215419A (zh) 2016-12-14
US20180290059A1 (en) 2018-10-11

Similar Documents

Publication Publication Date Title
CN106215419B (zh) 碰撞控制方法及装置
US11113860B2 (en) Particle-based inverse kinematic rendering system
CN107589829B (zh) 一种提供互动游戏体验的系统和方法
US20230043121A1 (en) Skill casting method and apparatus of virtual object, device, and storage medium
CN111249719B (zh) 轨迹提示方法和装置、存储介质及电子装置
CN110694276B (zh) 物理效果模拟方法、装置、存储介质、处理器及电子装置
KR100281837B1 (ko) 화상 처리 장치 및 이를 구비한 게임 장치
CN107172136B (zh) 体素数据的同步方法和装置
JP3485987B2 (ja) 3次元ゲーム装置及びヒットチェック方法
EP2225753A1 (en) Interactive sound synthesis
CN116196611A (zh) 基于挥手动作的体感游戏方法
CN114225413A (zh) 碰撞检测方法、装置、电子设备和存储介质
JP2024508682A (ja) 仮想オブジェクトの制御方法、仮想オブジェクトの制御装置、コンピュータ機器、及びコンピュータプログラム
KR101400536B1 (ko) 온라인 게임 서비스에서의 캐릭터간 충격 반응 표시 방법 및 서버, 및 충격 반응 표시 기능을 가지는 온라인 게임 시스템
JP2012120849A (ja) プログラム、情報記憶媒体及び画像生成装置
Dehesa et al. Towards Data-Driven Sword Fighting Experiences in VR
JP2007259904A (ja) ゲーム装置、ゲームプログラム及びコンピュータ読み取り可能な記録媒体
CN113936079B (zh) 动画生成方法、设备及存储介质
Sherstyuk et al. Head tracking for 3D games: Technology evaluation using CryENGINE2 and faceAPI
Ballantyne et al. Collision Overload: Reducing the Impact in Realtime Physics
JP3442336B2 (ja) ゲームシステム及び情報記憶媒体
CN112870700A (zh) 游戏控制方法、装置、设备和存储介质
CN111078031B (zh) 一种虚拟人物的位置确定方法、装置、设备及存储介质
Lan Simulation of Animation Character High Precision Design Model Based on 3D Image
Flood et al. A User Study of the Just Noticeable Difference in Animation Level of Detail Set in a Game Environment

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant