一种用于3d场景的焦点切换方法及系统的制作方法

文档序号:6516311阅读:172来源:国知局
一种用于3d场景的焦点切换方法及系统的制作方法
【专利摘要】本发明公开一种用于3D场景的焦点切换方法及系统,其中,方法包括步骤:计算3D场景物体模块中各顶点的中心点作为节点;计算包围盒中当前焦点到其他节点的向量,构成当前焦点的向量集合;获取基于用户观察方向的3D场景模型视图坐标系,并将此3D场景模型视图坐标系平移至当前焦点;计算当前焦点的向量集合中各向量在3D场景模型视图坐标系的X、Y、Z轴的投影,分别获得X、Y、Z轴正区间和负区间上最小投影对应的向量;当接收到用户的焦点切换指令时,根据用户的焦点切换指令获取方向移动信息,根据方向移动信息从相应轴的正区间或负区间上获取最小投影对应的向量,并将焦点从当前焦点跳转至该向量指向的目标节点。
【专利说明】一种用于3D场景的焦点切换方法及系统
【技术领域】
[0001]本发明涉及3D【技术领域】,尤其涉及一种用于3D场景的焦点切换方法及系统。
【背景技术】
[0002]3D场景的焦点,是指在3D场景中通过对某一个物体模块施加特定的颜色和光效变换,通过这种特效来达到提示用户的效果。其中的物体模块可以是一个顶点,或者多个顶点连接构成的平面或者物体等,在本发明中,可将此顶点称为3D场景的节点。
[0003]传统的3D技术主要应用于游戏及一些实验场景的动态模拟,对焦点动态切换的使用较少,而且焦点切换也仅限于在某一个3D平面上的切换。随着技术的进步,3D应用在电视和手机中逐渐兴起,因此各种不同的焦点切换技术应运而生,以满足3D应用的功能需求。
[0004]现有技术中通用的焦点切换方法是在已存在的3D场景中,比如一些影视播放应用中,手动设定一个简单的邻里关系即可以满足焦点切换需求,这适合于各节点的形状(多采用四边形)和位置相对固定的3D场景中。
[0005]但是,随着应用开发效果的不断发展,在3D场景中的节点布局的形状和位置会有动态变化的情况,固定的切换规则显然会受到限制,焦点切换不够灵活。
[0006]因此,现有技术还有待于改进和发展。

【发明内容】

[0007]鉴于上述现有技术的不足,本发明的目的在于提供一种用于3D场景的焦点切换方法及系统,旨在解决现有的焦点切换方法切换不够灵活的问题。
[0008]本发明的技术方案如下:
一种用于3D场景的焦点切换方法,其中,包括步骤:
A、计算3D场景物体模块中各顶点的中心点作为节点;
B、计算包围盒中当前焦点到其他节点的向量,构成当前焦点的向量集合;
C、获取基于用户观察方向的3D场景模型视图坐标系,并将此3D场景模型视图坐标系平移至当前焦点;
D、计算当前焦点的向量集合中各向量在3D场景模型视图坐标系的X、Y、Z轴的投影,分别获得X、Y、Z轴正区间和负区间上最小投影对应的向量;
Ε、当接收到用户的焦点切换指令时,根据用户的焦点切换指令获取方向移动信息,根据方向移动信息从相应轴的正区间或负区间上获取最小投影对应的向量,并将焦点从当前焦点跳转至该向量指向的目标节点。
[0009]所述的用于3D场景的焦点切换方法,其中,所述步骤A与B之间还包括:
通过包围盒算法计算出3D场景中当前焦点需要比较的其他节点。
[0010]所述的用于3D场景的焦点切换方法,其中,所述步骤E中:
当焦点切换指令为向左切换时,获取X轴负区间上最小投影对应的向量; 当焦点切换指令为向右切换时,获取X轴正区间上最小投影对应的向量;
当焦点切换指令为向下切换时,获取Y轴负区间上最小投影对应的向量;
当焦点切换指令为向上切换时,获取Y轴正区间上最小投影对应的向量;
当焦点切换指令为向外切换时,获取Z轴负区间上最小投影对应的向量;
当焦点切换指令为向里切换时,获取Z轴正区间上最小投影对应的向量。
[0011]所述的用于3D场景的焦点切换方法,其中,所述步骤A中,当物体模块中各顶点构成规则节点时,直接计算其中心点;当物体模块中各顶点构成不规则节点时,手动定义或通过预定算法计算其中心点。
[0012]所述的用于3D场景的焦点切换方法,其中,所述方法还包括步骤:
当新的物体模块添加至当前焦点的包围盒时,计算新的物体模块各节点的中心点作为新节点,并计算当前焦点与新节点的新向量,并将新向量添加至当前焦点的向量集合中。
[0013]所述的用于3D场景的焦点切换方法,其中,所述方法还包括步骤:
当有物体模块从包围盒中删除时,从当前焦点的向量集合中删除对应的向量。
[0014]—种用于3D场景的焦点切换系统,其中,包括:
节点计算模块,用于计算3D场景物体模块中各顶点的中心点作为节点;
向量集合计算模块,用于计算包围盒中当前焦点到其他节点的向量,构成当前焦点的向量集合;
坐标系平移模块,用于获取基于用户观察方向的3D场景模型视图坐标系,并将此3D场景模型视图坐标系平移至当前焦点;
向量投影模块,用于计算当前焦点的向量集合中各向量在3D场景模型视图坐标系的X、Y、Z轴的投影,分别获得X、Y、Z轴正区间和负区间上最小投影对应的向量;
焦点跳转模块,用于当接收到用户的焦点切换指令时,根据用户的焦点切换指令获取方向移动信息,根据方向移动信息从相应轴的正区间或负区间上获取最小投影对应的向量,并将焦点从当前焦点跳转至该向量指向的目标节点。
[0015]所述的用于3D场景的焦点切换系统,其中,还包括:
节点比较模块,用于通过包围盒算法计算出3D场景中当前焦点需要比较的其他节点。
[0016]所述的用于3D场景的焦点切换系统,其中,还包括:
节点添加模块,用于当新的物体模块添加至当前焦点的包围盒时,计算新的物体模块各节点的中心点作为新节点,并计算当前焦点与新节点的新向量,并将新向量添加至当前焦点的向量集合中。
[0017]所述的用于3D场景的焦点切换系统,其中,还包括:
节点删除模块,用于当有物体模块从包围盒中删除时,从当前焦点的向量集合中删除对应的向量。
[0018]有益效果:本发明通过对现有的焦点切换方法进行改进,提高了 3D场景中焦点在各节点间跳转的灵活度,当有物体模块(节点)增加和删除时,可以不用修改增删节点的焦点跳转规则,并快速更新当前焦点的向量集合,在节点位置动态变化时,能够自动适应新的节点位置关系,并且在3D场景的角度和位置变化时,也不会影响用户观察方向的焦点跳转体验,本发明通过包围盒算法和中心点技术提高了计算效率,实现快速响应用户的切换指令的目的。【专利附图】

【附图说明】
[0019]图1为本发明用于3D场景的焦点切换方法较佳实施例的流程图。
[0020]图2至图5为3D场景中不同物体模块各顶点的中心点的结构示意图。
[0021]图6为图1中包围盒中各物体模块的结构示意图。
[0022]图7为图6包围盒中当前焦点与其他节点之间的向量示意图。
[0023]图8为图6包围盒中各向量处于3D场景模型视图坐标系的坐标示意图。
[0024]图9为图6包围盒中各向量在3D场景模型视图坐标系投影之后的投影图。
[0025]图10为图1中焦点切换指令与向量集合中各向量的对应关系图。
[0026]图11为本发明用于3D场景的焦点切换系统较佳实施例的结构框图。
【具体实施方式】
[0027]本发明提供一种用于3D场景的焦点切换方法及系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0028]请参阅图1,图1为本发明一种用于3D场景的焦点切换方法较佳实施例的流程图,如图所示,其包括步骤:
5101、计算3D场景物体模块中各顶点的中心点作为节点;
5102、计算包围盒中当前焦点到其他节点的向量,构成当前焦点的向量集合;
5103、获取基于用户观察方向的3D场景模型视图坐标系,并将此3D场景模型视图坐标系平移至当前焦点;
5104、计算当前焦点的向量集合中各向量在3D场景模型视图坐标系的X、Y、Z轴的投影,分别获得X、Y、Z轴正区间和负区间上最小投影对应的向量;
5105、当接收到用户的焦点切换指令时,根据用户的焦点切换指令获取方向移动信息,根据方向移动信息从相应轴的正区间或负区间上获取最小投影对应的向量,并将焦点从当前焦点跳转至该向量指向的目标节点。
[0029]具体来说,在步骤SlOl中,如图2至图5所示,需要计算3D场景中各物体模块中各顶点的中心点作为该物体模块的节点,由于不同物体模块的形状可能差别很大,其中心点计算方法也可能不同,当物体模块中各顶点构成规则节点时,可以直接计算其中心点;当物体模块中各顶点构成不规则节点时,可以手动定义其中心点,或者通过预定算法计算其中心点。
[0030]在步骤S102中,需计算包围盒中当前焦点到其他节点(即中心点)的向量,构成当前焦点的向量集合,其中的当前焦点是指焦点处于当前物体模块的节点上,也可称为当前焦点节点,此步骤需要计算该当前焦点到其他节点的向量。本发明是通过包围盒技术来确定哪些节点在当前焦点要考虑跳转的范围内,其在步骤SlOl与步骤S102之间还包括步骤:
通过包围盒算法计算出3D场景中当前焦点需要比较的其他节点,如图6所示,其示意了一个包围盒中所需比较的节点。包围盒算法是一种求解离散点集最优包围空间的方法,其基本思想是用体积稍大且特性简单的集合体(包围盒)来近似地代替复杂的几何对象,关于此部分内容可参考现有技术,不在此赘述。
[0031]在计算出当前焦点需要比较的节点之后,即可通过步骤S102计算出当前焦点与需比较的节点之间的向量,如图7所示,向量包含长度和方向,其方向是当前焦点指向其他节点的方向,长度则是当前焦点与其他节点之间的距离。这样诸多向量就构成了当前焦点的向量集合。
[0032]在步骤S103中,需获取基于用户观察方向的3D场景模型视图坐标系,该坐标系可基于摄像头位置及角度变化而调整,使其始终基于用户观察方向,不会影响用户的焦点跳转体验,然后将此3D场景模型视图坐标系平移至当前焦点,如图8所示,这样当前焦点的各个向量处于该坐标系中,该坐标系包括X轴、Y轴及Z轴。
[0033]该3D场景模式视图坐标系可使用OpenGL (Open Graphics Library,图形程序接口,定义了跨编程语言、跨平台的编程接口的规格)标准的接口获取,例如通过glLookAt等类似接口设置的场景坐标参数,平移的计算可采用OpenGL的glTranslate接口或者通过矩阵计算实现类似的位置计算功能。
[0034]在步骤S104中,计算当前焦点的向量集合中各向量在3D场景模型视图坐标系的X、Y、Z轴上的投影,如图9所示,向量A在Z轴的投影为Az,在X轴的投影为Ax,在Y轴的投影为Ay ;向量B在Z轴的投影为Bz,在X轴的投影为Bx,在Y轴的投影为By ;向量C在Z轴的投影为Cz,在X轴的投影为Cx,在Y轴的投影为Cy。这样就分别获得X、Y、Z轴各分量上正区间和负区间最小投影对应的向量,例如在X轴上正区间最小投影为Αχ,其对应的向量则为向量Α。
[0035]在步骤S105中,在接收到用户的焦点切换指令时,根据用户的焦点切换指令获取方向移动信息,再根据方向移动信息从相应轴的正区间或负区间上获取最小投影对应的向量,该最小投影表示在用户移动方向上与当前焦点最近的节点,其可作为焦点跳转的基准。例如用户的按键事件为按下右键时,那么方向移动信息为向右,则获取代表用户观察方向的X轴正区间(即右侧)最小投影为Αχ,其对应的向量为向量Α,所以需将当前焦点跳转至该向量所指的目标节点。
[0036]其中,焦点切换指令与各向量的对应关系如图10所示,即:
当焦点切换指令为向左切换时,获取X轴负区间上最小投影对应的向量;
当焦点切换指令为向右切换时,获取X轴正区间上最小投影对应的向量;
当焦点切换指令为向下切换时,获取Y轴负区间上最小投影对应的向量;
当焦点切换指令为向上切换时,获取Y轴正区间上最小投影对应的向量;
当焦点切换指令为向外切换时,获取Z轴负区间上最小投影对应的向量;
当焦点切换指令为向里切换时,获取Z轴正区间上最小投影对应的向量。
[0037]在本实施例中,还提供增删物体模块时的处理方法:
当新的物体模块添加至当前焦点的包围盒时,计算新的物体模块各节点的中心点作为新节点,并计算当前焦点与新节点的新向量,并将新向量添加至当前焦点的向量集合中。
[0038]当有物体模块从包围盒中删除时,从当前焦点的向量集合中删除对应的向量。
[0039]这样当有新的物体模块添加至包围盒中时,不用更改其他向量,只需增加对应的向量即可,当有旧的物体模块从包围盒中删除时,也只需删除对应的相邻即可,而不用更改其他向量,所以本发明的焦点切换方法,自适应能力强,且计算量小,可提高程序执行效率。并且由于本发明的焦点切换方法只需通过作为中心点的节点与当前焦点之间的位置关系来生成向量,所以其计算效率大大提高,计算过程也大大简化,在节点较多的情况下,也能保持高的计算效率。
[0040]基于上述方法,本发明还提供一种用于3D场景的焦点切换系统,如图11所示,其包括:
节点计算模块100,用于计算3D场景物体模块中各顶点的中心点作为节点;
向量集合计算模块200,用于计算包围盒中当前焦点到其他节点的向量,构成当前焦点的向量集合;
坐标系平移模块300,用于获取基于用户观察方向的3D场景模型视图坐标系,并将此3D场景模型视图坐标系平移至当前焦点;
向量投影模块400,用于计算当前焦点的向量集合中各向量在3D场景模型视图坐标系的X、Y、Z轴的投影,分别获得X、Y、Z轴正区间和负区间上最小投影对应的向量;
焦点跳转模块500,用于当接收到用户的焦点切换指令时,根据用户的焦点切换指令获取方向移动信息,根据方向移动信息从相应轴的正区间或负区间上获取最小投影对应的向量,并将焦点从当前焦点跳转至该向量指向的目标节点。
[0041]进一步,焦点切换系统还包括:
节点比较模块,用于通过包围盒算法计算出3D场景中当前焦点需要比较的其他节点。
[0042]进一步,焦点切换系统还包括:
节点添加模块,用于当新的物体模块添加至当前焦点的包围盒时,计算新的物体模块各节点的中心点作为新节点,并计算当前焦点与新节点的新向量,并将新向量添加至当前焦点的向量集合中。
[0043]进一步,焦点切换系统,还包括:
节点删除模块,用于当有物体模块从包围盒中删除时,从当前焦点的向量集合中删除对应的向量。关于上述模块的技术细节在前面的方法中已有详述,故不再赘述。
[0044]综上所述,本发明通过对现有的焦点切换方法进行改进,提高了 3D场景中焦点在各节点间跳转的灵活度,当有物体模块(节点)增加和删除时,可以不用修改增删节点的焦点跳转规则,并快速更新当前焦点的向量集合,在节点位置动态变化时,能够自动适应新的节点位置关系,并且在3D场景的角度和位置变化时,也不会影响用户观察方向的焦点跳转体验,本发明通过包围盒算法和中心点技术提高了计算效率,实现快速响应用户的切换指令的目的。
[0045]应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
【权利要求】
1.一种用于3D场景的焦点切换方法,其特征在于,包括步骤: A、计算3D场景物体模块中各顶点的中心点作为节点; B、计算包围盒中当前焦点到其他节点的向量,构成当前焦点的向量集合; C、获取基于用户观察方向的3D场景模型视图坐标系,并将此3D场景模型视图坐标系平移至当前焦点; D、计算当前焦点的向量集合中各向量在3D场景模型视图坐标系的X、Y、Z轴的投影,分别获得X、Y、Z轴正区间和负区间上最小投影对应的向量; Ε、当接收到用户的焦点切换指令时,根据用户的焦点切换指令获取方向移动信息,根据方向移动信息从相应轴的正区间或负区间上获取最小投影对应的向量,并将焦点从当前焦点跳转至该向量指向的目标节点。
2.根据权利要求1所述的用于3D场景的焦点切换方法,其特征在于,所述步骤A与B之间还包括: 通过包围盒算法计算出3D场景中当前焦点需要比较的其他节点。
3.根据权利要求1所述的用于3D场景的焦点切换方法,其特征在于,所述步骤E中: 当焦点切换指令为向左切换时,获取X轴负区间上最小投影对应的向量; 当焦点切换指令为向右切换时,获取X轴正区间上最小投影对应的向量; 当焦点切换指令为向下切换时,获取Y轴负区间上最小投影对应的向量; 当焦点切换指令为向上切换时,获取Y轴正区间上最小投影对应的向量; 当焦点切换指令为向外切换时,获取Z轴负区间上最小投影对应的向量; 当焦点切换指令为向里切换时,获取Z轴正区间上最小投影对应的向量。
4.根据权利要求1所述的用于3D场景的焦点切换方法,其特征在于,所述步骤A中,当物体模块中各顶点构成规则节点时,直接计算其中心点;当物体模块中各顶点构成不规则节点时,手动定义或通过预定算法计算其中心点。
5.根据权利要求1所述的用于3D场景的焦点切换方法,其特征在于,所述方法还包括步骤: 当新的物体模块添加至当前焦点的包围盒时,计算新的物体模块各节点的中心点作为新节点,并计算当前焦点与新节点的新向量,并将新向量添加至当前焦点的向量集合中。
6.根据权利要求1所述的用于3D场景的焦点切换方法,其特征在于,所述方法还包括步骤: 当有物体模块从包围盒中删除时,从当前焦点的向量集合中删除对应的向量。
7.一种用于3D场景的焦点切换系统,其特征在于,包括: 节点计算模块,用于计算3D场景物体模块中各顶点的中心点作为节点; 向量集合计算模块,用于计算包围盒中当前焦点到其他节点的向量,构成当前焦点的向量集合; 坐标系平移模块,用于获取基于用户观察方向的3D场景模型视图坐标系,并将此3D场景模型视图坐标系平移至当前焦点; 向量投影模块,用于计算当前焦点的向量集合中各向量在3D场景模型视图坐标系的X、Y、Z轴的投影,分别获得X、Y、Z轴正区间和负区间上最小投影对应的向量; 焦点跳转模块,用于当接收到用户的焦点切换指令时,根据用户的焦点切换指令获取方向移动信息,根据方向移动信息从相应轴的正区间或负区间上获取最小投影对应的向量,并将焦点从当前焦点跳转至该向量指向的目标节点。
8.根据权利要求7所述的用于3D场景的焦点切换系统,其特征在于,还包括: 节点比较模块,用于通过包围盒算法计算出3D场景中当前焦点需要比较的其他节点。
9.根据权利要求7所述的用于3D场景的焦点切换系统,其特征在于,还包括: 节点添加模块,用于当新的物体模块添加至当前焦点的包围盒时,计算新的物体模块各节点的中心点作为新节点,并计算当前焦点与新节点的新向量,并将新向量添加至当前焦点的向量集合中。
10.根据权利要求7所述的用于3D场景的焦点切换系统,其特征在于,还包括: 节点删除模块,用于当有物体模块从包围盒中删除时,从当前焦点的向量集合中删除对应的向量 。
【文档编号】G06T19/20GK103559742SQ201310501195
【公开日】2014年2月5日 申请日期:2013年10月23日 优先权日:2013年10月23日
【发明者】卞晓辉 申请人:Tcl集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1