首页> 中国专利> 一种在3D游戏场景中实现锁屏效果的方法

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

摘要

本发明提供了一种在3D游戏场景中实现锁屏效果的方法,包括如下步骤:A、在游戏场景中选择需要限定镜头范围的区域作为锁屏区域,设置锁屏区域的名称和镜头可移动范围,将该锁屏区域对应的游戏关卡设置锁屏标记;B在游戏进入下一个关卡时,判断该关卡是否配置有锁屏标记,若是,则执行步骤C,否则退出本流程执行正常的3D镜头处理流程;C、确定该关卡对应的锁屏区域,镜头移动时判断镜头所在位置,如果超出该锁屏区域的镜头可移动范围,禁止镜头沿垂直于该锁屏区域边界且向锁屏区域之外的方向移动;如果未超出该锁屏区域的可移动范围,执行正常的3D镜头处理流程;D、通过该关卡后,去除锁屏标记,执行正常的3D镜头处理流程。

著录项

  • 公开/公告号CN102737164A

    专利类型发明专利

  • 公开/公告日2012-10-17

    原文格式PDF

  • 申请/专利权人 北京像素软件科技股份有限公司;

    申请/专利号CN201210182723.9

  • 发明设计人 张明阳;

    申请日2012-06-05

  • 分类号G06F19/00;

  • 代理机构北京德琦知识产权代理有限公司;

  • 代理人牛峥

  • 地址 100043 北京市石景山区八大处高科技园区西井路3号3号楼7170房间

  • 入库时间 2023-12-18 06:52:28

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-10-21

    授权

    授权

  • 2012-12-12

    实质审查的生效 IPC(主分类):G06F19/00 申请日:20120605

    实质审查的生效

  • 2012-10-17

    公开

    公开

说明书

技术领域

本发明涉及计算机三维显示技术领域,尤其涉及一种在3D游戏场景中 实现锁屏效果的方法。

背景技术

目前大部分的三维(3D,Three Dimensions)大型多人在线角色扮演游 戏(MMORPG,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所述在游戏场景中选择需要限定镜头范围的区域作为锁屏 区域,设置锁屏区域的名称和镜头可移动范围包括:

A1、使用场景编辑器,编辑需要限定镜头范围的第一区域;

A2、计算第一区域的沿轴排列包围盒AABB和平均高度,AABB的结构为 4个浮点型的变量,分别为left、right、top和bottom;

A3、从游戏3D引擎获取镜头的左方向的单位向量vLeft,对向量vLeft叉 乘向量(1.0,0.0,0.0)得到垂直向量Tv,对向量vLeft点乘向量(1.0,0.0,0.0)得 到向量vLeft与向量(1.0,0.0,0.0)的夹角的余弦值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,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)。

较佳地,所述第一区域的形状为矩形或其他多边形形状。

从以上技术方案可以看出,通过在游戏场景中设定锁屏区域,并将相应的游 戏关卡设置设置锁屏标记,这样当游戏运行到特定游戏关卡时,将游戏镜头限 定在该锁屏区域内,从而在3D游戏中也能够表现出横板过关游戏的感觉,突出 游戏主题,增加游戏玩法。

附图说明

图1为本发明实施例提供的在3D游戏场景中实现锁屏效果的方法流程 示意图;

图2为本发明实施例提供的一种设置锁屏区域的镜头可移动范围的流程 示意图;

图3为视锥体的侧视图;

图4为视锥体斜45度视角立体图。

具体实施方式

为使本发明技术方案的技术原理、特点以及技术效果更加清楚,以下结 合具体实施例对本发明方案进行详细阐述。

本发明实施例提供的在3D游戏场景中实现锁屏效果的方法流程如图1 所示,包括如下步骤:

步骤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  Axis Bounding Box)和平均高度。AABB的结构为4个浮点型的变量,分别 为left、right、top和bottom.

步骤203:从游戏3D引擎获取镜头的左方向的单位向量vLeft,对向量 vLeft叉乘向量(1.0,0.0,0.0)得到垂直向量Tv,对向量vLeft点乘向量 (1.0,0.0,0.0)得到变量fcosAngle,即向量vLeft与向量(1.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引擎获取镜 头视锥体的视场角度(FOV,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_left =left’+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)。

本发明使得在3DMMORPG游戏中,也能够表现出横板过关游戏的感觉, 突出游戏主题,增加游戏玩法。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本 发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在 本发明保护的范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号