专利名称:应用于3d网络游戏中的相机控制方法
技术领域:
本发明涉及计算机技术,特别涉及应用于3D网络游戏中的相机控制方法。
背景技术:
3D网络游戏中的相机一般用来控制当前游戏场景中的视角。一般情况下,3D网络游戏世界中有以下三种矩阵世界矩阵(world matrix),其用于控制对象在游戏场景中的位置或者姿态,视/相机矩阵(view matrix)其用于控制相机在游戏场景中的位置和姿态,进而决定游戏场景中哪些物体是可见的,哪些物体是不可见的;投影矩阵(project matrix),其用于控制可见物体在屏幕上如何显示。目前网络游戏中主流的做法是将相机绑定在游戏角色身上,由玩家通过鼠标来控制相机角度转动和相机半径。然而,由于网络游戏中比如网络战斗游戏,游戏角色移动频繁,大量的移动可能造成目标角色移出相机的可视范围,在这种情况下,需要玩家频繁手动控制鼠标将相机移动至可以看见目标角色的角度和半径,这需要玩家进行大量繁琐的操作,对玩家的要求过高,增加游戏者的负担。
发明内容
本发明提供了应用于3D网络游戏中的相机控制方法,以实现根据当前玩家控制的角色和目标角色位置自动调整相机的位置。本发明提供的技术方案包括一种应用于3D网络游戏中的相机控制方法,包括A,将相机的视点位置始终绑定在玩家控制的当前游戏角色上;B,利用所述当前游戏角色的位置和所述当前游戏角色的目标游戏角色的位置自适应调整相机的位置,以使所述当前游戏角色和所述目标游戏角色同时锁定在相机视野范围内。由以上技术方案可以看出,本发明中,通过将相机的视点位置始终绑定在玩家控制的当前游戏角色上;利用所述当前游戏角色的位置和所述当前游戏角色的目标游戏角色的位置自适应调整相机的位置,以使所述当前游戏角色和所述目标游戏角色同时锁定在相机视野范围内,这相比于现有技术在网络游戏中释放了玩家的大量操作,降低了玩家的负担,避免由于玩家手工控制相机带来的诸多缺陷。
图1为本发明实施例提供的基本流程图;图2为本发明实施例应用的三维坐标系示意图;图3为本发明实施例提供的调整示意图;图4为本发明实施例提供的另一调整示意图。
具体实施例方式为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。本发明提供了应用于3D网络游戏中的相机控制方法,该方法在网络游戏中释放了玩家的大量操作,降低了玩家的负担,其根据玩家当前控制的网络游戏角色(简称当前游戏角色)和该网络游戏角色的目标游戏角色的位置自动调整相机的位置,比如相机的角度和相机的半径,以保证将当前游戏角色和目标游戏角色同时锁定在相机的视野范围内。下面对本发明提供的方法进行描述参见图1,图1为本发明实施例提供的方法流程图。如图1所示,该流程可包括以下步骤步骤101,将相机的视点位置始终绑定在玩家控制的当前游戏角色上。步骤102,利用所述当前游戏角色的位置和所述当前游戏角色的目标游戏角色的位置自适应调整相机的位置,以使所述当前游戏角色和所述目标游戏角色同时锁定在相机视野范围内。至此,完成图1所示的流程。需要说明的是,该流程是在当前游戏角色存在对应的目标游戏角色的情况下执行的,如果当前游戏角色不存在对应的目标游戏角色,则可直接按照现有流程处理,或者按照预先设置的其他方式执行,本发明不具体限定。下面对图1所示流程中步骤102进行详细描述以本发明使用的三维坐标系为左手坐标系(x、y、z)为例,具体如图2所示,当然, 本发明也可采用其他类型的三维坐标系,具体原理类似左手坐标系(x,y,z)。在图2中,χ、 Z为水平方向坐标轴,y为竖直方向坐标轴。基于图2所示的三维坐标系,本发明中,针对相机定义以下几个核心变量作当前游戏角色在三维坐标系中的位置vSelfPosU,y,ζ),目标游戏角色在三维坐标系中的位置vTargetPos(x,y,ζ),相机在三维坐标系中的视点位置vCameraEyesPos (x,y,ζ), 相机的当前位置vCameraPos (χ, y,ζ),相机的半径fCameraRadius,相机的当前方向向量 vCameraDir (x, y,ζ)相机的当前方向向量换算出以下三个角度相机的当前方向与χ轴的夹角Yaw,与y轴的夹角Pitch,与ζ轴的夹角Roll。基于上述定义的变量,下面对图1所示流程中步骤102进行描述在上述步骤101中,相机的视点位置vCameraEyesPos (x, y,ζ)始终绑定在玩家控制的当前游戏角色vSelfPosU,y,ζ)上,其中,该vSelfPos (x,y,ζ)中的y表示当前游戏角色的竖直高度。另外,上述步骤102的调整目的是控制当前游戏角色和所述目标游戏角色同时锁定在相机视野范围内。其中,该调整的前提是在能不调整的情况下尽量不进行调整,或者使用最小的调整时间来达到调整的目的,这种策略使相机的调整更趋近于一种类似玩家自己在做相机调整的方式。下面举例几种情况对步骤102进行描述情况1 当前游戏角色靠近相机一侧,同时所述相机没有被碰撞的情况。其中,情况1中,以及下述各个情况中所述的相机被碰撞,主要是指相机与地形或者场景中建筑产生碰撞。基于情况1,则上述步骤102具体可为
将所述相机的半径锁定在第一设定半径,并将所述相机与竖直坐标轴Y轴的夹角 Pitch锁定在第一设定角度,并利用所述当前游戏角色的位置和所述目标游戏角色的位置自适应调整所述相机的当前视点位置与所述相机当前位置之间的向量。至于相机与ζ轴的夹角本情况1下可不进行调整。其中,第一设定半径、第一设定角度的设置均是按照保证当前游戏角色和所述目标游戏角色同时锁定在相机视野范围内的原则设置的。优选地,本发明可设置第一设定半径为8米,第一设定角度为15°。至于调整相机的当前视点位置与所述相机当前位置之间的向量,其包括步骤B11,确定所述当前游戏角色和所述目标游戏角色之间的距离,判断所述距离是否小于第一设定距离,如果是,结束调整,否则,执行步骤B12 ;步骤B12,确定以下两个向量组成的夹角所述相机的当前视点位置与所述相机当前位置之间的向量,以及所述当前游戏角色与所述目标游戏角色之间的向量;步骤B13,调整所述相机的当前视点位置与所述相机当前位置之间的向量,以使确定的夹角锁定在第一设定角度范围内。其中,第一设定距离、第一设定角度范围的设置均是按照保证当前游戏角色和所述目标游戏角色同时锁定在相机视野范围内的原则设置的。这里,可建议第一设定距离为 3米,第一设定角度范围为,-45° ]。基于上述步骤Bll至步骤B13的描述,可以看出,当所述当前游戏角色和所述目标游戏角色之间的距离小于3米时,结束调整,进而不需要调整所述相机的当前视点位置与所述相机当前位置之间的向量,而当所述当前游戏角色和所述目标游戏角色之间的距离大于或等于3米时,需要调整相机,以使上述确定的夹角锁定在,-45° ]中,进而保证所述当前游戏角色和所述目标游戏角色同时锁定在相机视野范围内。至于如何通过调整所述相机的当前视点位置与所述相机当前位置之间的向量,以使确定的夹角锁定在第一设定角度范围,其可包括判断该确定的夹角是否在第一设定角度范围内,如果是,则结束调整,否则,将所述当前游戏角色与所述目标游戏角色之间的向量在其两侧分别偏移第二设定角度和第三设定角度,得到第二向量和第三向量;确定所述相机的当前视点位置与所述相机当前位置之间的向量分别与所述第二向量和第三向量形成的夹角,得到取值最小的夹角,将所述相机的当前视点位置与所述相机当前位置之间的向量向取值最小的夹角所涉及的向量偏移。其中,第二设定角度和第三设定角度的设置均是按照保证当前游戏角色和所述目标游戏角色同时锁定在相机视野范围内的原则设置的,这里,可建议第二设定角度为+5°, 第三设定角度可为-5°。基于此,如图3所示,在图3中,线1为所述相机的当前视点位置与所述相机当前位置之间的向量,线2为所述当前游戏角色与所述目标游戏角色之间的向量,如果在步骤Bll中,确定出线1与线2之间的夹角不在第一设定角度范围内,比如,以第一设定角度范围为,-45° ]为例,线1与线2之间的夹角大于45°,如此,就需要将线2分别偏移+5°和-5°,得到如图3所示的线3和线4,之后,确定线1分别与线3、线4 形成的夹角中哪一个夹角小,在图3中,线1与线3之间的夹角小于线1与线4之间的夹角, 基于此,线1就需要向线3偏移,直至偏移至线3。
至此,通过上面描述,能够实现情况1下相机的调整,保证当前游戏角色和所述目标游戏角色同时锁定在相机视野范围内。情况2 当前游戏角色靠近所述相机、且所述相机被碰撞的情况。针对情况2,则步骤102中的调整包括以下步骤步骤B21,首先进行如情况1所述的将以下两个向量组成的夹角所述相机的当前视点位置与所述相机当前位置之间的向量,以及所述当前游戏角色与所述目标游戏角色之间的向量调整至第一设定范围内,如果通过将确定的夹角锁定在第一设定角度范围内不再有碰撞,则只需要将确定的夹角锁定在第一设定角度范围内即可,而如果通过将确定的夹角锁定在第一设定角度范围内还有碰撞,则,执行步骤B22 ;步骤B22,缩小所述相机的半径,所述相机的半径会缩小至第一设定相机范围,该第一设定相机范围的设置是按照保证当前游戏角色和所述目标游戏角色同时锁定在相机视野范围内的原则设置的,这里可为[3米,8米]。如果将所述相机的半径缩小至第一设定相机范围时不再有碰撞,则不再进行调整,否则,执行步骤B23 ;步骤B23,尝试对所述相机与数值坐标轴Y轴的夹角Pitch进行自适应调整,如果在Pitch调整到第一最大设定角度比如20°时,仍不能避免所述相机被碰撞,则执行步骤 B24。优选地,本发明中,步骤B23是在相机的半径缩小至第一设定相机范围中的最小值后仍有碰撞时执行的。步骤B24,通过对所述相机当前位置与水平坐标轴X轴的夹角进行插值将所述相机转向靠近所述目标游戏角色一侧,并判断转向相机后是否避免所述相机被碰撞,如果是, 返回上述的步骤B21。本发明中,将相机转向靠近目标一侧后,理论上不存在转到目标一测进行上述三种调整还会有碰撞的情况。因此,通过上述步骤,能够实现在情况2时,通过调整相机的位置,将所述当前游戏角色和所述目标游戏角色同时锁定在相机视野范围内情况3,所述当前游戏角色保持竖直高度YDist不变远离所述相机、且所述相机没有被碰撞的情况。 针对情况3,步骤102中的调整包括按照所述当前游戏角色和所述目标游戏角色始终在所述相机的视野范围内的原则调整所述相机的半径fcameraRadius和相机与竖直坐标轴Y轴的夹角Pitch,并利用所述当前游戏角色的位置和目标游戏角色的位置自适应调整所述相机的当前视点位置与所述相机当前位置之间的向量,以使所述当前游戏角色和所述目标游戏角色始终在所述相机的视野范围内。其中,本情况3中,调整相机的当前视点位置与所述相机当前位置之间的向量与上述情况1中的调整类似,具体包括步骤B31,确定所述当前游戏角色和所述目标游戏角色之间的距离,判断所述距离是否小于第一设定距离,如果是,结束调整,否则,执行步骤B32步骤B32,确定以下两个向量组成的夹角所述相机的当前视点位置与所述相机当前位置之间的向量,以及所述当前游戏角色与所述目标游戏角色之间的向量;步骤B33,调整所述相机的当前视点位置与所述相机当前位置之间的向量,以使确定的夹角锁定在第二设定角度范围内。
其中,第二设定角度范围的设置是按照保证当前游戏角色和所述目标游戏角色同时锁定在相机视野范围内的原则设置的,这里可为[25°,-25° ]。其中,按照所述当前游戏角色和所述目标游戏角色始终在所述相机的视野范围内的原则调整所述相机的fcameraRadius和相机与竖直坐标轴Y轴的夹角Pitch包括步骤30,利用所述当前游戏角色保持不变的竖直高度YDist,确定所述当前游戏角色靠近所述相机时的水平距离》)ist ;在情况3中,基于上面描述的情况1,在当前游戏角色靠近所述相机时,所述相机与竖直坐标轴Y轴的夹角Pitch锁定在第一设定角度(以 15°为例),基于此,如图4所示的情况3,YDist为fCameraRadius*sin(15° ),相应地, 基于图4所示的情况3,则当前游戏角色靠近所述相机时与相机在水平方向的距离为fflist =fCameraRadius氺cos(15° )。步骤31,将所述水平距离fflist加上所述当前游戏角色与所述目标游戏角色之间的当前水平距离,将得到的结果确定为所述当前游戏角色当前远离所述相机的水平距离 XNewDist ;具体地,步骤31通过下式实现xNewDist =当前角色与目标角色之间的水平距离+XDist。步骤32,按照以下公式计算相机与竖直坐标轴Y轴的夹角Pitch =Pitch =atan (YDist/XNewDist);以及按照以下公式计算相机的半径fcameraRadius fcameraRadius = YDist/sin (pitch)。其中,sin 为正弦函数,atan 为反正切函数。至此,完成情况3的描述。情况4 在所述当前游戏角色远离所述相机、且所述相机被碰撞的情况。本情况4类似情况2,具体为B41,确定以下两个向量组成的夹角所述相机的当前视点位置与所述相机当前位置之间的向量,以及所述当前游戏角色与所述目标游戏角色之间的向量,判断将确定的夹角锁定在第二设定角度范围内是否避免所述相机被碰撞,如果是,结束调整,如果否,则执行步骤B42 ;步骤B42,缩小所述相机的半径,如果将所述相机的半径缩小至第二设定相机范围时仍不能避免所述相机被碰撞,则执行步骤B43,否则,结束调整;本步骤B42中,相机半径的调整范围为[YDist/sin(atan(当前角色与目标角色之间的水平距离+XDist/2),YDist/ sin (pitch)]。步骤B43,尝试对所述相机与数值坐标轴Y轴的夹角Pitch进行自适应调整,如果在Pitch调整到第二最大设定角度(比如当前pitch与5°的和)时,仍不能避免所述相机被碰撞,则执行步骤B44 ;优选地,本步骤B43中,pitch值调整为[pitch,pitch+5° ]。B44,通过对所述相机当前位置与水平坐标轴X轴的夹角进行插值将所述相机转向靠近所述目标游戏角色一侧,并判断转向相机后是否避免所述相机被碰撞,如果是,返回步骤B41。其中,通过调整所述相机的当前视点位置与所述相机当前位置之间的向量,以使确定的夹角锁定在第二设定角度范围内包括判断确定的夹角是否在第二设定角度范围内,如果是,则结束调整,否则,
将所述当前游戏角色与所述目标游戏角色之间的向量在其两侧分别偏移第二设定角度和第三设定角度,得到第二向量和第三向量;确定所述相机的当前视点位置与所述相机当前位置之间的向量分别与所述第二向量和第三向量形成的夹角,得到取值最小的夹角,将所述相机的当前视点位置与所述相机当前位置之间的向量向取值最小的夹角所涉及的向量偏移。至此,完成情况4的描述。以上对本发明提供的方法进行了描述。由以上技术方案可以看出,本发明中,通过将相机的视点位置始终绑定在玩家控制的当前游戏角色上;利用所述当前游戏角色的位置和所述当前游戏角色的目标游戏角色的位置自适应调整相机的位置,以使所述当前游戏角色和所述目标游戏角色同时锁定在相机视野范围内,这相比于现有技术在网络游戏中释放了玩家的大量操作,降低了玩家的负担,避免由于玩家手工控制相机带来的诸多缺陷。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种应用于3D网络游戏中的相机控制方法,其特征在于,该方法包括 A,将相机的视点位置始终绑定在玩家控制的当前游戏角色上;B,利用所述当前游戏角色的位置和所述当前游戏角色的目标游戏角色的位置自适应调整相机的位置,以使所述当前游戏角色和所述目标游戏角色同时锁定在相机视野范围内。
2.根据权利要求1所述的方法,其特征在于,步骤B中的调整包括在所述当前游戏角色靠近所述相机、且所述相机没有被碰撞的情况下,将所述相机的半径锁定在第一设定半径,并将所述相机与竖直坐标轴Y轴的夹角Pitch锁定在第一设定角度,并利用所述当前游戏角色的位置和所述目标游戏角色的位置自适应调整所述相机的当前视点位置与所述相机当前位置之间的向量。
3.根据权利要求2所述的方法,其特征在于,所述调整相机的当前视点位置与所述相机当前位置之间的向量包括B11,确定所述当前游戏角色和所述目标游戏角色之间的距离,判断所述距离是否小于第一设定距离,如果是,结束调整,否则,执行步骤B12 ;B12,确定以下两个向量组成的夹角所述相机的当前视点位置与所述相机当前位置之间的向量,以及所述当前游戏角色与所述目标游戏角色之间的向量;B13,调整所述相机的当前视点位置与所述相机当前位置之间的向量,以使确定的夹角锁定在第一设定角度范围内。
4.根据权利要求1所述的方法,其特征在于,步骤B中的调整包括B21,在所述当前游戏角色靠近所述相近、且所述相机被碰撞的情况下,执行步骤B22 ; B22,确定以下两个向量组成的夹角所述相机的当前视点位置与所述相机当前位置之间的向量,以及所述当前游戏角色与所述目标游戏角色之间的向量,判断将确定的夹角锁定在第一设定角度范围内是否避免所述相机被碰撞,如果是,结束调整,如果否,则执行步骤 B23 ;B23,缩小所述相机的半径,如果将所述相机的半径缩小至第一设定相机范围时仍不能避免所述相机被碰撞,则执行步骤B24,否则,结束调整;B24,尝试对所述相机与数值坐标轴Y轴的夹角Pitch进行自适应调整,如果在Pitch 调整到第一最大设定角度时,仍不能避免所述相机被碰撞,则执行步骤B25 ;B25,通过对所述相机当前位置与水平坐标轴X轴的夹角进行插值将所述相机转向靠近所述目标游戏角色一侧,并判断转向相机后是否避免所述相机被碰撞,如果是,返回步骤 B22。
5.根据权利要求3或4所述的方法,其特征在于,调整相机的当前视点位置与所述相机当前位置之间的向量,以使确定的夹角锁定在第一设定角度范围内包括判断该确定的夹角是否在第一设定角度范围内,如果是,则结束调整,否则, 将所述当前游戏角色与所述目标游戏角色之间的向量在其两侧分别偏移第二设定角度和第三设定角度,得到第二向量和第三向量;确定所述相机的当前视点位置与所述相机当前位置之间的向量分别与所述第二向量和第三向量形成的夹角,得到取值最小的夹角,将所述相机的当前视点位置与所述相机当前位置之间的向量向取值最小的夹角所涉及的向量偏移。
6.根据权利要求1所述的方法,其特征在于,步骤B中的调整包括在所述当前游戏角色保持竖直高度YDist不变远离所述相机、且所述相机没有被碰撞的情况下,按照所述当前游戏角色和所述目标游戏角色始终在所述相机的视野范围内的原则调整所述相机的半径fcameraRadius和相机与竖直坐标轴Y轴的夹角Pitch,并利用所述当前游戏角色的位置和目标游戏角色的位置自适应调整所述相机的当前视点位置与所述相机当前位置之间的向量,以使所述当前游戏角色和所述目标游戏角色始终在所述相机的视野范围内。
7.根据权利要求6所述的方法,其特征在于,所述调整相机的当前视点位置与所述相机当前位置之间的向量包括B31,确定所述当前游戏角色和所述目标游戏角色之间的距离,判断所述距离是否小于第一设定距离,如果是,结束调整,否则,执行步骤B32 ;B32,确定以下两个向量组成的夹角所述相机的当前视点位置与所述相机当前位置之间的向量,以及所述当前游戏角色与所述目标游戏角色之间的向量;B33,调整所述相机的当前视点位置与所述相机当前位置之间的向量,以使确定的夹角锁定在第二设定角度范围内。
8.根据权利要求6所述的方法,其特征在于,按照所述当前游戏角色和所述目标游戏角色始终在所述相机的视野范围内的原则调整所述相机的fcameraRadius和相机与竖直坐标轴Y轴的夹角Pitch包括利用所述当前游戏角色保持不变的竖直高度YDist,确定所述当前游戏角色靠近所述相机时的水平距离st ;将所述水平距离》)ist加上所述当前游戏角色与所述目标游戏角色之间的当前水平距离,将得到的结果确定为所述当前游戏角色当前远离所述相机的水平距离XNewDist ;按照以下公式计算相机与竖直坐标轴Y轴的夹角Pitch =Pitch = atan (YDist/ XNewDist);以及按照以下公式计算相机的半径fcameraRadius :fcameraRadius = YDist/ sin(pitch);其中,sin为正弦函数,atan为反正切函数。
9.根据权利要求1所述的方法,其特征在于,步骤B中的调整包括B41,在所述当前游戏角色远离所述相机、且所述相机被碰撞的情况下,执行步骤B42 ; B42,确定以下两个向量组成的夹角所述相机的当前视点位置与所述相机当前位置之间的向量,以及所述当前游戏角色与所述目标游戏角色之间的向量,判断将确定的夹角锁定在第二设定角度范围内是否避免所述相机被碰撞,如果是,结束调整,如果否,则执行步骤 B43 ;B43,缩小所述相机的半径,如果将所述相机的半径缩小至第二设定相机范围时仍不能避免所述相机被碰撞,则执行步骤B44,否则,结束调整;B44,尝试对所述相机与数值坐标轴Y轴的夹角Pitch进行自适应调整,如果在Pitch 调整到第二最大设定角度时,仍不能避免所述相机被碰撞,则执行步骤B45 ;B45,通过对所述相机当前位置与水平坐标轴X轴的夹角进行插值将所述相机转向靠近所述目标游戏角色一侧,并判断转向相机后是否避免所述相机被碰撞,如果是,返回步骤B42。
10.根据权利要求6或9所述的方法,其特征在于,调整相机的当前视点位置与所述相机当前位置之间的向量,以使将确定的夹角锁定在第二设定角度范围内包括 判断确定的夹角是否在第二设定角度范围内,如果是,则结束调整,否则, 将所述当前游戏角色与所述目标游戏角色之间的向量在其两侧分别偏移第二设定角度和第三设定角度,得到第二向量和第三向量;确定所述相机的当前视点位置与所述相机当前位置之间的向量分别与所述第二向量和第三向量形成的夹角,得到取值最小的夹角,将所述相机的当前视点位置与所述相机当前位置之间的向量向取值最小的夹角所涉及的向量偏移。
全文摘要
本发明提供了应用于3D网络游戏中的相机控制方法。该方法包括A. 将相机的视点位置始终绑定在玩家控制的当前游戏角色上;B. 利用所述当前游戏角色的位置和所述当前游戏角色的目标游戏角色的位置自适应调整相机的位置,以使所述当前游戏角色和所述目标游戏角色同时锁定在相机视野范围内。
文档编号G06F19/00GK102521520SQ201110436348
公开日2012年6月27日 申请日期2011年12月22日 优先权日2011年12月22日
发明者韩宏毅 申请人:北京像素软件科技股份有限公司