一种基于旋转角度模型库的3D模型旋转角度自匹配系统及方法与流程

文档序号:12471509阅读:227来源:国知局
一种基于旋转角度模型库的3D模型旋转角度自匹配系统及方法与流程

本发明属于建模设计领域,具体地说,涉及一种基于旋转角度模型库的3D模型旋转角度自匹配系统及方法。



背景技术:

随着人们追求更加逼真的虚拟现实的体验欲望的强烈,3D的虚拟现实技术也随之普及。但在现有的居室3D模型建模技术中,常常涉及对家具的安装或旋转等操作,这些操作都需要人工介入对其设置旋转角度,但人为设置旋转角度的既不方便也不准确,因此大大增加了用户对3D建模的操作成本。



技术实现要素:

1、要解决的问题

针对现有居室3D模型建模时人工介入设置家具旋转角度困难且不准确的问题,本发明提供一种基于旋转角度模型库的3D模型旋转角度自匹配系统,以及根据该系统进行3D模型旋转角度自匹配的方法,能有效降低3D建模难度,提高3D建模中3D模型旋转角度的精度。

2、技术方案

为解决上述问题,本发明采用如下的技术方案。

一种基于旋转角度模型库的3D模型旋转角度自匹配系统,包括3D模型建立器、旋转角度模型库建立器、3D模型旋转角度计算器、3D模型节点坐标计算器和3D模型渲染器;所述的3D模型建立器与所述的3D模型旋转角度计算器单向连接;所述的3D模型旋转角度计算器与所述的3D模型节点坐标计算器单向连接;所述的3D模型节点坐标计算器与所述的3D模型建立器双向连接;所述的3D模型建立器与所述的3D模型渲染器单向连接;所述的旋转角度模型库建立器与所述的3D模型旋转角度计算器单向连接。

优选地,所述的3D模型建立器用于记录3D模型的对象信息。

优选地,所述的对象信息包括3D模型各节点的坐标、3D模型的OBB包围盒的偏移角度和3D模型的OBB包围盒中的旋转参考点坐标。

一种基于旋转角度模型库的3D模型旋转角度自匹配方法,包括如下步骤:

步骤1.初始化3D模型的对象信息;通过3D模型建立器将所述的对象信息分别传输给3D模型旋转角度计算器和3D模型节点坐标计算器;

步骤2.计算各参考面的角度;通过旋转角度模型库建立器将所述的参考面的角度传递给所述的3D模型旋转角度计算器;

步骤3.计算3D模型旋转角度;包括依附参考面的3D模型旋转角度的计算和脱离参考面的3D模型旋转角度的计算;通过3D模型旋转角度计算器将所述的3D模型旋转角度传输给3D模型节点坐标计算器;

步骤4.旋转3D模型;以所述的对象信息中的所述的参考点坐标为中心对所述的3D模型各节点坐标按步骤3中所述的3D模型旋转角度进行旋转;将旋转后的3D模型的对象信息传输给所述的3D模型建立器,由所述的3D模型建立器更新对应的3D模型的对象信息;

步骤5.绘制3D模型;3D模型渲染器从3D模型建立器中获取步骤4中经更新后的3D模型的对象信息,并根据该对象信息绘制3D模型。

优选地,步骤1中所述的对象信息包括:3D模型各节点的坐标、3D模型的OBB包围盒的偏移角度和3D模型的OBB包围盒中的旋转参考点坐标。

优选地,所述的OBB包围盒的偏移角度的获取方法是:根据所述的3D模型各节点坐标测量得出OBB包围盒的各节点坐标,再将OBB包围盒背面各节点坐标向地面进行投影以形成投影线段,测量此线段在地面上所形成的角度记录为所述的3D模型的OBB包围盒的偏移角度。

优选地,步骤2中首先通过旋转角度模型库建立器获取参考面上各节点的坐标,再向地面进行垂直投影以形成投影线段,记录此投影线段在地面上所形成的角度得到参考面的角度。

优选地,步骤3中所述的依附参考面的3D模型旋转角度的获取方法是:通过3D模型旋转角度计算器提取所述的对象信息中的3D模型的OBB包围盒的偏移角度、提取步骤2中所述的参考面的角度中目标参考面的角度;并将所述的目标参考面的角度减去所述的3D模型的OBB包围盒的偏移角度所得差值记录为所述的3D模型旋转角度;所述的目标参考面是3D模型所要依附的参考面。

优选地,步骤3中所述的脱离参考面的3D模型旋转角度的获取方法是:通过3D模型旋转角度计算器提取所述的对象信息中的所述的OBB包围盒的偏移角度;将所述的各参考面的角度逐个减去所述的OBB包围盒的偏移角度所得差值记录为角度组angle_group_1;再将所述的角度组angle_group_1中的角度挨个加上90度后形成垂直于所述的角度组angle_group_1的角度组angle_group_2;然后对所述的角度组angle_group_1和所述的角度组angle_group_2中的所有角度分别重新映射为从0度到360度之间范围的角度,得到角度组angle_group_3;再将所述的角度组angle_group_3按角度值以升序或降序进行重新排序,形成角度组angle_group_4;取角度组angle_group_4中的大于0的最小角度值记录为3D模型的旋转角度。

3、有益效果

相比于现有技术,本发明的有益效果为:

(1)本发明提供了旋转角度模型库建立器和3D模型旋转角度计算器,即发明了一种根据参考面自动建立旋转角度模型库,并基于已建立的旋转角度模型库自动匹配需要旋转的角度的方法,最终得到3D模型的OBB包围盒的背面平行于参考面或者垂直于参考面,其旋转角度都是系统自动计算,不再需要人工参与设置,解决了现有建模技术中3D模型旋转角度都需要人工设置的问题;

(2)本发明在居室3D模型中对家具3D模型安装或旋转时,其根据已建立的旋转角度模型库自动匹配需要旋转的角度的方法,整个角度旋转过程不再需要人工设置角度,通过这种角度自动匹配的方法得到的旋转角度精度非常高,解决了3D模型旋转角度不精确的问题。

附图说明

图1为本发明的3D模型角度旋转示意图;

图中:1、地面;2、参考面;3、在参考面外侧移动;4、在参考面内侧移动;5、脱离参考面旋转;6、OBB包围盒背面。

图2为本发明系统各模块连接关系图;

图3为本发明的算法流程图。

具体实施方式

下面结合附图对本发明进行详细描述。

一种基于旋转角度模型库的3D模型旋转角度自匹配系统,包括3D模型建立器、旋转角度模型库建立器、3D模型旋转角度计算器、3D模型节点坐标计算器和3D模型渲染器;

如图2所示,所述的3D模型建立器与所述的3D模型旋转角度计算器单向连接;所述的3D模型旋转角度计算器与所述的3D模型节点坐标计算器单向连接;所述的3D模型节点坐标计算器与所述的3D模型建立器双向连接;所述的3D模型建立器与所述的3D模型渲染器单向连接;所述的旋转角度模型库建立器与所述的3D模型旋转角度计算器单向连接;

所述的3D模型建立器是一种如下模块:用于记录3D模型的对象信息,对象信息包括:3D模型各节点的坐标、3D模型的OBB包围盒的偏移角度和3D模型的OBB包围盒中的旋转参考点坐标;并将此对象的相关信息分别传输给3D模型旋转角度计算器,再经3D模型旋转角度计算器传输给3D模型节点坐标计算器;

所述的旋转角度模型库建立器是一种如下模块:用于收集各参考面的节点坐标,并根据节点坐标计算各参考面的角度,并将各参考面的角度传输给3D模型旋转角度计算器;所谓参考面就是垂直于地面的面;如图1展示了一种垂直于地面1的参考面2的情况;

所述的3D模型旋转角度计算器是一种如下模块:根据从旋转角度模型库建立器中获取的各参考面的角度以及从3D模型建立器中获取的3D模型的OBB包围盒的偏移角度计算3D模型所需的旋转角度,并将此3D模型的旋转角度以及3D模型的对象信息一并传输给3D模型节点坐标计算器;

所述的3D模型节点坐标计算器是一种如下模块:根据从3D模型旋转角度计算器中获取3D模型所需的旋转角度以及从3D模型建立器中获取3D模型信息计算旋转后的3D模型各节点的坐标;并将计算后的节点坐标传输给3D模型建立器,以更新对应的3D模型的对象信息;

所述的3D模型渲染器是一种如下模块:根据从3D模型建立器获取3D模型对象信息对3D模型进行绘制。

一种基于旋转角度模型库的3D模型旋转角度自匹配方法,如图3所示,包括如下步骤:

步骤1.初始化3D模型的对象信息;

所述的3D模型的对象信息记录在所述的3D模型建立器中;

所述的3D模型的对象信息包括:3D模型各节点的坐标、3D模型的OBB包围盒的偏移角度和3D模型的OBB包围盒中的旋转参考点坐标;

所述的3D模型建立器将所述的对象信息分别传输给3D模型旋转角度计算器和3D模型节点坐标计算器;

3D模型各节点的坐标可以在3D模型被加载时直接读取,其各节点的坐标可以但不限于数组或链表存储;

OBB包围盒的偏移角度的获取方法:根据所述的3D模型各节点坐标测量得出OBB包围盒的各节点坐标,再将OBB包围盒背面各节点坐标向地面进行投影以形成投影线段,测量此线段在地面上所形成的角度记录为所述的3D模型的OBB包围盒的偏移角度;如图1展示了OBB包围盒背面6的位置;

步骤2.计算各参考面的角度;

具体操作方法是首先通过旋转角度模型库建立器获取参考面上各节点的坐标,再向地面进行垂直投影以形成投影线段,记录此投影线段在地面上所形成的角度得到参考面的角度;

所述的旋转角度模型库建立器将所述的参考面的角度传递给所述的3D模型旋转角度计算器;

步骤3.计算3D模型旋转角度;

如图1所示,3D模型旋转角度的计算包括依附参考面旋转(包括在参考面外侧移动3和在参考面内侧移动4)和脱离参考面旋转5两种情况;对于依附参考面的3D模型的旋转角度与脱离参考面的3D模型的旋转角度的计算方案是不一样的,具体如下:

依附参考面的3D模型旋转角度的获得:所述的3D模型旋转角度计算器接收步骤1中来自所述的3D模型建立器中的所述的3D模型的对象信息、接收步骤2中来自所述的旋转角度模型库建立器中的所述的参考面的角度;提取所述的3D模型的对象信息中的所述的3D模型的OBB包围盒的偏移角度、提取所述的参考面的角度中目标参考面的角度;并将所述的目标参考面的角度减去所述的3D模型的OBB包围盒的偏移角度所得差值记录为所述的3D模型旋转角度;

所述的目标参考面是3D模型所要依附的参考面;

3D模型可以依赖于参考面的内侧也可以依赖参考面的外面,但不管是处于如图1所示的在参考面外侧移动3的情况,还是处于在参考面内侧移动4的情况,其3D模型旋转角度的获取方法是相同的;

脱离参考面的3D模型旋转角度的获得:从所述的旋转角度模型库建立器中获取的各参考面的角度以及从所述的3D模型建立器中获取所述的3D模型的对象信息,提取所述的3D模型的对象信息中的所述的OBB包围盒的偏移角度;将所述的各参考面的角度逐个减去所述的OBB包围盒的偏移角度所得差值记录为角度组angle_group_1;再将所述的角度组angle_group_1中的角度挨个加上90度后形成垂直于所述的角度组angle_group_1的角度组angle_group_2;然后对所述的角度组angle_group_1和所述的角度组angle_group_2中的所有角度分别重新映射为从0度到360度之间范围的角度(此范围角度包括0度但不包括360度),得到角度组angle_group_3;再将所述的角度组angle_group_3按角度值以升序或降序进行重新排序,形成角度组angle_group_4;取角度组angle_group_4中的大于0的最小角度值记录为3D模型的旋转角度;

将上述所得3D模型的旋转角度以及所述的3D模型的对象信息一并传输给3D模型节点坐标计算器;

步骤4.旋转3D模型;

从所述的3D模型旋转角度计算器获取步骤3中所得3D模型的旋转角度以及所述的3D模型的对象信息,以所述的3D模型的对象信息中的所述的参考点坐标为中心对所述的3D模型各节点坐标按步骤3中所述的3D模型旋转角度进行旋转(其旋转后的角度为3D模型旋转前的角度加上其已旋转的角度);最后将旋转后的3D模型的对象信息传输给所述的3D模型建立器,由所述的3D模型建立器更新对应的3D模型的对象信息;

步骤5.绘制3D模型;

3D模型渲染器从3D模型建立器中获取步骤4中经更新后的3D模型的对象信息,并根据该对象信息绘制3D模型。

下面结合具体实施例对本发明进一步进行描述。

实施例1

本实施例以对墙上的空调挂机的安装为说明。

一种基于旋转角度模型库的3D模型旋转角度自匹配方法,包括如下步骤:

步骤1.初始化3D模型的对象信息;通过3D模型建立器将所述的对象信息分别传输给3D模型旋转角度计算器和3D模型节点坐标计算器;

步骤2.计算各参考面的角度;

具体操作方法是首先通过所述的3D模型建立器获取房间内各墙面上各节点的坐标,再将墙面上各节点的坐标向地面进行垂直投影以形成投影线段,记录此投影线段在地面上所形成的角度得到参考面的角度;

所述的3D模型建立器记录上述步骤得到的参考面的角度,并将所述的参考面的角度传递给所述的3D模型旋转角度计算器;

步骤3.计算3D模型旋转角度;

空调挂机属于依附参考面的3D模型,依附参考面的3D模型旋转角度的获得:从旋转角度模型库建立器中获取的各参考面的角度以及从3D模型建立器中获取的空调挂机的3D模型的对象信息,并从此3D模型的对象信息中获取OBB包围盒的偏移角度,目标墙面的角度减去空调挂机的3D模型的OBB包围盒的偏移角度即为3D模型的旋转角度;所谓目标参考面就是3D模型将要被依附的参考面。

将此空调挂机的3D模型的旋转角度以及3D模型的对象信息一并传输给3D模型节点坐标计算器;

步骤4.旋转3D模型;

从所述的3D模型旋转角度计算器获取步骤3中所得空调挂机的3D模型的旋转角度以及空调挂机的3D模型的对象信息,以所述的3D模型的对象信息中的所述的参考节点坐标为中心对所述的3D模型各节点坐标按步骤3中所述的3D模型旋转角度进行旋转(其旋转后的角度为3D模型旋转前的角度加上其已旋转的角度);最后将旋转后的3D模型的对象信息传输给所述的3D模型建立器,由所述的3D模型建立器更新对应的3D模型的对象信息;

步骤5.绘制3D模型;

3D模型渲染器从3D模型建立器中获取步骤4中经更新后的空调挂机的3D模型的对象信息,并根据该对象信息绘制空调挂机的3D模型。

实施例2

本实施例以对吊顶的石膏线安装为说明,假设吊顶的形状为五角星。

一种基于旋转角度模型库的3D模型旋转角度自匹配方法,包括如下步骤:

步骤1.初始化3D模型的对象信息;通过3D模型建立器将所述的对象信息分别传输给3D模型旋转角度计算器和3D模型节点坐标计算器;

步骤2.计算各参考面的角度;

具体操作方法是首先通过所述的3D模型建立器获取形成吊顶的五角星多边形上各节点的坐标,再将形成吊顶的五角星多边形上各节点的坐标向地面进行垂直投影以形成投影线段,记录此投影线段在地面上所形成的角度得到参考面的角度;

所述的3D模型建立器记录上述步骤得到的参考面的角度,并将所述的参考面的角度传递给所述的3D模型旋转角度计算器;

计算3D模型旋转角度;

石膏线属于依附参考面的3D模型,依附参考面的3D模型旋转角度的获得:从旋转角度模型库建立器中获取的各参考面的角度以及从3D模型建立器中获取的石膏线的3D模型的对象信息,并从此3D模型的对象信息中获取OBB包围盒的偏移角度,目标吊顶多边形对应的边的角度减去石膏线的3D模型的OBB包围盒的偏移角度即为3D模型的旋转角度;所谓目标参考面就是3D模型将要被依附的参考面。

将此石膏线的3D模型的旋转角度以及3D模型的对象信息一并传输给3D模型节点坐标计算器;

步骤4.旋转3D模型;

从所述的3D模型旋转角度计算器获取步骤3中所得石膏线的3D模型的旋转角度以及石膏线的3D模型的对象信息,以所述的3D模型的对象信息中的所述的参考节点坐标为中心对所述的3D模型各节点坐标按步骤3中所述的3D模型旋转角度进行旋转(其旋转后的角度为3D模型旋转前的角度加上其已旋转的角度);最后将旋转后的3D模型的对象信息传输给所述的3D模型建立器,由所述的3D模型建立器更新对应的3D模型的对象信息;

步骤5.绘制3D模型;

3D模型渲染器从3D模型建立器中获取步骤4中经更新后的石膏线的3D模型的对象信息,并根据该对象信息绘制石膏线的3D模型。

实施例3

本实施例以对餐桌的旋转为说明。

一种基于旋转角度模型库的3D模型旋转角度自匹配方法,包括如下步骤:

步骤1.初始化3D模型的对象信息;通过3D模型建立器将所述的对象信息分别传输给3D模型旋转角度计算器和3D模型节点坐标计算器;

步骤2.计算各参考面的角度;

具体操作方法是首先通过所述的3D模型建立器获取房间内各墙面上各节点的坐标,再将墙面上各节点的坐标向地面进行垂直投影以形成投影线段,记录此投影线段在地面上所形成的角度得到参考面的角度;

所述的3D模型建立器记录上述步骤得到的参考面的角度,并将所述的参考面的角度传递给所述的3D模型旋转角度计算器;

步骤3.计算3D模型旋转角度;

餐桌属于脱离参考面的3D模型,脱离参考面的3D模型旋转角度的获得:从所述的旋转角度模型库建立器中获取的各墙面的角度以及从所述的3D模型建立器中获取餐桌的3D模型的对象信息,提取所述的餐桌的3D模型的对象信息中的OBB包围盒的偏移角度;将所述的各墙面的角度逐个减去所述的OBB包围盒的偏移角度所得差值记录为角度组angle_group_1;再将所述的角度组angle_group_1中的角度挨个加上90度后形成垂直于所述的角度组angle_group_1的角度组angle_group_2;然后对所述的角度组angle_group_1和所述的角度组angle_group_2中的所有角度分别重新映射为从0度到360度之间范围的角度(此范围角度包括0度但不包括360度),得到角度组angle_group_3;再将所述的角度组angle_group_3按角度值以升序或降序进行重新排序,形成角度组angle_group_4;取角度组angle_group_4中的大于0的最小角度值记录为3D模型的旋转角度;

将上述所得餐桌的3D模型的旋转角度以及餐桌的3D模型的对象信息一并传输给3D模型节点坐标计算器;

步骤4.旋转3D模型;

从所述的3D模型旋转角度计算器获取步骤3中所得餐桌的3D模型的旋转角度以及餐桌的3D模型的对象信息,以所述的3D模型的对象信息中的所述的参考节点坐标为中心对所述的3D模型各节点坐标按步骤3中所述的3D模型旋转角度进行旋转(其旋转后的角度为3D模型旋转前的角度加上其已旋转的角度);最后将旋转后的3D模型的对象信息传输给所述的3D模型建立器,由所述的3D模型建立器更新对应的3D模型的对象信息;

步骤5.绘制3D模型;

3D模型渲染器从3D模型建立器中获取步骤4中经更新后的餐桌的3D模型的对象信息,并根据该对象信息绘制餐桌的3D模型。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1