一种三维场景中实现物体旋转操作的方法

文档序号:7663672阅读:314来源:国知局
专利名称:一种三维场景中实现物体旋转操作的方法
技术领域
本发明涉及广电领域的字幕制作技术领域,尤其涉及一种三维场景中实现物体旋转操作的方法。
背景技术
在视频制作过程中对于图元的操作是避免不了的,然而在图元操作的过程中往往会对物体进行拖动旋转等操作。现有技术中,在场景中当鼠标选中物体某个位置拖动或进行旋转时候,只能实现单一绕X轴,Y轴或Z轴旋转,不能实现拖动物体的球面包围盒进行旋转的效果,要实现一 个空间姿态,一般需要经过绕X旋转,绕Y旋转,绕Z旋转三次拖拽操作,比较繁琐,且因需要经过三步操作才能看到结果,不能实时做调整。发明人在实施本发明的过程中,发现现有技术存在以下技术问题(I)经过多次拖拽旋转物体才可以实现物体的任何一个空间姿态,操作繁琐;(2)多步操作看到旋转结果不能实时调整。

发明内容
为了解决上述现有技术的缺点,本发明的主要目的是提供一种三维场景中实现物体旋转操作的方法以解决现有技术中不能实现三维场景中拖拽物体的球面包围盒改变物体的空间姿态,实现物体的旋转的技术问题。为了达到上述目的,本发明提供了一种三维场景中实现物体旋转操作的方法,具体包括计算拖拽物体的起点和终点的三维空间向量;计算所述物体起点到终点向量的旋转轴和旋转角度;计算旋转矩阵及X,Y, z方向的旋转角度。本发明采用的三维场景中实现物体旋转操作的方法通过先计算起点与终点三维空间向量进而计算向量的旋转轴及旋转角度的方式可以计算出旋转矩阵及与X,y,z方向的旋转角度实现三维场景中拖拽物体的球面包围盒改变物体的空间姿态,实现物体的旋转。


为了更清楚的说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见的,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I为本发明实施例一种三维场景中实现拖拽物体旋转操作的方法流程图;图2为本发明实施例三维场景中实现拖拽物体旋转操作的示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然所描述的实施例仅是本发明的一部分实施例,不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例一方面提供了一种三维场景中实现物体旋转操作的方法,如图I所示为本发明实施例三维场景中实现拖拽物体旋转球面效果的方法流程图,具体包括以下步骤步骤SI :计算拖拽物体的起点和终点在三维空间中的向量。首先由包围盒确定物体中心的屏幕坐标,然后根据拖拽前后的屏幕坐标计算相对物体中心的相对坐标记SptFrom, ptTo。将上述拖拽前后的相对坐标转换为极坐标角度再转为三维向量,记为vecFrom, vecTo。 步骤S2 :计算拖拽物体起点到终点向量的旋转轴和旋转角度。当vecFrom和vecTo长度之积flength不为O即拖拽有效的情况下计算vecFrom与vecTo的外积记为vCross并将此外积向量作为旋转轴。计算vecFrom 与 vecTo 的内积 fDot,将 fDot 除以 flength 记为 fcos ;计算 vecFrom与vecTo的外积vCross长度并除以flength记为fSin。通过fCos和fSin计算旋转角度。通过fCos和fSin计算旋转角度具体步骤如下步骤S201 :如果fSin大于等于I. 0,旋转角度为90度;如果fSin小于等于-I. 0,旋转角度为270度;如果不属于上述两种情况则执行步骤S202 ;步骤S202 :求fSin的反正弦角度arcsin (fSin),并将弧度转为角度记为fAngle ;步骤S203 :如果fCos小于0,则将180-fAngle的值赋给fAngle以得到新的旋转角度;步骤S204 :如果fSin小于O,则将fAngle+360的值赋给fAngle得到新的旋转角度;步骤S3 :通过旋转轴和旋转角度计算旋转矩阵,通过旋转矩阵分解得到X,y,z方向的旋转角度,将这三个角度与旋转前物体空间中的xyz方向的角度分别相加,得到当前物体的旋转角度,实现物体的旋转。通过以上的方法计算得到当前物体的旋转角度后,当鼠标拖拽球面包围盒任意角度运动时物体就可以跟随鼠标拖拽的球面包围盒运动,也就是说鼠标拖着球面在动,里面的物体跟着同步运动,实现旋转效果。如图2所示举例说明,圆3围成的球面为与X轴垂直的YZ平面,以X轴为旋转轴可以实现绕X旋转,也就是YZ平面以X轴为中心旋转。本发明可以实现鼠标点击1、2、3三个圆围成的球面的任何位置进行拖动,物体跟着旋转。本发明采用的三维场景中实现物体旋转操作的方法通过先计算起点与终点三维空间向量进而计算向量的旋转轴及旋转角度的方式可以计算出旋转矩阵及与X,y,z方向的旋转角度实现三维场景中拖拽物体的球面包围盒改变物体的空间姿态,实现物体的旋转。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过软件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是⑶-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。以上所述,仅为本发明的一个最佳具体实施例,但本发明的特征并不局限于此,任何熟悉该项技术的人在本发明领域内,可轻 易想到的变化或修饰,都应涵盖在以下本发明的申请专利范围中。
权利要求
1.一种三维场景中实现物体旋转操作的方法,其特征在于,包括 计算拖拽物体的起点和终点的三维空间向量; 计算所述物体起点到终点向量的旋转轴和旋转角度; 计算物体的旋转矩阵及X,I,Z方向的旋转角度。
2.如权利要求I所述的三维场景中实现物体旋转操作的方法,其特征在于,所述三维空间向量的计算方法为 首先,由包围盒确定物体中心的屏幕坐标; 其次,根据拖拽前后的屏幕坐标计算相对物体中心的相对坐标; 最后,将上述拖拽前后的相对坐标转换为极坐标角度再转为三维空间向量。
3.如权利要求I所述的三维场景中实现物体旋转操作的方法,其特征在于,所述起点到终点的旋转轴是拖拽有效的情况下计算的拖拽前后的三维空间向量的外积向量。
4.如权利要求3所述的三维场景中实现物体旋转操作的方法,其特征在于,所述拖拽有效是指拖拽前后的三维空间向量的长度之积不为O的情况。
5.如权利要求I所述的三维场景中实现物体旋转操作的方法,其特征在于,所述起点到终点的旋转角度是通过拖拽前后的三维空间向量的内积与外积分别除以拖拽前后的三维空间向量长度之积计算得到的。
6.如权利要求5所述的三维场景中实现物体旋转操作的方法,其特征在于,所述起点到终点的旋转角度的具体计算方法为 如果拖拽前后的三维空间向量的外积除以所述拖拽前后的三维空间向量长度之积得到的fSin大于等于I. O,旋转角度为90度;如果fSin小于等于-I. 0,旋转角度为270度;如果fSin不属于大于等于I. O和小于等于-I. O的情况则求fSin的反正弦角度arcsin(fSin),并将弧度转为角度记为fAngle ; 如果拖拽前后的三维空间向量的内积除以所述拖拽前后的三维空间向量长度之积得到fCos小于O,则将180-fAngle的值赋给fAngle以得到新的旋转角度; 如果fSin小于O,则将fAngle+360的值赋给fAngle得到新的旋转角度。
7.如权利要求I所述的三维场景中实现物体旋转操作的方法,其特征在于,所述物体的旋转角度是由旋转矩阵分解得到X,y,z方向的旋转角度,将所述三个角度与旋转前物体空间中的X,y,z方向的角度分别相加得到的。
全文摘要
本发明公开了一种三维场景中实现物体旋转操作的方法。通过先计算起点与终点三维空间向量进而计算向量的旋转轴及旋转角度的方式可以计算出旋转矩阵及与x,y,z方向的旋转角度实现三维场景中拖拽物体的球面包围盒并改变物体的空间姿态,实现物体的旋转。
文档编号H04N5/278GK102724440SQ201110121669
公开日2012年10月10日 申请日期2011年5月11日 优先权日2011年5月11日
发明者刘衡娜, 沈季, 蔡欢, 郑培枫 申请人:新奥特(北京)视频技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1