一种在3d游戏场景中实现锁屏效果的方法

文档序号:6370953阅读:210来源:国知局
专利名称:一种在3d游戏场景中实现锁屏效果的方法
技术领域
本发明涉及计算机三维显示技术领域,尤其涉及一种在3D游戏场景中实现锁屏效果的方法。
背景技术
目前大部分的三维(3D,Three Dimensions)大型多人在线角色扮演游戏(MM0RPG,Massively Multiplayer Online Role-Playing Game)游戏米用的都是单一的第三人称 3D视角效果,镜头会跟随游戏角色的移动而移动,游戏角色始终处于屏幕的中央。在第三人称尾随视角效果中,镜头还会随着游戏角色的转动而转动。在某些特定MMORPG游戏环节中,为了给予玩家横板过关的感觉和关卡的直观感
受,让玩家在达成一定条件后才让玩家进入游戏的下一流程,增加游戏玩法,突出游戏特点和主题,需要暂时锁定镜头位置,限制3D游戏中玩家的视角在固定范围内,到了限定范围边缘,镜头不再跟随玩家的移动而移动,称之为锁屏效果。现有的锁屏效果基本都出现在二维游戏场景中。但是3D游戏使用的是3D引擎以及3D场景,无法采用2D锁屏方法。

发明内容
本发明提供了一种在3D游戏场景中实现锁屏效果的方法,可以在3D游戏场景中实现锁屏效果,增进玩家体验。本发明实施例提供一种在3D游戏场景中实现锁屏效果的方法,包括如下步骤A、在游戏场景中选择需要限定镜头范围的区域作为锁屏区域,设置锁屏区域的名称和镜头可移动范围,将该锁屏区域对应的游戏关卡设置锁屏标记;B在游戏进入下一个关卡时,判断该关卡是否配置有锁屏标记,若是,则执行步骤C,否则退出本流程执行正常的3D镜头处理流程;C、确定该关卡对应的锁屏区域,镜头移动时判断镜头所在位置,如果超出该锁屏区域的镜头可移动范围,禁止镜头沿垂直于该锁屏区域边界且向锁屏区域之外的方向移动;如果未超出该锁屏区域的可移动范围,执行正常的3D镜头处理流程;D、通过该关卡后,去除锁屏标记,执行正常的3D镜头处理流程。较佳地,步骤C所述镜头移动时判断镜头所在位置之前进一步包括判断镜头是否处于该锁屏区域的镜头可移动范围之外,若是,将镜头移动到锁屏区域的镜头可移动范围距离当前镜头位置的最近边界,再执行所述镜头移动时判断镜头所在位置的步骤,否则直接执行所述镜头移动时判断镜头所在位置的步骤。较佳地,步骤A所述在游戏场景中选择需要限定镜头范围的区域作为锁屏区域,设置锁屏区域的名称和镜头可移动范围包括Al、使用场景编辑器,编辑需要限定镜头范围的第一区域;A2、计算第一区域的沿轴排列包围盒AABB和平均高度,AABB的结构为4个浮点型的变量,分别为 left、right、top 和 bottom ;A3、从游戏3D引擎获取镜头的左方向的单位向量vLeft,对向量vLeft叉乘向量(1.0,0.0,0.0)得到垂直向量Tv,对向量vLeft点乘向量(I. 0,O. 0,O. O)得到向量vLeft与向量(I. O, O. O, O. O)的夹角的余弦值fcosAngle,使用系统函数acos,通过fAngle=acos (fcosAngle)获取得到向量 vLeft 与向量(1.0,0.0,0.0)的夹角角度 fAngle ;A4、判断Tv的y向量的值是否为负,如果为负,fAngle=_fAngle,如果为正则不做处理;A5、通过调用系统函数D3DXMatrixRotationY (fAngle)得到旋转矩阵,通过第一区域的 AABB 产生 4 个坐标(left, 0,top), (right, O, top), (left, 0, bottom),
(right, 0,bottom),将旋转矩阵分别乘以这4个坐标点,得到新的坐标,根据所述新的坐标重新计算第一区域的包围盒,得到AABB’,四个变量分别为left’、right’、top’和bottom’ ;A5、计算AABB’的平均高度height,然后从游戏3D引擎获取镜头视锥体的视场角度FOV和视点V,通过公式H=V-height,计算镜头视点到区域A的距离H,通过公式arctan(fov*0. 5) *H,计算出视口在区域平面上的宽度的一半W/2,然后根据镜头的宽高比计算出长度的一半L/2 ;A6、用第一区域的新的包围盒AABB’的左边界left’加上W/2得到r_left,右边界right,减去W/2得至Ij r_right,上边界top,减去L/2得到r_top,下边界bottom’加上L/2 得到 r_bottom,判断 r_left 是否小于 r_right,如果否,r_left=r_right= (r_left+r_right)/2,判断 r_top 是否大于 r_bottom,如果否,r_top=r_bottom= (r_top+r_bottom)/2,从而得到镜头的可移动范围R(r_left, r_right, r_top, r_bottom)。较佳地,所述第一区域的形状为矩形或其他多边形形状。从以上技术方案可以看出,通过在游戏场景中设定锁屏区域,并将相应的游戏关卡设置设置锁屏标记,这样当游戏运行到特定游戏关卡时,将游戏镜头限定在该锁屏区域内,从而在3D游戏中也能够表现出横板过关游戏的感觉,突出游戏主题,增加游戏玩法。


图I为本发明实施例提供的在3D游戏场景中实现锁屏效果的方法流程示意图;图2为本发明实施例提供的一种设置锁屏区域的镜头可移动范围的流程示意图;图3为视锥体的侧视图;图4为视锥体斜45度视角立体图。
具体实施例方式为使本发明技术方案的技术原理、特点以及技术效果更加清楚,以下结合具体实施例对本发明方案进行详细阐述。本发明实施例提供的在3D游戏场景中实现锁屏效果的方法流程如图I所示,包括如下步骤步骤101 :在游戏场景中选择需要限定镜头范围的区域作为锁屏区域,设置锁屏区域的名称和镜头可移动范围,将该锁屏区域对应的游戏关卡设置锁屏标记。步骤102 :在游戏进入下一个关卡时,判断该关卡是否配置有锁屏标记,若是,则执行步骤103,否则直接转至步骤107。步骤103 :确定该关卡对应的锁屏区域,判断镜头是否处于该锁屏区域的镜头可移动范围之外,若是,执行步骤104,否则,执行步骤105。步骤104 :将镜头移动到锁屏区域的镜头可移动范围距离当前镜头位置的最近边界。步骤103 - 104是为了处理开始锁屏时镜头位于锁屏区域的镜头可移动范围之外的情况,对于多数应用场景而言,进入关卡后镜头总是处于镜头可移动范围之内,因此所述判断为可选步骤。步骤105 :镜头移动时判断镜头所在位置,如果超出该锁屏区域的镜头可移动范 围,禁止镜头沿垂直于该锁屏区域边界且向锁屏区域之外的方向移动。如果未超出该锁屏区域的可移动范围,执行正常的3D镜头处理流程。例如,镜头移动到可移动范围的边界,该边界平行于y轴方向,如果继续向X轴负方向移动则超出了可移动范围,这时y轴的移动量是仍然可以的。因此限制镜头禁止向X轴负方向移动,向X轴正方向或者沿y轴移动则是允许的。这种限定,就是将移动向量的不能移动的方向的值清0,保留其他方向的移动量。
步骤106 :通过该关卡后,去除锁屏标记。步骤107 :执行正常的3D镜头处理流程。设置锁屏区域的镜头可移动范围可以有多种实现方式,以下通过一个具体实现方式进行说明。图2示出了本发明实施例提供的一种设置锁屏区域的镜头可移动范围的流程,包括如下步骤步骤201 :使用场景编辑器,编辑一个需要限定镜头范围的区域A,这个区域A可以是矩形,也可以是其他多边形形状。步骤202 :读取区域A信息,计算区域的沿轴排列包围盒(AABB, Aligned AxisBounding Box)和平均高度。AABB的结构为4个浮点型的变量,分别为left、right、top和bottom.步骤203 :从游戏3D引擎获取镜头的左方向的单位向量vLeft,对向量vLeft叉乘向量(I. 0,0. 0,0. 0)得到垂直向量Tv,对向量vLeft点乘向量(I. 0,0. 0,0. 0)得到变量fcosAngle,即向量vLeft与向量(I. 0, 0. 0, 0. 0)的夹角的余弦值,使用系统函数acos,通过fAngle=acos (fcosAngle)获取得到向量 vLeft 与向量(1.0,0.0,0.0)的夹角角度 fAngle。步骤204 :判断Tv的y向量的值是否为负,如果为负,fAngle=-fAngle,如果为正则不做处理。步骤205 :通过调用系统函数D3DXMatrixRotationY (fAngle)得到旋转矩阵(TM),通过区域 A 的 AABB 产生 4 个坐标(left, 0, top), (right, 0, top),(left, 0, bottom),(right, 0,bottom),将矩阵TM分别乘以这4个坐标点,得到新的坐标,根据所述新的坐标重新计算区域A的包围盒,得到AABB’。步骤206 :计算AABB’的平均高度height,然后从游戏3D引擎获取镜头视锥体的视场角度(F0V,Field Of View)和视点V,通过公式H=V_height,计算镜头视点到区域A的距离H,通过公式arctan(fOV*0. 5) *H,计算出视口在区域平面上的宽度的一半W/2,然后根据镜头的宽高比计算出长度的一半L/2。视锥体如图3和图4所示,其中图3为视锥体的侧视图,图4为视锥体斜45度视角立体图。步骤207 :用区域A的新的包围盒AABB’的左边界left’加上W/2,即r_Ieft=Ieftj +W/2,右边界 right’ 减去 W/2,即 r_right=right’ -W/2,上边界 top’ 减去 L/2,即 r_top=top’ -L/2,下边界 bottom’ 加上 L/2,即 r_bottom=bottom’ +L/2,判断;r_left 是否小于 r_right,如果否,r_left=r_right= (r_left+r_right) /2,判断 r_top 是否大于 r_bottom,如果否,r_top=r_bottom=(r_top+r_bottom)/2,从而得到镜头的可移动范围 R(r_left, r_right, r_top, r_bottom) 本发明使得在3DMM0RPG游戏中,也能够表现出横板过关游戏的感觉,突出游戏主题,增加游戏玩法。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种在3D游戏场景中实现锁屏效果的方法,其特征在于,包括如下步骤 A、在游戏场景中选择需要限定镜头范围的区域作为锁屏区域,设置锁屏区域的名称和镜头可移动范围,将该锁屏区域对应的游戏关卡设置锁屏标记; B在游戏进入下一个关卡时,判断该关卡是否配置有锁屏标记,若是,则执行步骤C,否则退出本流程执行正常的3D镜头处理流程; C、确定该关卡对应的锁屏区域,镜头移动时判断镜头所在位置,如果超出该锁屏区域的镜头可移动范围,禁止镜头沿垂直于该锁屏区域边界且向锁屏区域之外的方向移动;如果未超出该锁屏区域的可移动范围,执行正常的3D镜头处理流程; D、通过该关卡后,去除锁屏标记,执行正常的3D镜头处理流程。
2.根据权利要求I所述的方法,其特征在于,步骤C所述镜头移动时判断镜头所在位置之前进一步包括判断镜头是否处于该锁屏区域的镜头可移动范围之外,若是,将镜头移动到锁屏区域的镜头可移动范围距离当前镜头位置的最近边界,再执行所述镜头移动时判断镜头所在位置的步骤,否则直接执行所述镜头移动时判断镜头所在位置的步骤。
3.根据权利要求I所述的方法,其特征在于,步骤A所述在游戏场景中选择需要限定镜头范围的区域作为锁屏区域,设置锁屏区域的名称和镜头可移动范围包括 Al、使用场景编辑器,编辑需要限定镜头范围的第一区域; A2、计算第一区域的沿轴排列包围盒AABB和平均高度,AABB的结构为4个浮点型的变量,分别为 left、right、top 和 bottom ; A3、从游戏3D引擎获取镜头的左方向的单位向量vLeft,对向量vLeft叉乘向量(1.0,0.0,0.0)得到垂直向量Tv,对向量vLeft点乘向量(I. 0,0. 0,0. 0)得到向量vLeft与向量(I. 0, 0. 0, 0. 0)的夹角的余弦值fcosAngle,使用系统函数acos,通过fAngle=acos (fcosAngle)获取得到向量 vLeft 与向量(I. 0,0. 0,0. 0)的夹角角度 fAngle ; A4、判断Tv的y向量的值是否为负,如果为负,fAngle=-fAngle,如果为正则不做处理; A5、通过调用系统函数D3DXMatrixRotationY(fAngle)得到旋转矩阵,通过第一区域的AABB 产生 4 个坐标(left, 0,top), (right, 0, top), (left, 0, bottom), (right, 0, bottom),将旋转矩阵分别乘以这4个坐标点,得到新的坐标,根据所述新的坐标重新计算第一区域的包围盒,得到AABB’,四个变量分别为left’、right’、top’和bottom’ ; A5、计算AABB’的平均高度height,然后从游戏3D引擎获取镜头视锥体的视场角度FOV和视点V,通过公式H=V-height,计算镜头视点到区域A的距离H,通过公式arctan(fov*0. 5) *H,计算出视口在区域平面上的宽度的一半W/2,然后根据镜头的宽高比计算出长度的一半L/2 ; A6、用第一区域的新的包围盒AABB’的左边界left’加上W/2得到r_left,右边界right,减去W/2得到r_right,上边界top,减去L/2得到r_top,下边界bottom’加上L/2 得到 r_bottom,判断 r_left 是否小于 r_right,如果否,r_left=r_right= (r_left+r_right)/2,判断 r_top 是否大于 r_bottom,如果否,r_top=r_bottom= (r_top+r_bottom)/2,从而得到镜头的可移动范围R(r_left, r_right, r_top, r_bottom)。
4.根据权利要求3所述的方法,其特征在于,所述第一区域的形状为矩形或其他多边形形状。
全文摘要
本发明提供了一种在3D游戏场景中实现锁屏效果的方法,包括如下步骤A、在游戏场景中选择需要限定镜头范围的区域作为锁屏区域,设置锁屏区域的名称和镜头可移动范围,将该锁屏区域对应的游戏关卡设置锁屏标记;B在游戏进入下一个关卡时,判断该关卡是否配置有锁屏标记,若是,则执行步骤C,否则退出本流程执行正常的3D镜头处理流程;C、确定该关卡对应的锁屏区域,镜头移动时判断镜头所在位置,如果超出该锁屏区域的镜头可移动范围,禁止镜头沿垂直于该锁屏区域边界且向锁屏区域之外的方向移动;如果未超出该锁屏区域的可移动范围,执行正常的3D镜头处理流程;D、通过该关卡后,去除锁屏标记,执行正常的3D镜头处理流程。
文档编号G06F19/00GK102737164SQ20121018272
公开日2012年10月17日 申请日期2012年6月5日 优先权日2012年6月5日
发明者张明阳 申请人:北京像素软件科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1