一种手持设备用户界面视点可变的实现方法
【技术领域】
本发明涉及一种用户界面处理方法的领域,特别是涉及手持设备用户界面视点变换的实现方法。
【背景技术】
随着移动终端性能的迅速提高和网络条件的迅速改善,移动终端上能够完成的任务也越来越来越丰富。但是由于移动终端自身的一些特点,包括:屏幕小,难以显示较多的信息;可视角度固定,使用时间长了以后容易产生单调乏味的感觉输入设备简单,按键数目很少,交互不便。
由于以上的特点,在移动终端上的信息浏览变得非常困难:既无法有效获取信息,也很难快捷交互。现有的移动终端交互技术,主要是继承了桌面应用的相关交互组件。通过简单的减小面积和简单化操作的方式,移植到移动终端上。事实上,对于某些非传统桌面应用而言,这些界面组件常常是不合适的。
三维交互方式在很多类型的应用中都表现出显著的优势和发展潜力。在移动终端上,也是一种用户交互的有效解决方案。这种方式能够充分结合现有移动终端的计算能力和网络带宽的提高,给用户更加良好的体验。
随着移动终端性能的提升和3G网络的商用化,移动终端已经有能力支撑三维用户界面的应用。三维界面可以使用户与系统的交互变得更加流畅和直观,再加上终端本身具有移动的特性,可以承载多种增值服务种类,将成为无线增值领域的一个重要方向。
而且随着手持设备的发展,集成GPU已成为趋势。3d UI也将马上进入实际应用,谁能在这场赛跑中领先,谁就将掌握技术和市场的主动权。现在的3d UI基本都只限于拖拽和翻转时的一些3d特效和图片预览的3d效果和一些光影效果处理。并没有和手持设备的最大特点“动”结合起。
【发明内容】
本发明要解决的技术问题,在于提供一种视点可变的手持设备用户界面的方法,它能够提供视点可变的三维界面,给用户更加良好的体验。
本发明的实现方式之一是:它具体包括如下步骤:
步骤10、对手持设备设定用户坐标系,并设定视点起始位置,将手持设备任意放置,通过角度传感器检测手持设备相对用户坐标系的当前角度值,并将角度值传送给CPU;
步骤20、CPU根据上述角度值计算出手持设备的当前角度与起始位置的角度的差角值,并传输给GPU;
步骤30、GPU根据上述差角值作为视点的旋转角度绘制图像,并将图像送往屏幕显示控制器;
步骤40、屏幕显示控制器将上述图像显示在屏幕上,然后结束或回到步骤10;
其中,所述视点起始位置是指手持设备处于起始位置时的视点位置。
本发明的实现方式之二是:具体包括如下步骤:
步骤10、对手持设备设定用户坐标系,并设定视点起始位置,将手持设备任意放置,通过重力传感器检测手持设备的当前加速度,并将加速度值传送给CPU;
步骤20、CPU根据上述加速度计算出设备当前的状态,并传输给GPU;
步骤30、GPU根据上述设备当前的状态绘制图像,并将图像送往屏幕显示控制器;
步骤40、屏幕显示控制器将上述图像显示在屏幕上,然后结束或回到步骤10;
其中,所述视点起始位置是指手持设备处于起始位置时的视点位置。
本发明具有如下优点:
1.本发明结合现有移动终端的计算能力的提高,通过视点可变的三维界面大幅提高用户界面友好性;
2.本发明由于用户界面可以随着设备的角度不断变化,相较于传统的用户界面,大大提高了使用的趣味性,使操作过程不再枯燥。
【附图说明】
下面参照附图结合实施例对本发明作进一步的说明。
图1为实现本发明的一装置的结构示意图。
图2为本发明使用角度传感器的情况下的流程图。
图3.1设备处于初始状态的示意图。
图3.2为对应设备处于初始位置的视点示意图。
图4.1为设备XZ平面角度变化后的平面示意图。
图4.2为对应设备XZ平面角度位置变化a后的视点示意图。
图5.1为设备YZ平面角度变化后的平面示意图。
图5.2为对应设备YZ平面角度位置变化b后的视点示意图。
图6.1为设备正常位置时候视点的示意图。
图6.2为设备倒伏位置时候视点的示意图。
图6.3为设备仰放位置时候视点的示意图。
图6.4为设备的XZ面角度变化为负值时视点的示意图。
图6.5为设备XZ面角度变化为负值时视点的示意图。
图7为本发明使用重力传感器的情况下的流程图。
图8为设备六种状态的示意图。
【具体实施方式】
请参阅图1至图8所示,对本发明的实施例进行详细的说明。
首先设定用户界面的坐标系,将用户的正前方设定为Y轴正方向,用户的正上方设定为Z轴的正方向,用户的右边设定为X轴的正方向。将设备的起始位置设置为完全水平状态,视点起始位置为设备处于起始位置的时候视点的位置,将其设定为处于设备的正前方。
如图1为实现本发明方法,本发明还提供一手持设备用户界面视点可变的实现装置的结构示意图,该实现装置包括有:CPU(中央处理器),GPU(图形图像处理器),存储单元,XZ面方向角度(重力)传感器,YZ面方向角度(重力)传感器,屏幕显示控制器,屏幕。
所述存储单元负责存储隔行格式的原始数据;所述显示控制单元负责将处理好的图像按照屏幕需要的格式和时序传输图像数据到屏幕输出;所述屏幕负责向用户显示使用界面;所述CPU负责设备系统整体的时序控制和对系统的寄存器进行配置;所述GPU负责根据CPU提供的视点位置,距离,光源等信息来绘制三维图像;所述XZ面方向的角度(重力)传感器负责向CPU提供当前设备的XZ面方向的角度(状态);所述YZ面方向的角度(重力)传感器负责向CPU提供当前设备的YZ面方向的角度(状态)。
如果传感器为角度传感器,可以实时提供手持设备当前的角度数据,则设备可以根据当前的两个角度计算出视点的位置,视点位置随手持设备的方位角度变化而实时变化;如果传感器为重力传感器,只能提供手持设备当前处于某个状态,则设备可以根据当前的状态调整3d视角位置,视点位置随手持设备的状态变化而实时变化;如果单个器件只支持一维的角度测量,则需使用两个角度传感器或者重力传感器,且两个传感器放置的角度互相垂直。
如图2,本发明使用角度传感器的情况下,具体包括如下步骤:步骤10、对手持设备设定用户坐标系,并设定视点起始位置,将手持设备任意放置,通过角度传感器检测手持设备相对用户坐标系的当前角度值,并将角度值传送给CPU;步骤20、CPU根据上述角度值计算出手持设备的当前角度与起始位置的角度的差角值,并传输给GPU;步骤30、GPU根据上述差角值作为视点的旋转角度绘制图像,并将图像送往屏幕显示控制器;步骤40、屏幕显示控制器将上述图像显示在屏幕上,然后结束或回到步骤10。所述两个角度传感器分别检测设备在左右(XZ面)方向和前后(YZ面)方向的角度,所述CPU根据上述左右(XZ面)方向角度计算出设备在左右(XZ面)方向的偏斜角度与正常位置角度的差角a,根据上述前后(YZ面)方向角度计算出设备在前后(YZ面)方向的偏斜角度与正常位置角度的差角b。
结合图3.1至图5.2,进行更详细说明:设置XZ平面角度传感器、YZ平面角度传感器。XZ平面角度传感器负责检测设备在XZ轴的偏斜角度a,YZ平面角度传感器负责检测设备在XZ轴的偏斜角度b;在设置相对于用户的坐标系后,假设一个设备的起始位置为完全水平状态(此时角度a和角度b都为0度);在起始位置时确定一个三维绘图的视点起始位置,此时三维绘图的视点处于整个界面空间的正前方;开启设备之后,根据GPU的计算能力和屏幕的刷新速率的需要确定每秒计算绘图的帧数,根据该帧数来对传感器数据进行采样以供GPU进行绘图计算;比如每秒20帧的情况下,每0.05秒就需要对传感器进行一次采样以得到当前设备平面姿态角度a和b;在立体坐标系中设置一个中心点坐标作为视点旋转的基准,该中心点位置通过实验得到,通常可以设为中间图标的中心点。如果设备在XZ平面的角度a不为零,则由CPU控制GPU进行计算,计算的方法是将初始位置时的视点位置以中心点为圆心,半径不变,在XZ平面上逆时针旋转角度a(如果a为负值时,情况则为顺时针旋转角度a),然后进行绘图;如果设备在YZ平面的角度b不为零,则由CPU控制GPU进行计算,计算的方法是将初始位置时的视点位置以中心点为圆心,半径不变,在YZ平面上逆时针旋转角度b(如果b为负值时,情况则为顺时针旋转角度b),然后进行绘图;最终用户得到的效果是随着设备在各个平面的旋转,用户可以如在真实世界中一样在从不同角度看到图标;如果同时XZ,YZ平面角度都不为0,则同时变化视点位置为两者的叠加得到最终效果。如图3.1为设备处于初始状态的示意图,此时设备位于完全水平的状态;图3.2为对应设备处于初始位置(完全水平)的视点示意图;图4.1为设备XZ平面角度变化后的平面示意图,此时设备偏离水平面的角度为正的a;图4.2为对应设备XZ平面角度位置变化a后的视点示意图;图5.1为设备YZ平面角度变化后的平面示意图,此时设备偏离水平面的角度为证的b;图5.2为对应设备YZ平面角度位置变化b后的视点示意图。
结合图6.1至图6.5,对用户界面五个典型方位的视点位置,进行更详细的说明。如图6.1为设备处于正常位置,即完全水平状态的时候,此时,视点位于图标的正前方。如图6.2,当设备从正常位置变为倒伏位置的时候,视点位置随着设备的YZ平面的角度变化从正前视点移动到整个三维空间的正下方,使最终绘制出来的从该视点得到效果为仰视效果。如图6.3,当设备从正常位置变为仰放位置时,视点位置随着设备的YZ平面的角度变化从正前视点移动到整个三维空间的正上方,使最终绘制出来的从该视点得到效果为俯视效果。如图6.4,设备的XZ平面的角度为负值时,使最终绘制出来的从该视点得到效果为从右边看到整个界面的效果。如图6.5,设备的XZ平面的角度变化为正值时,使最终绘制出来的从该视点得到效果为从左边看到整个界面的效果。
如图7,本发明使用重力传感器的情况下,具体包括如下步骤:步骤10、对手持设备设定用户坐标系,并设定视点起始位置,将手持设备任意放置,通过重力传感器检测手持设备的当前加速度,并将加速度值传送给CPU;步骤20、CPU根据上述加速度计算出设备当前的状态,并传输给GPU;步骤30、GPU根据上述设备当前的状态绘制图像,并将图像送往屏幕显示控制器;步骤40、屏幕显示控制器将上述图像显示在屏幕上,然后结束或回到步骤10。所述CPU根据重力传感器判断设备所处的状态,即处于:正常的直立状态、倒伏状态、仰放状态、左旋转状态、右旋转状态,六种状态中的哪一个。
结合图8,当本发明采用重力传感器的时候,由于重力传感器无法获得具体的角度而只能判断当前设备的处于六种状态中的哪一种状态,所以只能根据当前的状态直接绘制用户界面。如图8,显示了设备的六种不同状态:正常的直立状态、倒伏状态、仰放状态、左旋转状态、右旋转状态。
以上所述,仅为本发明较佳实施例而已,故不能依此限定本发明实施的范围,即依本发明专利范围及说明书内容所作的等效变化与修饰,皆应仍属本发明涵盖的范围内。