多客户端联网控制下三维场景协作搬运的实现方法

文档序号:6492495阅读:203来源:国知局
多客户端联网控制下三维场景协作搬运的实现方法
【专利摘要】多客户端联网控制下三维场景协作搬运的实现方法,在服务器中设置三维场景及人物,多个客户端通过一个客服端与服务器联网,每一个客户端在三维场景中对应一个虚拟人物,在三维场景中模拟多人协作对物体的搬运操作。本发明使用了现有的三维渲染技术及网络环境,通过一系列的脚本动作状态控制、统一的计算机实时同步、三维人物渲染及搬运物体微调,使计算机模拟多人搬运物体行为细节表现更为真实,效率更高。
【专利说明】多客户端联网控制下三维场景协作搬运的实现方法
【技术领域】
[0001]本发明属于计算机三维模拟【技术领域】,涉及计算机模拟多人搬运物体行为技术,以联机协作的控制方式和三维表现方式模拟并显示多人搬运物体的行为,为一种多客户端联网控制下三维场景协作搬运的实现方法。
【背景技术】
[0002]在电力虚拟仿真三维培训项目中涉及多人协作对物体进行搬运的环节,现有的三维技术在对单人物体搬运的控制方面已经比较成熟,使用脚本触发动画播放,使用程序控制物体与人物的绑定。在多人协作方面由于涉及场景同步、脚本动作同步、网络命令同步及物体位移计算等多方面的内容,使得计算机网络多人协作在虚拟仿真的环境下模拟多人搬运物体行为一直是一个困难的问题。

【发明内容】

[0003]本发明要解决的问题是:在电力虚拟仿真三维培训项目中,实现多客户端操作模拟多人协作搬运的三维场景,并在各客户端同步显示模拟搬运的结果。
[0004]本发明的技术方案为:多客户端联网控制下三维场景协作搬运的实现方法,在服务器中设置三维场景及人物,多个客户端通过一个客服端与服务器联网,每一个客户端在三维场景中对应一个虚拟人物,在三维场景中模拟多人协作对物体的搬运操作,具体为:
[0005]I)用脚本定义所有人物动作的骨骼动画,对应不同的动作设定不同的状态标记,骨骼动画分为只播放一次、循环播放和播放直到某条件触发停止三种,骨骼动画与状态标记以及设定的触发条件构成脚本动画;
[0006]2)对被搬运物体进行分类,根据搬运方式和搬运人数进行区分;
[0007]3)对脚本动画、骨骼动画,以及它们的初始化属性参数进行本地定义;
[0008]4)建立三维场景,初始化场景参数,所有被移动物体及人物的位置、状态、参数的更新全部通过客服端进行,即所有每台客户端对虚拟人物的控制命令发送至客服端,客服端再传输至服务器及其它客户端,更新对应的虚拟人物的状态标记,服务器对应收到的所有控制命令更新三维场景状态,服务器将三维场景状态通过客服端同步至各客户端,实现所有客户端的同步更新;
[0009]5)客户端通过客服端与服务器联网,载人三维场景,从客服端更新所有同步信息,同时进行同步渲染,使所有客户端与服务器中渲染的三维场景保持一致;
[0010]6)客户端控制对应的虚拟人物,通过状态标记控制脚本动画,状态标记的改变通过客服端发送至服务器,服务器对收到的同一时间的各虚拟人物的状态标记变更进行处理,得到对应的协作搬运动作,更新人物及被搬运物体的位置信息,服务器将所述人物及被搬运物体的位置信息通过客服端同步至各客户端,客户端通过从客服端同步得到的其它客户端的对应虚拟人物的状态标记,以及所述人物及被搬运物体的位置信息,在本客户端进行三维场景协作搬运的显示。[0011]在步骤6)三维场景协作搬运的显示过程中,被搬运物体和虚拟人物上设有对应的搬运节点,虚拟人物根据状态标记进行动作,当虚拟人物的搬运节点与被搬运物体的搬运节点重合时,就位成功,绑定这两个搬运节点;在单人搬运模式下,直接固定虚拟人物与被搬运物体的位置,再播放骨骼动画实现虚拟人物的后续动作变化,被搬运物体随虚拟人物的动作移动;在多人模式下,等待全部虚拟人物就位成功后,固定拟人物与被搬运物体的位置,再播放骨骼动画实现虚拟人物的后续动作变化,被搬运物体随虚拟人物的动作移动。
[0012]在多人搬运模式中,实时计算每个虚拟人物对被搬运物体产生的作用力,在三维场景协作搬运的显示中进行对应表现。
[0013]客户端与服务器及客服端的数据同步频率在微秒级。
[0014]本发明使用了现有的三维渲染技术及网络环境,通过一系列的脚本动作状态控制、统一的计算机实时同步、三维人物渲染及搬运物体微调,使计算机模拟多人搬运物体行为细节表现更为真实,效率更高。【具体实施方式】
[0015]本发明在三维虚拟场景中,模拟多人协作对物体的搬运。
[0016]涉及的模拟对象包括:物体搬运姿势、多人移动方向对物体移动的影响、多人动作或位置对物体移动的影响、物体及人物位置变化的相互影响。
[0017]模拟搬运方式包括:拎、捧、扛。
[0018]本发明中,多个客户端通过一个客服端与服务器联网,每一个客户端在三维场景中对应一个虚拟人物,使用骨骼动画确定动作,网络同步实现状态及属性同步,脚本触发实现命令传递。使用客服端和客户端分离的方式实现场景内容同步。包括被搬运物体运动及状态的统一、所有客户端控制人物位置、动作、状态的同步。
[0019]具体过程如下:
[0020]1、前期定义所有的人物动作的骨骼动画,骨骼动画就是在模型里面的控制模型运动的一系列关键帧描述。对应不同的动作设定不同的状态标记,骨骼动画分为只播放一次、循环播放和播放直到某条件触发停止三种,骨骼动画与状态标记以及设定的触发条件构成脚本动画,在不同的状态标记下自动播放不同的骨骼脚本动画。
[0021]不同的状态指对人物当前不同状态的定义,例如:行走状态、捡起状态、放下状态、跑步状态……,所有的状态对应一个过程动作,过程动作有的是循环的,例如走路,有的是播放一次,例如捡起。
[0022]2、其次对被搬运物体进行分类,主要区分搬运方式和搬运人数。
[0023]3、所有的前期定义脚本、骨骼动画、初始化属性参数都定义本地。
[0024]本地定义指的是固定的状态对应的骨骼动画,脚本动画定义的内容,一些固定的定义都写在本地,即服务器,同时每个客户端都拷贝一份。客户端与服务器同步的时候,只同步状态标记,然后本地通过状态标记调用脚本动画。
[0025]4、客服端建立场景,初始化所有参数,对所有被移动物体及人物的位置、状态、参数进行实时更新。
[0026]本发明中,状态标记的更改全部以网络中的一台客户端为标准,所有客户端要求的改变,全部由这台机器执行,然后将改变后的状态同步发送给所有其他的客户端。[0027]所有参数有固定参数,有一些是根据场景改变的,例如在2人搬运物体中,当第三个人如场景时,需要初始化的参数是第一、第二个人的位置信息,动作状态信息,被搬运物体的位置信息(包括朝向),还有本身自己进入场景后的位置信息及动作信息。这样初始化后用来渲染同步其他的计算机,使得大家看到的画面是同一幅。
[0028]5、客户端通过客服端链接服务器,载入三维场景,从客服端更新所有同步信息,同时进行同步渲染。使所有客户端包括服务器渲染的三维场景保持一致。
[0029]所述同步信息就是同步状态标记信息。例如一个人物甲,他的状态是走动改变至跑动,那么需要有客服端把这个状态同步到所有的其他客户端,目的是让所有的客户端中同一人物甲拥有相同的状态,相同的状态就会对应播放相同的脚本动画,对应相同的动作。
[0030]本发明中渲染都在本地,由三维引擎渲染,因为状态同步,所以各自本地都会渲染相同的动画,相当于同步渲染。
[0031]6、客户端选择人物角色进行控制,所有状态控制动画,在脚本中规定,每帧检查一下状态,不同的状态下播放不同的动画,当状态被改变,第一时间会替换播放的骨骼动画。状态的改变通过服务器进行改变,改变后同步所有客户端角色,当客户端在一台机器上控制人物甲拿东西或者放下东西的时候,本地先不进行状态的改变(状态不改变动作就不会变),这个改变的要求送给服务客户端,然后执行对应改变,最后把改变后的状态发到所有的客户端。。同时实时更新位置信息,使得移动与动画协调。位置信息是人物或者物体的移动在三维中的坐标信息,包括位置(xyz)和朝向。当位置移动速度和动画播放速度协调的时候就是最佳,例如光移动位置不做动作就变成平移,如果光做动作不动位置就变成原地太空步。
[0032]7、被搬运物体和虚拟人物上设有搬运节点,搬运节点的作用是将物体绑定到人物模型的对应位置,例如抗一个东西,最后要讲物体绑定到人物模型的肩膀上,如果是捧东西就是绑定到人物模型的手掌上。当人物角色上的搬运节点跟物体上的搬运节点重合时,就位成功,绑定这2个搬运节点,物体在人物上固定,开始播放动作动画,例如捡起东西,先开始播放蹲下的动作然后播放手伸出来的动作,让人物蹲下伸手,将手握住被捡东西的时候就是就位成功,这个时候绑定,然后物体跟手部的动作一起运动。在单人搬运的模式下,直接固定位置。在多人模式下,等待多人全部就位,然后各自播放骨骼动画实现动作变化。当人物角色上的搬运节点靠近到物体的搬运节点位置,在容忍值范围内自动固定。当容忍值适当,搬运时就能实现画面上的协调操作。适当的值是一个视觉上的容忍值,当捡起物体,当物体大小改变时,蹲下后握住物体的动作未必跟物体紧密结合,这个时候设置一个容忍值,当手靠近物体至多少范围时,物体也自动往手部移动。这个值不能随便设置,标准是视觉上看不出物体的主动移动。
[0033]8、在移动的过程中,单人搬运模式直接将被搬运物体绑定到人物角色模型跟随人物动作的移动。
[0034]9、在多人搬运模式中,需要实时计算每个人物角色对被搬运物体产生的作用,从力的角度分析,实现相互作用的结果,然后进行表现。当2人搬运物体的时候,同时作用于同一个物体,因为物体不可形变,并且人在扛起物体后,人与物体间的距离保持不变。最后所有的控制转化为两个人及物体的移动,其中人物与物体间的距离保持不变。在三维场景中,控制人物移动使用大小相同的一个力,只有方向在不停的改变。在计算这个力的时候,将2个力分解成沿着2个人物的搬运节点和垂直于2个人物的搬运节点方向。在沿着2个人物的搬运节点方向,当力的方向相同的时候则忘同一个方向移动,如果力的方向不相同的时候相减,然后沿着力大的方向移动。垂直于2个人物的搬运节点上的力如果是同一方向则直接移动,如果在不同方向先确定转动,当旋转至沿着2个人物的搬运节点方向时,再通过加减计算物体移动方向。
[0035]例如2人搬运,其中一人不动,在固定搬运节点与人物节点的基础上,另一个人不能靠近或者原理,只能实现右移和右移,左右移动的结果也将转化为以另一个人为圆心的旋转。当2个人同时移动的时候分析移动的方向,分解成沿着被搬运物体方向和垂直物体方向。假设人物给出的力相等,根据角度算出分项力,合并前后分项力决定物体整体移动方向,然后前侧分项力决定物体前端移动方向,后侧分项力决定物体后端移动方向,其中实时保证前后连接点之间的距离。
[0036]10、在超过3人的搬运模式中使用与2人搬运同样的方式。作用于同一点的分项力可以合并,不作用于同一点的分项力则影响旋转。这里将人物作用于搬运节点的力分解为水平于节点连线和垂直于节点连线。因为总力大小相等,根据角度不同,分解出来的力就会不同,然后可以用一定的单位进行差量计算。影响旋转的是被搬运物体,由分项力的方向决定。
[0037]11、网络实时同步人物角色和被搬运的物体位置数据,同步频率在微秒级。其他属性状态的改变,例如动画状态,类别,快慢,播放时间等,都是由各自客户端所控制的虚拟人物触发,主要是根据不同状态确定不同骨骼动画的播放、播放方式等,这里所述触发不是改变,所有状态标记的变更由客服端改变后统一对各个客户端进行更新。在角色操控触发后,客户端申请改变状态,提交服务器,在服务器计算后,将状态同步给所有的操控客户端。服务器计算有2种,一种是直接的改变的,如播放状态。另一种是需要计算的,如分项力大小方向,然后确定被搬运物体旋转的角度移动的速度等。然后客户端播放不同的动作骨骼动画。结合实时同步的位置信息,包括三维空间位置及朝向。实现多人协作搬运物体的三维虚拟仿真。
[0038]本发明具体实施时,各客户端在同一网络中进行联机,打开同一幅场景地形,进入场景后,各自选择不同的人物角色进行控制。所有角色进入场景时首先进行状态和位置同步。各自通过操作对自己控制的人物角色发布命令,进行相关动作的执行。在搬运物体的时候,点击被搬运物体,获取该物体的位置,然后自动走到物体附近,根据定义的不同搬运方式,把物体搬运起来,然后点击不同的场景位置,角色将手中的物体搬运至指定地点,在此过程中场景中所有角色的控制端机器上同步显示搬运过程及具体细节。动作协调、过程平滑。所有动作及状态改变实时同步性高、无滞留、无误动作。
[0039]如果被搬运物体需要多人合作进行,人数不够时点击被搬运物体自动走到物体旁边就位,等人数够并都就位以后,各自执行各自的动作脚本。同时进行动作播放,同时各自的动作实时作用于被搬运物体。被搬运物体根据所有参与角色的动作调整位置及状态。使被搬运物体及相关角色都能平滑运动。包括地形起伏时的运动处理。
[0040]同步时间能达到微秒级,在动作的流畅度上能达到平衡过度,被搬运物体运动轨迹符合物理学原理。同时逼真的实现了现实运动状态的模拟。
【权利要求】
1.多客户端联网控制下三维场景协作搬运的实现方法,其特征是在服务器中设置三维场景及人物,多个客户端通过一个客服端与服务器联网,每一个客户端在三维场景中对应一个虚拟人物,在三维场景中模拟多人协作对物体的搬运操作,具体为: 1)用脚本定义所有人物动作的骨骼动画,对应不同的动作设定不同的状态标记,骨骼动画分为只播放一次、循环播放和播放直到某条件触发停止三种,骨骼动画与状态标记以及设定的触发条件构成脚本动画; 2)对被搬运物体进行分类,根据搬运方式和搬运人数进行区分; 3)对脚本动画、骨骼动画,以及它们的初始化属性参数进行本地定义; 4)建立三维场景,初始化场景参数,所有被移动物体及人物的位置、状态、参数的更新全部通过客服端进行,即所有每台客户端对虚拟人物的控制命令发送至客服端,客服端再传输至服务器及其它客户端,更新对应的虚拟人物的状态标记,服务器对应收到的所有控制命令更新三维场景状态,服务器将三维场景状态通过客服端同步至各客户端,实现所有客户端的同步更新; 5)客户端通过客服端与服务器联网,载人三维场景,从客服端更新所有同步信息,同时进行同步渲染,使所有客户端与服务器中渲染的三维场景保持一致; 6)客户端控制对应的虚拟人物,通过状态标记控制脚本动画,状态标记的改变通过客服端发送至服务器,服务器对收到的同一时间的各虚拟人物的状态标记变更进行处理,得到对应的协作搬运动作,更新人物及被搬运物体的位置信息,服务器将所述人物及被搬运物体的位置信息通过客服端同步至各客户端,客户端通过从客服端同步得到的其它客户端的对应虚拟人物的状态标记,以及所述人物及被搬运物体的位置信息,在本客户端进行三维场景协作搬运的显示。
2.根据权利要求1所述的多客户端联网控制下三维场景协作搬运的实现方法,其特征是在步骤6)三维场景协作搬运的显示过程中,被搬运物体和虚拟人物上设有对应的搬运节点,虚拟人物根据状态标记进行动作,当虚拟人物的搬运节点与被搬运物体的搬运节点重合时,就位成功,绑定这两个搬运节点;在单人搬运模式下,直接固定虚拟人物与被搬运物体的位置,再播放骨骼动画实现虚拟人物的后续动作变化,被搬运物体随虚拟人物的动作移动;在多人模式下,等待全部虚拟人物就位成功后,固定拟人物与被搬运物体的位置,再播放骨骼动画实现虚拟人物的后续动作变化,被搬运物体随虚拟人物的动作移动。
3.根据权利要求2所述的多客户端联网控制下三维场景协作搬运的实现方法,其特征是在多人搬运模式中,实时计算每个虚拟人物对被搬运物体产生的作用力,在三维场景协作搬运的显示中进行对应表现。
4.根据权利要求1一 3任一项所述的多客户端联网控制下三维场景协作搬运的实现方法,其特征是客户端与服务器及客服端的数据同步频率在微秒级。
【文档编号】G06T13/40GK103854300SQ201210523698
【公开日】2014年6月11日 申请日期:2012年12月7日 优先权日:2012年12月7日
【发明者】顾晓峰, 马骏, 吴强, 胡林宝, 陶安余, 李世倩, 王德海, 倪卫良, 韩峰 申请人:江苏省电力公司, 国家电网公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1