首页> 中国专利> 一种基于高度探测器以自动计算3D模型移动后的高度的系统与方法

一种基于高度探测器以自动计算3D模型移动后的高度的系统与方法

摘要

本发明公开了一种基于高度探测器以自动计算3D模型移动后的高度的系统与方法,属于计算机视觉技术领域。系统包括4个模块,即3D模型构建器、3D模型位移捕捉器、3D模型高度探测器、3D模型节点坐标计算器。通过各模块间的有机协作解决了对3D模型攀升到另一个3D模型上或者从另一个3D模型回落都需要人工对其高度进行设置的问题。

著录项

  • 公开/公告号CN106960474A

    专利类型发明专利

  • 公开/公告日2017-07-18

    原文格式PDF

  • 申请/专利权人 王征;

    申请/专利号CN201710280146.X

  • 发明设计人 王征;

    申请日2017-04-25

  • 分类号

  • 代理机构南京知识律师事务所;

  • 代理人蒋海军

  • 地址 210000 江苏省南京市江宁区融侨世家7栋1003

  • 入库时间 2023-06-19 02:52:30

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-14

    授权

    授权

  • 2017-08-11

    实质审查的生效 IPC(主分类):G06T19/00 申请日:20170425

    实质审查的生效

  • 2017-07-18

    公开

    公开

说明书

技术领域

本发明涉及计算机视觉识别技术,尤其涉及一种基于高度探测器以自动计算3D模型移动后的高度的系统与方法。

背景技术

随着人们追求更加逼真的虚拟现实的体验欲望,3D的虚拟现实技术也随之普及。尤其在现有的居室3D模型建模技术中,常常涉及对家具的平移操作,对于某些特殊的家具的位置是时常依赖于静止物的,即当静止物发生变化后,此被移动的3D模型的高度也应该随之变化;但在现有的技术中,都是通过人工检测与人工设置的方法以控制高度正确性,即当操作者发现3D模型的静止物已经变化时,需要操作者再将按新的静止物的高度对被移动的3D模型的高度进行重新设置;这种人工检测与人工设置的方式既不方便也不准确,不仅造成误差,同时大大增加了用户对3D建模的操作成本。

发明内容

1.发明要解决的技术问题

针对现有技术中所涉及的在3D模型建模中,涉及当静止物发生变化后,被移动的3D模型的高度的正确性的控制都是通过人工检测与人工纠正,该方法对被移动的3D模型的高度的正确性的控制既不方便也不准确,本发明提供一种基于高度探测器以自动计算3D模型移动后的高度的方法,即3D模型是否需要上升或下降进行自动探测以及高度自动设置的方法,大大提升了位移精确度,也大大降低了用户对3D建模的操作成本,提升了用户对3D模型的操作体验。

2.技术方案

本发明基于高度探测器以自动计算3D模型移动后的高度的方法的技术方案进行了充分公开,其技术方案如下:

基于高度探测器以自动计算3D模型移动后的高度的系统,包括4个模块,即3D模型构建器、3D模型位移捕捉器、3D模型高度探测器和3D模型节点坐标计算器;其中3D模型构建器将移动物的OBB包围盒各节点坐标和静止物的OBB包围盒各节点坐标一并传输给3D模型高度探测器;3D模型位移捕捉器将捕捉移动物控制移动的位移坐标传输给3D模型高度探测器;3D模型高度探测器将计算后的垂直位移坐标传输给3D模型节点坐标计算器。

3D模型构建器:根据移动物3D模型以及静止物的3D模型各节点的坐标计算其对应OBB包围盒各节点坐标,并将移动物的OBB包围盒各节点坐标和静止物的OBB包围盒各节点坐标一并传输给3D模型高度探测器;

3D模型位移捕捉器:捕捉控制移动物3D模型的水平位移坐标,并将此控制移动物3D模型的水平位移坐标传输给3D模型高度探测器;

3D模型高度探测器:根据从3D模型构建器中获取移动物的OBB包围盒各节点坐标和静止物的OBB包围盒各节点坐标以及从3D模型位移捕捉器获取的移动物3D模型的水平位移坐标(所谓水平位移就是在平行与地面的平面内的位移),计算移动物3D模型在移动后的垂直位移坐标(所谓垂直位移就是在垂直与地面的平面内的位移);并将计算后的垂直位移坐标传输给3D模型节点坐标计算器;

3D模型节点坐标计算器:根据从3D模型高度探测器获取的移动物3D模型垂直位移坐标对移动物3D模型各节点坐标进行垂直方向的平移。

基于高度探测器以自动计算3D模型移动后的高度的方法,所涉及在两个3D模型之间,即其中一个静止的3D模型,主要用来支撑移动的3D模型的;另一个移动的3D模型,移动物3D模型在任何时刻都不可以在静止物3D模型的下方。本发明所提及的“两多边形相交”是指两多边形的所属区域有重叠,因此,“一个多边形被另一个多边形包含”也在本技术方案所指的“相交”范畴内。

基于高度探测器以自动计算3D模型移动后的高度的方法:

步骤1.初始化3D模型:3D模型构建器分别获取静止物3D模型各节点的坐标和移动物3D模型各节点的坐标,并分别根据静止物和移动物的节点坐标计算其OBB包围盒各节点坐标;将静止物的OBB包围盒各节点的坐标以及移动物的OBB包围盒各节点的坐标一并传输给3D模型移动探测器;

步骤2.捕捉控制移动物3D模型的水平位移坐标,即3D模型位移捕捉器从屏幕中捕捉控制移动物3D模型的水平位移坐标,并将水平位移坐标传输给3D模型移动探测器;

步骤3.计算垂直位移:3D模型高度探测器从3D模型构建器中获取移动物的OBB包围盒各节点坐标和静止物的OBB包围盒各节点坐标以及从3D模型位移捕捉器获取的移动物3D模型的水平位移坐标,通过多边形动态相交法或多边形静态相交法计算垂直位移:

多边形动态相交法实现计算垂直位移的具体步骤:

(-)对移动物3D模型的OBB包围盒下平面各节点向静止物3D模型的OBB包围盒下平面所在的平面进行垂直投影,形成移动物3D模型移动前的OBB包围盒的投影多边形,假设此投影多边形为group_old,静止物3D模型的OBB包围盒下平面的多边形为group_static;

(二)根据移动物3D模型的水平位移坐标对移动物3D模型OBB包围盒各节点进行平移计算,即将移动物3D模型OBB包围盒各节点的坐标与水平位移坐标分别按X、Y、Z轴的坐标分别进行相加,得到移动物3D模型OBB包围盒平移后的各节点坐标;

(三)对已平移后移动物3D模型的OBB包围盒下平面各节点向静止物3D模型的OBB包围盒下平面所在的平面进行垂直投影,形成移动后的移动物3D模型OBB包围盒的投影多边形,假设此投影多边形为group_new;

(四)判断多边形group_old与多边开group_static的位置关系,以及多边形group_new与多边开group_static的位置关系(判断两多边形是否相交的算法在现有技术中已有公开,本发明不再赘述);

如果多边形group_old与多边开group_static是相交的,而多边形group_new与多边开group_static是不相交的,则被移动后的移动物3D模型的垂直位移应为静止物3D模型的OBB包围盒的高度的负数值,即移动物3D模型的高度坐标值高度坐标值将要下落;

如果多边形group_old与多边开group_static是不相交的,而多边形group_new与多边开group_static是相交的,则被移动后的移动物3D模型的垂直位移应为静止物3D模型的OBB包围盒的高度的正数值,即移动物3D模型的高度坐标值高度坐标值将要攀升;

如果多边形group_old与多边开group_static是不相交的,多边形group_new与多边开group_static也是不相交的,或者多边形group_old与多边开group_static是相交的,多边形group_new与多边开group_static也是相交的,则被移动后的3D模型的垂直位移应为0,即被移动后的3D模型的高度坐标值高度坐标值保持不变;

将计算后的垂直位移坐标传输给3D模型节点坐标计算器;

多边形静态相交法实现计算垂直位移的具体步骤:

(一)根据移动物3D模型的水平位移坐标对移动物3D模型OBB包围盒各节点进行平移计算,即将移动物3D模型OBB包围盒各节点的坐标与水平位移坐标分别按X、Y、Z轴的坐标进行分别相加,得到被移动的移动物3D模型OBB包围盒平移后的各节点坐标;

(二)对已平移后的移动物3D模型的OBB包围盒下平面各节点向静止物3D模型的OBB包围盒下平面所在的平面进行垂直投影,形成移动后的移动物3D模型OBB包围盒的的投影多边形;

(三)判断被移动前的移动物3D模型的OBB包围盒是否在静止的3D模型的OBB包围盒的上面;

如果被移动前的移动物3D模型的OBB包围盒在静止物3D模型的OBB包围盒的上面,判断3D模型移动后的OBB包围盒的的投影多边形是否与静止物3D模型的OBB包围盒下面多边形相交,如果不相交,则被移动后的3D模型的垂直位移应为静止物3D模型的OBB包围盒的高度的负数值;如果相交,则被移动后的3D模型的垂直位移应为0;

如果被移动前的3D模型的OBB包围盒不在静止物3D模型的OBB包围盒的上面,判断3D模型移动后的OBB包围盒的的投影多边形是否与静止物3D模型的OBB包围盒下面多边形相交,如果相交,则被移动后的3D模型的垂直位移应为静止物3D模型的OBB包围盒的高度的正数值;如果不相交,则被移动后的3D模型的垂直位移应为0;

将计算后的垂直位移坐标传输给3D模型节点坐标计算器;

步聚4.计算移动物3D模型垂直方向节点坐标,并进行垂直方向的平移。3D模型节点坐标计算器从3D模型高度探测器获取的移动物3D模型垂直位移坐标,并将移动物3D模型各节点在垂直方向上的坐标都加上此位移坐标,即可得到移动物3D模型在移动后在垂直方向上的节点坐标。

3.有益效果

本发明提供了一种基于高度探测器以自动计算3D模型移动后的高度的系统与方法,通过对静止物OBB包围盒和移动物OBB包围盒的投影后形成的多边形进行相交检验,最终得出移动物3D模型垂直方向上的移动坐标,此过程皆为系统自动计算以达到对移动物3D模型的垂直位移的自动控制,解决了现有技术中被移动物体的3D模型的高度都是通过需要通过人工检测、人工设置垂直位移而导致该垂直方向上位移而未被位移或者不该被位移而被误位移,以及垂直位移坐标不精确的问题。综上,本发明对3D模型移动后的高度进行自动计算的方法,不再需要通过人工检测与人工设置,不仅大大提升了位移精确度,也大大降低了用户对3D建模的操作成本,提升了用户对3D模型的操作体验。

附图说明

图1为本发明的3D模型平移后高度上升或下降示意图,X-水平方向,Y-垂直方向,1-静止物3D模型,2-移动物3D模型;

图2为本发明OBB上平面或OBB下平面示意图,3-OBB上平面,4-OBB下平面;

图3为本发明所涉及的系统模块连接关系图;

图4为本发明多边形动态相交的流程图;

图5为本发明多边形静态相交的流程图。

具体实施方式

实施例1:

如图1所示,静止物3D模型1为电视柜、移动物3D模型2为电视,水平方向X,垂直方向Y,平移电视后,计算电视与电视柜之间位置关系为例

如图3所示,基于高度探测器以自动计算3D模型移动后的高度的系统,包括4个模块,即3D模型构建器、3D模型位移捕捉器、3D模型高度探测器和3D模型节点坐标计算器,其中3D模型构建器将移动物的OBB包围盒各节点坐标和静止物的OBB包围盒各节点坐标一并传输给3D模型高度探测器;3D模型位移捕捉器将捕捉移动物控制移动的位移坐标传输给3D模型高度探测器;3D模型高度探测器将计算后的垂直位移坐标传输给3D模型节点坐标计算器。涉及各模块的简要技术如下:

3D模型构建器:根据电视3D模型以及电视柜的3D模型各节点的坐标计算其对应OBB包围盒各节点坐标,并将电视的OBB包围盒各节点坐标和电视柜的OBB包围盒各节点坐标一并传输给3D模型高度探测器;

3D模型位移捕捉器:捕捉控制电视3D模型的水平位移坐标,并将此控制电视3D模型的水平的位移坐标传输给3D模型高度探测器;

3D模型高度探测器:根据从3D模型构建器中获取电视的OBB包围盒各节点坐标和电视柜的OBB包围盒各节点坐标以及从3D模型位移捕捉器获取的电视3D模型的水平位移坐标(所谓水平位移就是在平行与地面的平面内的位移),计算电视3D模型在移动后的垂直位移坐标(所谓垂直位移就是在垂直与地面的平面内的位移);并将计算后的垂直位移坐标传输给3D模型节点坐标计算器;

3D模型节点坐标计算器:根据从3D模型高度探测器获取的电视3D模型垂直位移坐标对电视3D模型各节点坐标进行垂直方向的平移。

基于高度探测器以自动计算3D模型移动后的高度的方法,所涉及在两个3D模型之间,即其中一个静止的3D模型,主要用来支撑移动的3D模型的;另一个移动的3D模型,电视3D模型在任何时刻都不可以在静止物3D模型的下方。本发明所提及的“两多边形相交”是指两多边形的所属区域有重叠,因此,“一个多边形被另一个多边形包含”也在本技术方案所指的“相交”范畴内。本技术方案的实现方法有两套方案,即方案一或方案二。

步骤1.初始化3D模型,3D模型构建器分别获取电视柜3D模型各节点的坐标和电视3D模型各节点的坐标,并分别根据电视柜和电视的节点坐标计算其OBB包围盒各节点坐标;将电视柜的OBB包围盒各节点的坐标以及电视的OBB包围盒各节点的坐标一并传输给3D模型移动探测器;

步骤2.捕捉控制电视3D模型的水平位移坐标。电视和电视柜在X轴与Z轴组成的平面内移动属于水平移动,在Y轴上移动属于垂直移动,参见图2,OBB上平面3,OBB下平面4;

3D模型位移捕捉器从屏幕中捕捉控制电视3D模型的位移坐标,并将位移坐标传输给3D模型移动探测器;

步骤3.计算垂直位移。3D模型高度探测器从3D模型构建器中获取电视的OBB包围盒各节点坐标和电视柜的OBB包围盒各节点坐标以及从3D模型位移捕捉器获取的电视3D模型的水平位移坐标,通过多边形动态相交法或多边形静态相交法计算垂直位移:

(1)通过多边形动态相交法计算垂直位移的具体步骤,参见图4:

(1-1)对电视的OBB包围盒下平面各节点向电视柜OBB包围盒下平面所在的平面进行垂直投影,形成3D模型移动前的OBB包围盒的投影多边形,得到的投影多边形的各节点坐标可以按顺时针或逆时针并使用数组或链表对其存储;假设此投影多边形为group_old,静止的3D模型的OBB包围盒下平面的多边形为group_static;

(1-2)根据电视3D模型的水平位移坐标对电视3D模型OBB包围盒各节点进行平移计算。计算过程:假设平移矢量位移在X轴和Y轴以及Z轴上坐标分别为Tx和Ty以及Tz,对电视OBB包围盒各节点在X轴和Y轴以及Z轴上的坐标分别加上Tx和Ty以及Tz(一般水平位移时,Ty的值为0),得到电视OBB包围盒平移后的节点坐标;

(1-3)对已平移后的电视OBB包围盒下平面各节点向电视柜的OBB包围盒下平面所在的平面进行垂直投影,形成移动后的电视OBB包围盒的投影多边形,假设此投影多边形为group_new;

(1-4)判断多边形group_old与多边开group_static的位置关系,以及多边形group_new与多边开group_static的位置关系;

如果多边形group_old与多边开group_static是相交的,而多边形group_new与多边开group_static是不相交的,则被移动后电视的3D模型的高度位移应为静止的电视柜OBB包围盒的高度的负数值;

如果多边形group_old与多边开group_static是不相交的,而多边形group_new与多边开group_static是相交的,则被移动后电视的3D模型的高度位移应为电视柜OBB包围盒的高度正数值;

如果多边形group_old与多边开group_static是不相交的,多边形group_new与多边开group_static也是不相交的,或者多边形group_old与多边开group_static是相交的,多边形group_new与多边开group_static也是相交的,则被移动后电视的3D模型的高度位移为0;

也可以通过(2)多边形静态相交法计算垂直位移的具体步骤,参见附图5:

(2-1)根据电视3D模型的水平位移坐标对电视3D模型OBB包围盒各节点进行平移计算。计算过程:假设平移矢量位移在X轴和Z轴上坐标分别为Tx和Tz,对电视OBB包围盒各节点在X轴和Z轴上的坐标分别加上Tx和Tz,得到电视OBB包围盒平移后的节点坐标;

(2-2)对已平移后的电视OBB包围盒下平面各节点向电视柜OBB包围盒下平面所在的平面进行垂直投影,形成移动后的电视OBB包围盒的的投影多边形,假设此投影多边形为group_new,电视柜OBB包围盒下平面的多边形为group_static;

(2-3)判断被移动前的电视OBB包围盒是否在电视柜OBB包围盒的上面;

如果被移动前的电视OBB包围盒在电视柜的OBB包围盒的上面,判断多边形group_new与多边形group_static是否相交,如果不相交,则被移动后的电视3D模型的高度位移应为电视柜OBB包围盒的高度的负数值;如果相交,则被移动后电视的3D模型的高度位移应为0;

如果被移动前电视的3D模型的OBB包围盒不在电视柜OBB包围盒的上面,判断多边形group_new与多边形group_static是否相交,如果相交,则被移动后电视的3D模型的高度位移应为电视柜OBB包围盒的高度的正数值;如果不相交,则被移动后电视的3D模型的高度位移应为0;将计算后的垂直位移坐标传输给3D模型节点坐标计算器。

步聚4.计算电视3D模型垂直方向节点坐标,并进行垂直方向的平移。3D模型节点坐标计算器从3D模型高度探测器获取的电视3D模型垂直位移坐标,并将电视3D模型各节点在垂直方向上的坐标都加上此位移坐标,即可得到电视3D模型在移动后在垂直方向上的节点坐标。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号