首页> 中国专利> 触屏终端3D虚拟角色与场景摄像机运动冲突的解决方法

触屏终端3D虚拟角色与场景摄像机运动冲突的解决方法

摘要

本发明涉及一种触屏终端3D虚拟角色与场景摄像机运动冲突的解决方法,具体为:1、虚拟角色运动方向为实时获取手势相对于虚拟按钮坐标系的方向。2、场景摄像机的位置始终保持与虚拟角色Z轴坐标固定距离处,跟随虚拟角色移动,方向控制始终与虚拟角色保持等距同向,或者保持面向屏幕。3、场景摄像机与虚拟角色的运动可在同一进程中完成运算,水平方向按手势的不同划分为四种运算,垂直运算按照重力规律单独运算。本发明将虚拟按钮与手势相结合,避开了三角函数的计算,通过屏幕的平面坐标换算,解决对角色与视角的控制冲突问题。

著录项

  • 公开/公告号CN106774941A

    专利类型发明专利

  • 公开/公告日2017-05-31

    原文格式PDF

  • 申请/专利权人 福建农林大学;

    申请/专利号CN201710032321.3

  • 申请日2017-01-16

  • 分类号G06F3/01(20060101);

  • 代理机构35100 福州元创专利商标代理有限公司;

  • 代理人蔡学俊

  • 地址 350002 福建省福州市仓山区上下店路15号

  • 入库时间 2023-06-19 02:23:20

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-12-27

    未缴年费专利权终止 IPC(主分类):G06F 3/01 专利号:ZL2017100323213 申请日:20170116 授权公告日:20191119

    专利权的终止

  • 2019-11-19

    授权

    授权

  • 2017-06-23

    实质审查的生效 IPC(主分类):G06F3/01 申请日:20170116

    实质审查的生效

  • 2017-05-31

    公开

    公开

说明书

技术领域

本发明涉及虚拟游戏领域,特别是涉及一种触屏终端3D虚拟角色与场景摄像机运动冲突的解决方法。

背景技术

虚拟角色的控制分为三种:姿态控制、运动控制和视角(也称视点)控制。其中视角控制是解决角色与虚拟场景视角的一致性问题。在实际应用中,该问题是一种常见而难解决的问题。并且触屏移动端的出现使得传统的键鼠控制方法不再适用,需要重新研究出能够适应新形势的操作集,才能实现对虚拟角色的控制。现有的视角控制技术有2种:一种是将世界坐标划分为相同大小的子空间,每个子空间应用不同的算法对视角进行控制;另一种是利用三角函数计算虚拟角色局部坐标系与世界坐标系之间的关系,从而实现视角的控制。

1.子空间法将立体空间分为多个子空间,每个子空间对应虚拟角色的一个朝向,该方法计算简单,系统稳定性好。但自然人转向是以任意角度旋转,因此无法进行高真实度模拟,且尺度过大,计算精度小,已不能满足用户需求。

2.三角函数法精度高,真实度好,但是控制效果差,计算时间过长并且容易造成系统崩溃等问题。由于触屏移动设备计算能力远不能与PC相比,因此该方案实际应用中也较少。

3.在触屏移动端,3D虚拟角色的控制模式无法采用传统键鼠控制的方式来进行,必须采用新的控制模式来解决虚拟角色的控制问题,常见的有虚拟按钮和手势控制两种;其中,虚拟按钮是固定在虚拟场景最前方的按钮形式的虚拟对象。其实现原理是动态获取虚拟摄像机的空间位置,根据该位置信息将其绑定在虚拟摄像机前固定距离的空间位置上,随虚拟摄像机的运动而运动;虚拟角色控制所用到的手势相对简单,仅需定义四种手势——上划、下划、左划和右划,这四种手势分别对应上、下、左、右四个手指划动方向。根据手势决定虚拟角色的运动方向。单纯使用手势控制,与子空间法相同,角色转向范围受到限制。

发明内容

有鉴于此,本发明的目的是提供一种触屏终端3D虚拟角色与场景摄像机运动冲突的解决方法,将虚拟按钮与手势相结合,避开了三角函数的计算,通过屏幕的平面坐标换算,解决对角色与视角的控制冲突问题。

本发明采用以下方案实现:一种触屏终端3D虚拟角色与场景摄像机运动冲突的解决方法,包括以下步骤:

步骤S1:进行位移计算:结合虚拟按钮与手势对虚拟角色进行控制,任意时刻感知区域内的位移偏移量通过屏幕坐标进行换算,即采用算法根据位移偏移量计算出任意时刻虚拟角色在世界坐标系内的坐标;

步骤S2:进行朝向计算:虚拟角色的水平方向上,场景摄像机的位置始终保持与虚拟角色z轴坐标固定距离处,跟随虚拟角色移动,方向控制始终与虚拟角色保持等距同向,或者保持面向屏幕,朝向计算在场景摄像机所在的坐标系内进行;

步骤S3:进行重力模拟:虚拟角色的垂直方向,进行重力模拟计算。

进一步地,所述步骤S1采用的算法是根据手势,计算单位时间内虚拟角色的位移偏移量,再更新虚拟角色的世界坐标系内的坐标,设虚拟角色的运动速度为(x_speed,y_speed),Δt是每帧动画播放的时间,虚拟角色在屏幕坐标系内的初始坐标为(x_ch,y_ch),则任意时刻虚拟角色在世界坐标系的坐标计算如下:

当手势坐标轴分量位于y正轴时,单位时间偏移量为y_speed×Δt,实时坐标为y_ch+y_speed×Δt;当手势坐标轴分量位于x负轴时,单位时间偏移量为x_speed×Δt,实时坐标为x_ch-x_speed×Δt;当手势坐标轴分量位于y负轴时,单位时间偏移量为y_speed×Δt,实时坐标为y_ch-y_speed×Δt;当手势坐标轴分量位于x正轴时,单位时间偏移量为x_speed×Δt,实时坐标为x_ch+x_speed×Δt。

进一步地,所述步骤S2中,当虚拟角色在水平方向上旋转时,如果虚拟角色左转,即逆时针旋转,则场景摄像机以y轴为对称轴顺时针旋转;如果虚拟角色右转,即顺时针旋转,则场景摄像机以y轴为对称轴逆时针旋转;设摄像机旋转向量为(α_cam,β_cam,γ_cam),当虚拟角色在x轴上有位移,场景摄像机β_cam分量有变化,且变化值与位移偏移量的值符号相反;场景摄像机坐标系与世界坐标系在水平方向上相差180度的角,两者之间的距离由摄像机的z值决定:

α_cam=α_cam-y_offsetZone(1)

β_cam=β_cam+x_offsetZone(2)

其中,虚拟角色不会绕z轴旋转,所以γ_cam忽略不计,虚拟角色的朝向与场景摄像机的朝向保持一致。

进一步地,所述步骤S3中,由自由落体运动公式:

计算出任意时刻虚拟角色的高度,g是重力加速度,v取值2.0f,则有:

Δh=2.0f×Δt(4)

得到任意时刻虚拟角色在垂直方向的坐标值为:

y_ch=y_ch-Δh(5)

其中,v是一个变量,与时间有关,由于v值是一个模拟值,则公式(3)中的v是一个常量,所以计算出的自由落体位移也是一个常量,表明虚拟角色近似于匀速下落。

相较于现有技术,本发明具有以下有益效果:

1.由于虚拟按钮实现简单,但是角色运动控制较难,角色运动方向混乱比较常见,手势又限制了角色转向的角度范围,因此本发明结合虚拟按钮与手势对虚拟角色进行控制,避免以上问题;

2.本发明不使用子空间法和三角函数法,而是将虚拟按钮平面上的手势换算成角度值,用以控制角色和摄像机的运动方向;

3.本发明将角色运动划分为水平和竖直两种,水平方向模拟角色在地面上的水平运动,竖直方向模拟角色的重力运动,以使角色始终运动在地面上,而非空中或地面下;摄像机的运动则为始终跟随虚拟角色,且朝向始终面向显示器屏幕。摄像机与虚拟角色间的空间距离始终不变。

附图说明

图1是本发明的任意时刻虚拟角色在世界坐标系的坐标示意图。

图2是本发明中触屏移动端与传统键鼠控制方式的对比示意图。

图3是本发明与现有的几种控制方法中朝向运算的对比分析示意图。

具体实施方式

下面结合附图及实施例对本发明做进一步说明。

本实施例提供一种触屏终端3D虚拟角色与场景摄像机运动冲突的解决方法,包括以下步骤:

步骤S1:进行位移计算:结合虚拟按钮与手势对虚拟角色进行控制,任意时刻感知区域内的位移偏移量可通过屏幕坐标进行换算,反之亦可;即采用算法根据根据此偏移量可计算出任意时刻虚拟角色在世界坐标系内的坐标;

步骤S2:进行朝向计算:虚拟角色的水平方向上,场景摄像机的位置始终保持与虚拟角色z轴坐标固定距离处,跟随虚拟角色移动,方向控制始终与虚拟角色保持等距同向,或者保持面向屏幕,朝向计算在场景摄像机所在的坐标系内进行;

步骤S3:进行重力模拟:虚拟角色的垂直方向,进行重力模拟计算。

在本实施例中,所述步骤S1采用的算法是根据手势,计算单位时间内虚拟角色的位移偏移量,再更新虚拟角色的世界坐标系内的坐标,设虚拟角色的运动速度为(x_speed,y_speed),Δt是每帧动画播放的时间,虚拟角色在屏幕坐标系内的初始坐标为(x_ch,y_ch),则任意时刻虚拟角色在世界坐标系的坐标计算如下:

当手势坐标轴分量位于y正轴时,单位时间偏移量为y_speed×Δt,实时坐标为y_ch+y_speed×Δt;当手势坐标轴分量位于x负轴时,单位时间偏移量为x_speed×Δt,实时坐标为x_ch-x_speed×Δt;当手势坐标轴分量位于y负轴时,单位时间偏移量为y_speed×Δt,实时坐标为y_ch-y_speed×Δt;当手势坐标轴分量位于x正轴时,单位时间偏移量为x_speed×Δt,实时坐标为x_ch+x_speed×Δt,如图1所示。

此时,虚拟角色的位移变化只与时间有关,与手势在屏幕上的偏移量无关。虚拟角色始终做匀速运动。这样就无需再进行比例尺、偏移量等的计算,但缺点是,虚拟角色只能匀速运动,无法根据用户手势的速度、偏移量等模拟虚拟角色加速、减速等行为。

在本实施例中,所述步骤S2中,朝向是根据摄像机的运动实现的。这个过程是在摄像机所在的坐标系内进行,而非在世界坐标系内进行。当虚拟角色在水平方向上旋转时,如果虚拟角色左转,即逆时针旋转,则场景摄像机以y轴为对称轴顺时针旋转;如果虚拟角色右转,即顺时针旋转,则场景摄像机以y轴为对称轴逆时针旋转;设摄像机旋转向量为(α_cam,β_cam,γ_cam),当虚拟角色在x轴上有位移,场景摄像机β_cam分量有变化,且变化值与位移偏移量的值符号相反;场景摄像机坐标系与世界坐标系在水平方向上相差180度的角,两者之间的距离由摄像机的z值决定:

α_cam=α_cam-y_offsetZone(1)

β_cam=β_cam+x_offsetZone(2)

其中,虚拟角色不会绕z轴旋转,所以忽略不计。此时再将摄像机的朝向换算成欧拉角即可。虚拟角色的朝向与摄像机的朝向保持一致。可以看出,感知区域内的偏移量越大,旋转角度越大,因此摄像机的旋转速度与用户操作有关,而非匀速运动。

在本实施例中,所述步骤S3中,由自由落体运动公式:

计算出任意时刻虚拟角色的高度,g是重力加速度,根据实际测试,v取值2.0f时,系统不会出现角色卡顿、画面抖动现象等问题,则有:

Δh=2.0f×Δt(4)

得到任意时刻虚拟角色在垂直方向的坐标值为:

y_ch=y_ch-Δh(5)

其中,v是一个变量,与时间有关,由于v值是一个模拟值,则公式(3)中的v是一个常量,所以计算出的自由落体位移也是一个常量,表明虚拟角色近似于匀速下落。

在本实施例中,触屏移动端下,角色控制方式与传统键鼠控制明显不同,如图2所示,为解决触屏移动端在以上方面出现的问题,本实施例将虚拟按钮与手势相结合,避开了三角函数的计算,通过屏幕的平面坐标换算,解决对角色与视角的控制冲突问题。虚拟角色的位移运算,几种控制方法的差别不大,但是在朝向的计算方面差别明显,如图3所示。从图2和图3可知,本实施例中的虚拟角色控制方法在算法数量、算法复杂度、角色控制的精确度、角色与视角控制冲突的解决以及真实度和系统崩溃概率等方面具有优势。综上所述,本实施例比现有技术更加合理高效。

以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号