一种在三维球面实现拖动的方法技术

技术编号:16839198 阅读:38 留言:0更新日期:2017-12-19 21:00
本发明专利技术提出一种在三维球面实现拖动的方法,包括:获取三维场景下的三维球面模型以及相机矩阵锁定基准点,所述基准点为第三三维坐标G与第一三维坐标A所形成的线段与整个场景相交,取出相交的最近点第四三维坐标D;移动所述鼠标,获取所述鼠标当前移动到的点的第二二维坐标B1,基于第二二维坐标B1和漫游相机矩阵计算出第二三维坐标B和第一向量CB;基于所述第四三维坐标D,第一向量CB和线段OE计算第五三维坐标E,所述第五三维坐标E为转动场景后所述基准点的位置;基于所述第五三维坐标E和第四三维坐标D,计算旋转角度和旋转轴;基于计算的所述旋转角度和旋转轴,转动相机。通过本发明专利技术可以实现三维场景下的物体基于球面模型的精准拖动。

A method of trailing in a three-dimensional sphere

The invention provides a method, to achieve drag on the three-dimensional sphere includes: acquiring 3D scene model and the three-dimensional spherical camera matrix locking reference point, the reference point for the line formed by the third three-dimensional coordinates of the 3D coordinates of A G with the first communion with the whole scene, take out the 3D coordinates of D nearest point of intersection of the fourth mobile; the mouse, second B1 to obtain the two-dimensional coordinates of the current mouse moves to the point, second two-dimensional coordinates B1 and roaming camera matrix is calculated based on the second dimensional coordinate vector B and the first CB; the fourth dimensional coordinate based on D, CB and OE segment of the first vector calculation of fifth three-dimensional coordinates of the 3D coordinates of E, fifth E is the scene after the rotation reference position; the fifth and fourth three-dimensional coordinates of the 3D coordinates of E based on D, calculate the rotation angle and the rotation axis; the rotation angle based on calculation Degree and axis of rotation, turn the camera. The accurate drag of a three-dimensional object based on a spherical model can be realized through the invention.

【技术实现步骤摘要】
一种在三维球面实现拖动的方法
本专利技术涉及三维图形引擎漫游领域,尤其涉及在三维球面中实现拖动的方法,其通过在三维场景中对鼠标点击位置,和鼠标的移动位置计算出相机矩阵,实现在三维球面中精准拖动模型的效果。
技术介绍
传统的三维球面场景对场景的拖动时,需要计算使用鼠标在窗口二维坐标系移动的位置去拖动场景,但由于二三维坐标的不一致,导致三维场景的拖动不精准,鼠标点中物体在拖动过后,鼠标所在位置和点中的点发生了偏移,因此,当需要精准拖动时,这种处理方式则无能为力。
技术实现思路
本专利技术的目的是针对现有技术的不足,提出了利用鼠标按下当前点的二维坐标和主相机的矩阵信息与全场景的模型做一次相交运算,从而精准的计算出三维球面场景中当前鼠标锁定的模型点的三维坐标LockPoint(点A)。通过运算使鼠标左键按下后在场景中的任意移动都能锁定三维坐标LockPoint在鼠标位置。为实现这一目的,本专利技术提出了一种在三维球面实现拖动的方法,其包括:步骤1、获取三维场景下的三维球面模型以及相机矩阵;步骤2、锁定基准点,所述基准点为第三三维坐标G与第一三维坐标A所形成的线段与整个场景相交,取出相交的最近点第四三维坐标D;步骤3、移动所述鼠标,获取所述鼠标当前移动到的点的第二二维坐标B1,基于第二二维坐标B1和漫游相机矩阵计算出第二三维坐标B和第一向量CB;步骤4、基于所述第四三维坐标D,第一向量CB和线段OE计算第五三维坐标E,所述第五三维坐标E为转动场景后所述基准点的位置;步骤5、基于所述第五三维坐标E和第四三维坐标D,计算旋转角度和旋转轴;步骤6、基于计算的所述旋转角度和旋转轴,转动相机,从而实现三维球面的精准拖动。其中,所述基准点为鼠标当前按下的点在三维球面上的投影。其中,所述步骤2包括使用相机矩阵将所述基准点的第一二维坐标转换为三维场景中的第一三维坐标A和第三三维坐标G。其中,所述步骤1与步骤2之间还包括:计算鼠标当前按下点的在所述三维场景中的三维坐标。其中,所述二维坐标位于相对漫游相机的远截面上,三维坐标位于相对三维场景坐标。其中,所述步骤5具体包括:设定三维球面的球心为原点假定漫游相机不动,将所述鼠标点击的点的拖动视为第四三维坐标D、第五三维坐标E与所述原点构成的第一平面内,所述第四三维坐标D沿着球面转动角度α;此时,假定球不动,实际的移动可视为所述漫游相机在所述第一平面内由原始位置反向移动角度α。其中,,基于用户点击鼠标时按下的点A1与所述相机矩阵计算出相机远截面上的点的第一三维坐标A和相机近截面上的点的第三三维坐标G。本专利技术可以实现三维场景下的物体基于球面模型的的精准拖动。附图说明图1为与本专利技术实施例一致的将三维场景中的物体从一个点拖动到另一个点的平面示意图;图2为与图1的拖动一致的在三维场景中的拖动示意图;图3为与图2拖动一致的在三维球面模型下的拖动示意图;图4为与图3拖动一致的三维球面在二维平面中的映射图。具体实施例基于以上内容,本专利技术的主要的核心在于:第一,要计算鼠标按下点的二维坐标和三维坐标的转换,第二,根据鼠标移动到的位置计算出相机变化方位。一、二维坐标和三维坐标转换1、精准转换将鼠标当前按下的点的二维坐标转换为三维场景中的坐标,视这个三维点为精准抓取点LockPoint,后面的计算都是以这个为基准进行计算的。2、方向转换将鼠标按下移动后的点的二维坐标使用相机矩阵转化为此时三维场景的向量MoveVector(向量CB),此时场景是静止的,相机的矩阵依然使用鼠标按下时候的相机矩阵。通过鼠标按下点的初始三维坐标LockPoint和鼠标移动的向量MoveVector计算实现精准拖动此拖动算法主要有两个重点。一是拖动后模型还是在原来鼠标远来的位置,就是鼠标点下后,不管鼠标怎么移动,LockPoint一直在鼠标的位置,即简单说就是鼠标按下抓取点随着鼠标移动而移动;二是基于三维球面的拖动。如图1所示,为与本专利技术实施例一致的将三维场景中的物体从一个点拖动到另一个点的平面示意图。图中显示,用户将该物体从二维屏幕的点A1拖动到二维屏幕的点B1。如图2所示,为将使用相机矩阵,将二维屏幕的点A1到点B1的从远截面投射到近截面的对应点D和E处。其中D点为物体在三维场景中的真实位置,E点是在三维场景中的物体移动后的真实位置。如图3所示,为将所述拖动过程投射到三维场景的三维球面的立体图。如图4所示,为图3所示立体图映射到二维平面的映射图。各图中点的含义及其关系如下:A点鼠标按下时候的锁定点B点鼠标按下但未抬起时候的移动点C点相机位置已知D点鼠标按下时候,实际点选到的模型点(通过和整个场景相交计算)E点鼠标移动时候,实际模型所移动到的点,实现精准抓取F点过球心做辅助线OF垂直向量CBO点球心位置已知OD=OE。向量CB=通过鼠标移动后的二位坐标和相机的矩阵可以计算得到。如图,要实现精准拖动,就是要以ODE面的法向量为轴,转动α角度,求ODE面的法向量和α角度都需要先求E点的坐标以下计算E点坐标:β=向量CO和向量CB夹角;OF=sinβ*OC;CF=cosβ*OC;EF*EF=OE*OE+OF*OF;CE=CF-EF;E点=向量CB的单位向量*CE。以上操作包括以下步骤:步骤1、获取三维场景下的三维球面模型以及相机矩阵;步骤2、锁定基准点,所述基准点为第三三维坐标G与第一三维坐标A所形成的线段与整个场景相交,取出相交的最近点第四三维坐标D;步骤3、移动所述鼠标,获取所述鼠标当前移动到的点的第二二维坐标B1,基于第二二维坐标B1和漫游相机矩阵计算出第二三维坐标B和第一向量CB;步骤4、基于所述第四三维坐标D,第一向量CB和线段OE计算第五三维坐标E,所述第五三维坐标E为转动场景后所述基准点的位置;步骤5、基于所述第五三维坐标E和第四三维坐标D,计算旋转角度和旋转轴;步骤6、基于计算的所述旋转角度和旋转轴,转动相机,从而实现三维球面的精准拖动。其中,所述基准点为鼠标当前按下的点在三维球面上的投影。其中,所述步骤2包括使用相机矩阵将所述基准点的第一二维坐标转换为三维场景中的第一三维坐标A和第三三维坐标G。其中,所述步骤1与步骤2之间还包括:计算鼠标当前按下点的在所述三维场景中的三维坐标。其中,所述二维坐标位于相对漫游相机的远截面上,三维坐标位于相对三维场景坐标。其中,所述步骤5具体包括:设定三维球面的球心为原点假定漫游相机不动,将所述鼠标点击的点的拖动视为第四三维坐标D、第五三维坐标E与所述原点构成的第一平面内,所述第四三维坐标D沿着球面转动角度α;此时,假定球不动,实际的移动可视为所述漫游相机在所述第一平面内由原始位置反向移动角度α。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本专利技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。尽管已经示出和描述了本专利技术的实施例,本领域的普通技术人员可以理解:在不脱离本专利技术的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变本文档来自技高网...
一种在三维球面实现拖动的方法

【技术保护点】
一种在三维球面实现拖动的方法,其包括:步骤1、获取三维场景下的三维球面模型以及相机矩阵;步骤2、锁定基准点,所述基准点为第三三维坐标G与第一三维坐标A所形成的线段与整个场景相交,取出相交的最近点第四三维坐标D;步骤3、移动所述鼠标,获取所述鼠标当前移动到的点的第二二维坐标B1,基于第二二维坐标B1和漫游相机矩阵计算出第二三维坐标B和第一向量CB;步骤4、基于所述第四三维坐标D,第一向量CB和线段OE计算第五三维坐标E,所述第五三维坐标E为转动场景后所述基准点的位置;步骤5、基于所述第五三维坐标E和第四三维坐标D,计算旋转角度和旋转轴;步骤6、基于计算的所述旋转角度和旋转轴,转动相机,从而实现三维球面的精准拖动。

【技术特征摘要】
1.一种在三维球面实现拖动的方法,其包括:步骤1、获取三维场景下的三维球面模型以及相机矩阵;步骤2、锁定基准点,所述基准点为第三三维坐标G与第一三维坐标A所形成的线段与整个场景相交,取出相交的最近点第四三维坐标D;步骤3、移动所述鼠标,获取所述鼠标当前移动到的点的第二二维坐标B1,基于第二二维坐标B1和漫游相机矩阵计算出第二三维坐标B和第一向量CB;步骤4、基于所述第四三维坐标D,第一向量CB和线段OE计算第五三维坐标E,所述第五三维坐标E为转动场景后所述基准点的位置;步骤5、基于所述第五三维坐标E和第四三维坐标D,计算旋转角度和旋转轴;步骤6、基于计算的所述旋转角度和旋转轴,转动相机,从而实现三维球面的精准拖动。2.如权利要求1所述在三维球面实现拖动的方法,其中,所述步骤2包括使用相机矩阵将所述基准点的第一二维坐标转换为三维场景中的第一三维坐标A和...

【专利技术属性】
技术研发人员:陈杭锋俞蔚
申请(专利权)人:浙江科澜信息技术有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1