具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明实施例作进一步详细的说明。
本发明提供了一种在三维虚拟现实场景中的物体空间摆位方法,该方法通过获取可获得三个轴向驱动数据的外置设备操控三维虚拟现实场景中的物体产生的驱动数据,再将驱动数据转换为运动偏移量,包括物体的移动偏移量和旋转偏移量,从而实现了只在三维视图中就能完成对三维虚拟现实场景中的物体空间准确摆位。参见图2,该方法具体步骤为:
21、获取可获得三个轴向驱动数据的外置设备操控三维虚拟现实场景中的物体产生的驱动数据;
22、转换上述驱动数据为三个轴向的运动偏移量;
23、判断运动偏移量是否为0,对运动偏移量不为0的物体进行三个轴向分量的运动以实现摆位。
在步骤21中,使用了外置设备来操控三维虚拟现实场景中的物体,是为了解决三维虚拟现实场景中的物体在二维屏幕上实现三维纵深移动和旋转的效果的技术问题,通过可获得三个轴向驱动数据的外置设备获得三个轴向的驱动数据,经过转换驱动数据为三个轴向的运动偏移量,包括移动偏移量和旋转偏移量,即可以获得水平横向,水平纵向,垂直方向的三个轴向的移动和旋转量。所以设计人员使用该外置设备只在三维视图中对三维虚拟现实场景中的物体进行操控,就能达到将物体摆位到深入显示器内部的效果,而其他视图只用来作为目视参考物体摆位操作位置是否到位即可。
其中步骤21所述外置设备与电脑通过设备驱动接口通讯,外置设备操纵三维虚拟现实场景中的物体移动时,驱动数据传输到该接口。
其中步骤21所述驱动数据通过读取外置设备与电脑通讯接口的数据获取。
在本发明一个实施例中,其中步骤21所述可获得三个轴向驱动数据的外置设备可以使用例如游戏操纵杆这种外部设备,参见图3,外部设备的工作操作方法和状态:
首先定义屏幕空间:屏幕所在平面为横向X轴和纵向Y轴,垂直屏幕所在平面为Z轴;
处在操控物体状态的操纵杆在真实物理空间沿水平面方向移动的操作定义为三维虚拟现实场景中的物体在三维虚拟现实场景水平面移动,其中所述三维虚拟现实场景水平面为以上所定义的屏幕空间的X轴和Z轴所在平面;
处在操控物体状态的操纵杆在真实物理空间沿垂直水平面方向移动的操作定义为三维虚拟现实场景的物体在三维虚拟现实场景垂直水平面方向移动,其中所述三维虚拟现实场景垂直水平面方向为以上所定义的屏幕空间的Y轴;
将点选中物体的同时旋转操纵杆定义为选中物体且旋转。
在本发明的使用操纵杆这个实施例中,步骤22的具体实现方法,参见图4:
401:其中步骤22所述驱动数据从步骤21获取时是6元数组:数组的前三位元素对应三维虚拟现实场景物体的移动偏移向量,数组的后三位元素对应三维虚拟现实场景物体的旋转偏移向量,以上所述数组的每个元素都是整数值。
其中步骤22所述转换上述驱动数据为三个轴向的运动偏移量,包括移动偏移量和旋转偏移量,是因为在三维场景中移动和旋转量可以使用浮点数(即带小数点的数据)来实现更加精确的位置操作,经过此转换步骤,整数值的偏移量经过计算可以转换为更加精确的带浮点数的偏移量。以这个具体实施例来计算,具体为:
现假设外置设备操纵杆沿X轴方向的移动量为x,则正方向移动的数值为x,沿负方向上移动的数值为-x,将其表示为mx(则mx可为正数也可以为负数和0);同理假设外置设备沿Y轴方向的移动量表示为my(则my可为正数也可以为负数和0);同理假设外置设备沿Z轴方向的移动量表示为mz(则mz可为正数也可以为负数和0);
假设外置设备沿X轴的旋转量为x,则向右旋转的数值为x,向左旋转的数值为-x,将其表示为rx(则rx可为正数也可以为负数和0);同理假设外置设备沿Y轴的旋转量表示为ry(则ry可为正数也可以为负数和0);同理假设外置设备沿Z轴的旋转量表示为rz(则rz可为正数也可以为负数和0);
402:将数组的前三个元素用移动偏移向量M(mx,my,mz)表示;
403:假设外置设备移动的最大量程是L,移动偏移向量/外置设备的最大量程,即获得移动偏移百分比M′=M/L;
404:假设场景尺寸是S,移动偏移百分比/场景尺寸,即获得修正移动偏移向量M″=M′×S;
405:将毫米单位转换成米单位的修正值,因为在三维虚拟现实场景中单位一般为米,修正移动偏移向量×0.001,即获得最终的移动偏移向量M″′=M″×0.001;
M″′即是最终需要的对应三维虚拟现实场景的移动偏移量。
406:将数组的后三个元素用旋转偏移向量R(rx,ry,rz)表示;
407:假设外置设备旋转的最大量程是T,旋转偏移向量/外置设备的最大量程,即获得旋转偏移百分比R′=R/T;
408:R′即是最终需要的对应三维虚拟现实场景的旋转偏移量。
在本发明的另一个实施例中,其中步骤21所述可获得三个轴向驱动数据的外置设备也可以使用三维鼠标这种外部设备,参见图5,外部设备的工作操作方法和状态:
首先我们定义屏幕空间:屏幕所在平面为横向X轴和纵向Y轴,垂直屏幕所在平面为Z轴;
将不点选中物体的同时平滑移动鼠标的操作定义为移动光标且不移动物体;
将按下鼠标左键选中物体的同时移动定义为选中三维虚拟现实场景中的物体且所述物体在三维虚拟现实场景水平面移动,其中所述三维虚拟现实场景水平面为以上所定义的屏幕空间的X轴和Z轴所在平面;
将按下鼠标右键选中物体的同时移动定义为选中三维虚拟现实场景中的物体且所述物体在三维虚拟现实场景中旋转;
将滚动滑轮中键定义为将选中的三维虚拟现实场景中的物体在三维虚拟现实场景中垂直水平面方向移动,其中所述三维虚拟现实场景垂直水平面方向为以上所定义的屏幕空间的Y轴。
在本发明的使用三维鼠标这个实施例中,步骤22的具体实现方法,参见图6:
601:其中步骤22所述三个轴向驱动数据从步骤21获取时是四个数据包,第一个数据包分别包含了鼠标左,中,右键状态,状态值0表示释放,1表示按下;第二个数据包表示X轴方向的移动像素量;第三个数据包标识Y轴方向的移动像素量;第四个数据包表示Z轴方向的移动像素量。
其中步骤22所述转换上述驱动数据为三个轴向的运动偏移量,包括移动偏移量和旋转偏移量,是因为要从像素量转换为基于三维视图窗口尺寸和速度的偏移量。所述转换步骤以这个具体实施例来计算,具体为:
602:从像素量转换为基于三维视图窗口尺寸的三个轴向偏移量:
现假设外置设备鼠标沿X轴方向移动的像素量为x,Y轴方向移动的像素量为y,中键的滚动像素为z;三维视图窗口的尺寸为宽w,高h:
则偏移量为:
off_x=x/w;
off_y=y/h;
off_z=z/w;或者off_z=z/h;
其中off_z可以是z/w,也可以是off_z=z/h的原因是实际应用中三维视图窗口的宽和高的尺寸相差不大,再经过z移动像素量与其进行比值,其最终结果的差别对偏移量来说是微小的,可以忽略不计的。
从基于三维视图窗口尺寸的三个轴向偏移量转换为基于移动速度和旋转速度的偏移量:
603:移动偏移量的计算为:
将基于三维视图窗口尺寸的三个轴向偏移量用向量M(off_x,off_y,off_z)表示;假设移动速度为ms,对应三维虚拟现实场景的物体移动向量M′=M×ms;
M′即是最终需要的对应三维虚拟现实场景的移动偏移量。
604:判断是否按下右键;
605:如果不是则旋转偏移量为0;
606:如果是,则表示此时物体具有旋转状态,将上述基于三维视图窗口尺寸的三个轴向偏移量同时视为基于三维视图窗口尺寸的三个轴向的旋转偏移量。
则旋转偏移量的计算为:
将基于三维视图窗口尺寸的三个轴向偏移量用向量M(off_rx,off_ry,off_rz)表示;假设旋转速度为rs,对应三维虚拟现实场景的物体旋转偏移向量R=M×rs;
R即是最终需要的对应三维虚拟现实场景的旋转偏移量。
其中步骤23判断从步骤22获取的最终三维虚拟现实场景的运动偏移量,包括移动偏移量和旋转偏移量,对最终偏移量不为0的物体进行x轴,y轴,z轴三个轴向分量的移动和旋转以实现对物体空间位置和角度的更新;对于物体空间位置和角度的更新,可以使用在各种三维虚拟现实场景建模软件中经常使用的方法,具体如:
移动:translate()函数实现。
旋转:三个函数:x轴:pitch(x);y轴:yaw(y);z轴:roll(z)。
对于这些函数的实现细节属于数学和计算机图形学理论的现有技术,在此不再赘述。
其中步骤23对运动偏移量不为0的物体进行三个轴向分量的运动具体在三维视图和其他视图中进行显示,即除了三维视图窗口,其他视图窗口:以选中物体为中心的其他视图,如顶视图,左视图,后视图同时根据选中物体的运动偏移量进行位置调整,这样在移动选中物体时候,子视图中所显示的内容跟随变化,操作者可以不断确认物体摆位操作位置是否到位。
本发明提供了一种在三维虚拟现实场景中的物体空间摆位装置。参见图7,该装置具体包括:
读取单元:用于从设备驱动接口读取可获取三个轴向驱动数据的外置设备操纵三维虚拟现实场景中的物体的驱动数据,并将所述驱动数据发送至转换单元;
转换单元:用于将所述驱动数据转换为三维虚拟现实场景的物体最终的三个轴向的运动偏移量,并将所述最终三个轴向的运动偏移量发送至摆位单元;
摆位单元:用于对运动偏移量不为0的物体进行三个轴向分量的运动以实现对物体空间位置和角度的更新。
其中读取单元所述外置设备可以是游戏操纵杆或者三维鼠标。
其中转换单元所述转换步骤同以上方法发明实施例中的转换步骤相同,在此不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。