基于三维引擎一键安装四边体模型的方法、装置及设备与流程

未命名 10-18 阅读:114 评论:0


1.本发明涉及一种基于三维引擎一键安装四边体模型的方法、装置及设备,属于三维可视化技术领域。


背景技术:

2.随着市场对于三维模型的需求量日益增加,很多三维模型创建的时候都只是简模示意(如图4),到了渲染环节的时候再通过对模型进行细化处理,从而渲染出最终的真实模型(如图5)。
3.对于涉及到带有外墙玻璃的大场景建筑群体模型,在渲染时一个重要的工作是对每栋楼不同墙体表面的玻璃或幕墙进行布置安装。目前传统的玻璃幕墙安装方法是由人工对每栋楼的每行每列玻璃通过手动的方式去逐一摆放,效率低下且浪费人力物力。
4.鉴于以上,行业中亟需一种简易且高效的四边体模型一键批量安装方法。


技术实现要素:

5.为了解决上述问题,本发明提出了一种基于三维引擎一键安装四边体模型的方法、装置及设备,该方法能够高效快速的对简模所涉及的四边体实现一键批量安装。
6.在本发明的实施例中,提供了一种基于三维引擎一键安装四边体模型的方法,包括以下步骤:s1、导入所有物体模型到三维引擎中,保留其所有点的空间位置信息;s2、利用for循环选出所有物体模型中的任意一个面,系统将基于用户自定义的横切线数m和纵切线数n,通过执行以下方法,得到所述面上每个四边体的中心点:s21、将选中面的四个点打入数组中,用sort函数沿y轴将四个点从上到下依次排列,则上面两个点数小,下面两个点数大;s22、使所述面的四个点的点序号按照顺时针或逆时针依次增大的顺序进行排列,求出所述面的宽度y和高度h;s23、将下面两个点连线的法线沿其连线方向指向两点;将连线两端分别沿其法线向内收缩四边体宽度的一半即(y/n)/2,得到线段d;s24、将线段d向上移动四边体高度的一半即(h/m)/2,利用copy函数以h/m为间隔距离向上复制m条线段d,即在所述面上得到m+1条线段d;s25、基于自定义的纵切线数n,确定每条线段d上所对应的四边体中心点数量为n+2-1;s26、采用add函数保留所有线段d的所有点,即对应于所述面上每个四边体的中心点;s3、创建单个四边体模型并将其赋予所求出的中心点上。
7.进一步地,所述s2中的s22,使所述面的四个点的点序号按照顺时针或逆时针依次增大的顺序进行排列,求出所述面的宽度y和高度h,具体做法为:
用point函数【point(0,"p", @ptnum)】取上面两点中任意一点的点序号为p;用distance函数【distance(p, @ptnum)】让点p分别搜索下面两点,将返回的距离值储存到点p上;用add函数将点p与下面两点分别相连,用setpoint函数【setpointattrib(p, "distance", "set")】将返回距离值大的端点的点序号设置为p+2,返回距离值小的端点的点序号设置为p+3;通过点p+2和点p+3的连线求出所述面的宽度y,通过点p和点p+3的连线求出所述面的高度h。
8.进一步地,所述s2中的s22,使所述面的四个点的点序号按照顺时针或逆时针依次增大的顺序进行排列,求出所述面的宽度y和高度h,具体做法为:用point函数【point(0, "p", 0)、point(0,"p", 2)、point(0, "p", 3)】获取其中三个点p0、p2、p3的位置信息;再用distance函数【distance(p0, p2)、distance(p0, p3)】求出点p0和点p2之间连线a1、点p0和点p3之间连线b1的距离;通过比较连线a1和连线b1的大小判断点序号排列是否符合预期:若连线a1大于连线b1,则保持点序号p2、p3位置不变;若连线a1小于连线b1,则利用setpoint函数【setpointattrib(0, "sort", 2, 3,"set")、setpointattrib(0, "sort", 3, 2, "set")】重新定义p2、p3的点序号,将p2改为p3,p3改为p2;通过点p0和点p1的连线求出所述面的宽度y,通过点p0和点p3的连线求出所述面的高度h。
9.进一步地,所述s3的具体步骤包括:s31、创建高度为h/m、宽度为y/n的单个四边体模型,使其法线方向为y轴的正方向;s32、利用copy函数将单个四边体模型赋予到s2求出的每个中心点上;s33、退出for循环,完成所有物体模型的所有四边体的一键安装。
10.在本发明的实施例中,提供了一种基于三维引擎一键安装四边体模型的装置,包括:模型导入模块,用以导入所有物体模型到三维引擎中,保留其所有点的空间位置信息;中心点获取模块,用以利用for循环选出所有物体模型中的任意一个面,并基于用户自定义的横切线数m和纵切线数n,通过执行中心点获取方法得到所述面上每个四边体的中心点;四边体赋予模块,用以创建单个四边体模型并将其赋予所求出的中心点上。
11.所述中心点获取模块,所执行的中心点获取方法,包括:将选中面的四个点打入数组中,用sort函数沿y轴将四个点从上到下依次排列,则上面两个点数小,下面两个点数大;使所述面的四个点的点序号按照顺时针或逆时针依次增大的顺序进行排列,求出所述面的宽度y和高度h;将下面两个点连线的法线沿其连线方向指向两点;将连线两端分别沿其法线向内收缩四边体宽度的一半即(y/n)/2,得到线段d;将线段d向上移动四边体高度的一半即(h/m)/2,利用copy函数以h/m为间隔距离
向上复制m条线段d,即在所述面上得到m+1条线段d;基于自定义的纵切线数n,确定每条线段d上所对应的四边体中心点数量为n+2-1;采用add函数保留所有线段d的所有点,即对应于所述面上每个四边体的中心点。
12.所述四边体赋予模块,其功能进一步用于:创建高度为h/m、宽度为y/n的单个四边体模型,使其法线方向为y轴的正方向;利用copy函数将单个四边体模型赋予到求出的每个中心点上;退出for循环,完成所有物体模型的所有四边体的一键安装。
13.在本发明的实施例中,提供了一种计算机设备,包括处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当所述计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述机器可读指令,以执行如上所述的基于三维引擎一键安装四边体模型的方法的步骤。
14.本发明的有益效果如下:本发明的一种基于三维引擎一键安装四边体模型的方法、装置及设备,基于用户自定义的横切线数和纵切线数,对模型中任意一个面预安装四边体的中心点进行计算,并利用for循环实现模型所有面的四边体安装,最终得到场景模型内所有四边体的批量安装。相较传统的手动制作,其实现效果快,扩展性强,灵活方便,通过调整横切线数和纵切线数便可批量修改四边体的数量及尺寸,即可改变诸如建筑物模型的层高和单元数。还可以根据需求选择出部分模型输入不同的横切线数和纵切线数,解决了目前行业中制作简模到精模的麻烦操作,省时省力,高效快速的实现了市场三维场景模型的四边体安装建模。
附图说明
15.图1是实施例一的基于三维引擎一键安装四边体模型的方法的流程图;图2是实施例二的基于三维引擎一键安装四边体模型的装置结构图;图3是实施例三的计算机设备的结构示意图;图4是建筑物简模示意图;图5是图4渲染后的模型示意图;图6是实施例二的s2中选出楼体模型的任意一个面的效果示意图;图7是实施例二的s21中点序号的四种排列示意图,其中(a)为点序号0、1、3、2沿顺时针排列图,(b)为点序号0、1、2、3沿顺时针排列图,(c)为点序号0、1、2、3沿逆时针排列图,(d)为点序号0、1、3、2沿逆时针排列图;图8是实施例二的s22中的点序号连线示意图,其中(a)为图7中(a)的点序号连线图,(b)为图7中(b)的点序号连线图,(c)为图7中(c)的点序号连线图,(d)为图7中(d)的点序号连线图;图9是实施例二的s24中获取的线段d示意图;图10是实施例二的s25中m+1条线段d的示意图;图11是实施例二的s27中获取的中心点示意图。
具体实施方式
16.下面结合附图与实施例对本发明做进一步说明:
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
17.实施例一实施例一以建筑物模型中的玻璃安装为例,提出一种基于三维引擎一键安装楼体玻璃的方法,其流程参考图1所示,具体过程如下:s1、导入所有建筑物模型到三维引擎中,保留建筑物模型所有点的空间位置信息;s2、利用for循环选出建筑物模型的任意一个面(如图6),获取用户输入的横切线数m和纵切线数n,系统将通过执行以下方法,得到所述面上每块玻璃的中心点:s21、将选中面的四个点打入数组中,用sort函数沿y轴将四个点从上到下依次排列,则上面两个点数小,下面两个点数大;s22、使所述面的四个点的点序号按照顺时针或逆时针依次增大的顺序进行排列:用point函数【point(0,"p", @ptnum)】取上面两点中任意一点的点序号为p;用distance函数【distance(p, @ptnum)】让点p分别搜索下面两点,将返回的距离值储存到点p上;用add函数将点p与下面两点分别相连,用setpoint函数【setpointattrib(p, "distance", "set")】将返回距离值大的端点的点序号设置为p+2,返回距离值小的端点的点序号设置为p+3;s23、通过点p+2和点p+3的连线求出所述面的宽度y,通过点p和点p+3的连线求出所述面的高度h;s24、将下面两个点p+2、p+3连线的法线沿其连线方向指向两点;将连线两端分别沿其法线向内收缩玻璃宽度的一半即(y/n)/2,得到线段d;s25、先将线段d向上移动玻璃高度的一半即(h/m)/2,再利用copy函数以h/m为间隔距离向上复制m条线段d,即在所述面上得到m+1条线段d;s26、基于自定义的纵切线数n,确定每条线段d上所对应的玻璃中心点数量为n+2-1;s27、采用add函数保留所有线段d的所有点,即对应于所述面上每块玻璃的中心点;s3、创建高度为h/m、宽度为y/n的单个玻璃模型,使其法线方向为y轴的正方向;利用copy函数将单个玻璃模型赋予到求出的每个中心点上;退出for循环,得到了整体赋予完玻璃的所有大楼。
18.为了实现实施例一的所述方法,本实施例还同时涉及了一种基于三维引擎一键安装楼体玻璃的装置,其结构如图2所示,包括:模型导入模块,用以导入所有建筑物模型到三维引擎中,保留其所有点的空间位置信息;中心点获取模块,用以利用for循环选出所有建筑物模型中的任意一个面,并基于用户自定义的横切线数m和纵切线数n,通过执行以下方法得到所述面上每块玻璃的中心
点:将选中面的四个点打入数组中,用sort函数沿y轴将四个点从上到下依次排列,则上面两个点数小,下面两个点数大;使所述面的四个点的点序号按照顺时针或逆时针依次增大的顺序进行排列:用point函数【point(0,"p", @ptnum)】取上面两点中任意一点的点序号为p;用distance函数【distance(p, @ptnum)】让点p分别搜索下面两点,将返回的距离值储存到点p上;用add函数将点p与下面两点分别相连,用setpoint函数【setpointattrib(p, "distance", "set")】将返回距离值大的端点的点序号设置为p+2,返回距离值小的端点的点序号设置为p+3;通过点p+2和点p+3的连线求出所述面的宽度y,通过点p和点p+3的连线求出所述面的高度h;将下面两个点p+2、p+3连线的法线沿其连线方向指向两点;将连线两端分别沿其法线向内收缩玻璃宽度的一半即(y/n)/2,得到线段d;先将线段d向上移动玻璃高度的一半即(h/m)/2,再利用copy函数以h/m为间隔距离向上复制m条线段d,即在所述面上得到m+1条线段d;基于自定义的纵切线数n,确定每条线段d上所对应的玻璃中心点数量为n+2-1;采用add函数保留所有线段d的所有点,即对应于所述面上每块玻璃的中心点;玻璃赋予模块,用以创建高度为h/m、宽度为y/n的单个玻璃模型,使其法线方向为y轴的正方向;利用copy函数将单个玻璃模型赋予到求出的每个中心点上;退出for循环,完成所有建筑物模型的所有玻璃的一键安装。
19.本实施例所涉及的一种计算机设备,其结构如图3所示,包括处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当所述计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述机器可读指令,以执行时执行如上述任意基于三维引擎一键安装四边体模型的方法的步骤。
20.实施例二本实施例提出一种基于三维引擎一键安装楼体玻璃的方法,其流程参考图1所示,具体过程如下:s1、导入所有建筑物模型到三维引擎中,保留建筑物模型所有点的空间位置信息;s2、利用for循环选出建筑物模型的任意一个面(如图6),获取用户输入的横切线数m和纵切线数n(本实施例中的m为6,n为13),系统将通过执行以下方法,得到所述面上每块玻璃的中心点:s21、将选中面的四个点p0、p1、p2、p3打入数组中,采用sort函数沿y轴对数组的四个点从上到下依次排列,则上面两个点数小,下面两个点数大,在所述面上可能出现的四种点序号排列如图7中的(a)、(b)、(c)、(d)所示;s22、通过以下方法使所述面四个点的点序号按照顺时针或逆时针依次增大的顺序进行排列:采用point函数【point(0, "p", 0)、point(0, "p", 2)、point(0,"p", 3)】获取上面一个点p0和下面两个点p2、p3的位置信息;再用distance函数【distance(p0, p2)、distance(p0, p3)】求出点p0和点p2之间连线a1、点p0和点p3之间连线b1的距离;通过比较连线a1和连线b1的大小判断点序号排列是否符合预期:若连线a1大于连线b1,如图8中的
(b)和(c),表明点序号排列为顺时针或逆时针增大,则保持点序号p2、p3位置不变;若连线a1小于连线b1,如图8中的(a)和(d),则利用setpoint函数【setpointattrib(0, "sort", 2, 3, "set")、setpointattrib(0,"sort", 3, 2, "set")】重新定义p2、p3的点序号,将p2改为p3,p3改为p2,从而调整至所述面四个点的点序号符合顺时针或逆时针依次增大的排列顺序;s23、通过点p0和点p1的连线求出所述面的宽度y,本实施例将所述面的宽度y设定为780,通过点p0和点p3的连线求出所述面的高度h,本实施例将所述面的高度h设定为;s24、选择出点p2和点p3的连线,使其法线沿其连线方向指向两点,将连线的两端分别沿其法线向内收缩玻璃宽度的一半即(y/n)/2=(780/13)/2=30,得到如图9所示的线段d;s25、先将线段d向上移动玻璃高度的一半即(h/m)/2=(840/6)/2=70,再利用copy函数以h/m=840/6=140为间隔距离向上复制m即6条线段d,最终将在所述面上得到m+1即7条线段d(如图10);s26、基于自定义的纵切线数n为13,确定所述线段d上所对应的玻璃中心点数量为n+2-1即13+2-1=14;s27、采用add函数保留所有线段d的所有点,其数量为98,即代表所述面上将要安装98块玻璃,每一个点对应于每一块玻璃的中心点(如图11)。
21.s3、创建高度为h/m即140、宽度为y/n即60的单个玻璃模型,使其法线方向为y轴的正方向;利用copy函数将单个玻璃模型赋予到求出的每个中心点上;退出for循环,得到了整体赋予完玻璃的所有大楼。
22.一种用于实施上述基于三维引擎一键安装楼体玻璃的方法的装置,其结构如图2所示,包括:模型导入模块,用以导入所有建筑物模型到三维引擎中,保留其所有点的空间位置信息;中心点获取模块,用以利用for循环选出所有物体模型中的任意一个面,并基于用户自定义的横切线数m和纵切线数n,通过执行以下方法得到所述面上每块玻璃的中心点:将选中面的四个点打入数组中,用sort函数沿y轴将四个点从上到下依次排列,则上面两个点数小,其排列为p0、p1,下面两个点数大,其排列为p2、p3;使所述面的四个点的点序号按照顺时针或逆时针依次增大的顺序进行排列:用point函数【point(0, "p", 0)、point(0, "p", 2)、point(0,"p", 3)】获取其中三个点p0、p2、p3的位置信息;再用distance函数【distance(p0, p2)、distance(p0, p3)】求出点p0和点p2之间连线a1、点p0和点p3之间连线b1的距离;通过比较连线a1和连线b1的大小判断点序号是否需要调整:若连线a1大于连线b1,则保持点序号p2、p3位置不变;若连线a1小于连线b1,则利用setpoint函数【setpointattrib(0, "sort", 2, 3, "set")、setpointattrib(0,"sort", 3, 2, "set")】重新定义p2、p3的点序号,将p2改为p3,p3改为p2;通过点p0和点p1的连线求出所述面的宽度y,通过点p0和点p3的连线求出所述面的高度h;将下面两点p2、p3连线的法线沿其连线方向指向两点,将连线两端分别沿其法线向内收缩玻璃宽度的一半即(y/n)/2,得到线段d;
先将线段d向上移动玻璃高度的一半即(h/m)/2,再利用copy函数以h/m为间隔距离向上复制m条线段d,即在所述面上得到m+1条线段d;基于自定义的纵切线数n,确定每条线段d上所对应的玻璃中心点数量为n+2-1;采用add函数保留所有线段d的所有点,即对应于所述面上每块玻璃的中心点;玻璃赋予模块,用以创建单个玻璃模型并将其赋予所求出的中心点上。
23.所述玻璃赋予模块,其功能进一步用于:创建高度为h/m、宽度为y/n的单个玻璃模型,使其法线方向为y轴的正方向;利用copy函数将单个玻璃模型赋予到求出的每个中心点上;退出for循环,完成所有建筑物模型的所有玻璃的一键安装。
24.本实施例涉及一种计算机设备,其结构如图3所示,包括处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当所述计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述机器可读指令,以执行时执行如上述任意基于三维引擎一键安装四边体模型的方法的步骤。
25.最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。

技术特征:
1.一种基于三维引擎一键安装四边体模型的方法,其特征在于,包括以下步骤:s1、导入所有物体模型到三维引擎中,保留其所有点的空间位置信息;s2、利用for循环选出所有物体模型中的任意一个面,系统将基于用户自定义的横切线数m和纵切线数n,通过执行以下方法,得到所述面上每个四边体的中心点:s21、将选中面的四个点打入数组中,用sort函数沿y轴将四个点从上到下依次排列,则上面两个点数小,下面两个点数大;s22、使所述面的四个点的点序号按照顺时针或逆时针依次增大的顺序进行排列,求出所述面的宽度y和高度h;s23、将下面两个点连线的法线沿其连线方向指向两点;将连线两端分别沿其法线向内收缩四边体宽度的一半即(y/n)/2,得到线段d;s24、将线段d向上移动四边体高度的一半即(h/m)/2,利用copy函数以h/m为间隔距离向上复制m条线段d,即在所述面上得到m+1条线段d;s25、基于自定义的纵切线数n,确定每条线段d上所对应的四边体中心点数量为n+2-1;s26、采用add函数保留所有线段d的所有点,即对应于所述面上每个四边体的中心点;s3、创建单个四边体模型并将其赋予所求出的中心点上。2.如权利要求1所述的一种基于三维引擎一键安装四边体模型的方法,其特征在于,所述s2中的s22,使所述面的四个点的点序号按照顺时针或逆时针依次增大的顺序进行排列,求出所述面的宽度y和高度h,具体做法为:用point函数【point(0,"p", @ptnum)】取上面两点中任意一点的点序号为p;用distance函数【distance(p, @ptnum)】让点p分别搜索下面两点,将返回的距离值储存到点p上;用add函数将点p与下面两点分别相连,用setpoint函数【setpointattrib(p, "distance", "set")】将返回距离值大的端点的点序号设置为p+2,返回距离值小的端点的点序号设置为p+3;通过点p+2和点p+3的连线求出所述面的宽度y,通过点p和点p+3的连线求出所述面的高度h。3.如权利要求1所述的一种基于三维引擎一键安装四边体模型的方法,其特征在于,所述s2中的s22,使所述面的四个点的点序号按照顺时针或逆时针依次增大的顺序进行排列,求出所述面的宽度y和高度h,具体做法为:用point函数【point(0, "p", 0)、point(0, "p", 2)、point(0, "p", 3)】获取其中三个点p0、p2、p3的位置信息;再用distance函数【distance(p0, p2)、distance(p0, p3)】求出点p0和点p2之间连线a1、点p0和点p3之间连线b1的距离;通过比较连线a1和连线b1的大小判断点序号排列是否符合预期:若连线a1大于连线b1,则保持点序号p2、p3位置不变;若连线a1小于连线b1,则利用setpoint函数【setpointattrib(0, "sort", 2, 3, "set")、setpointattrib(0, "sort", 3, 2, "set")】重新定义p2、p3的点序号,将p2改为p3,p3改为p2;通过点p0和点p1的连线求出所述面的宽度y,通过点p0和点p3的连线求出所述面的高度h。4.如权利要求1所述的一种基于三维引擎一键安装四边体模型的方法,其特征在于,所述s3具体包括:
s31、创建高度为h/m、宽度为y/n的单个四边体模型,使其法线方向为y轴的正方向;s32、利用copy函数将单个四边体模型赋予到s2求出的每个中心点上;s33、退出for循环,完成所有物体模型的所有四边体的一键安装。5.一种用以实施权利要求1-4任一项所述方法的基于三维引擎一键安装四边体模型的装置,其特征在于,包括:模型导入模块,用以导入所有物体模型到三维引擎中,保留其所有点的空间位置信息;中心点获取模块,用以利用for循环选出所有物体模型中的任意一个面,并基于用户自定义的横切线数m和纵切线数n,通过执行中心点获取方法得到所述面上每个四边体的中心点;四边体赋予模块,用以创建单个四边体模型并将其赋予所求出的中心点上。6.一种计算机设备,包括处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当所述计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述机器可读指令,以执行权利要求1-4任一项所述的基于三维引擎一键安装四边体模型的方法的步骤。

技术总结
本发明公开了一种基于三维引擎一键安装四边体模型的方法、装置及设备,属于三维可视化技术领域,所述的方法包括以下步骤:S1、导入所有物体模型到三维引擎中;S2、利用for循环选出所有物体模型中的任意一个面,系统将基于用户自定义的横切线数M和纵切线数N,通过执行中心点获取方法得到所述面上每个四边体的中心点;S3、创建单个四边体模型并将其赋予所求出的中心点上。本发明解决了目前行业中制作简模到精模的麻烦操作,省时省力,高效快速的实现了三维场景内四边体模型的快速安装建模。了三维场景内四边体模型的快速安装建模。了三维场景内四边体模型的快速安装建模。


技术研发人员:李腾 赵洋洋 鞠鹤立 董婷妍 尚武
受保护的技术使用者:山东捷瑞数字科技股份有限公司
技术研发日:2023.09.01
技术公布日:2023/10/15
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐