一种基于三维引擎批量修改模型穿插的方法、装置及设备制造方法及图纸

技术编号:37445073 阅读:15 留言:0更新日期:2023-05-06 09:17
本发明专利技术公开了一种基于三维引擎批量修改模型穿插的方法、装置及设备,属于三维可视化技术领域,方法包括以下步骤:S1、导入所有物体模型到三维引擎中;S2、利用for循环,从所有物体模型中得到每一个物体模型,基于每一个物体模型的外轮廓,创建所述每一个物体模型的最大包围球体;S3、基于所述每一个物体模型的最大包围球体的中心点位置及半径,判断物体模型之间是否存在穿插;S4、移动存在穿插的物体模型;S5、利用for循环重复S2

【技术实现步骤摘要】
一种基于三维引擎批量修改模型穿插的方法、装置及设备


[0001]本专利技术涉及一种基于三维引擎批量修改模型穿插的方法、装置及设备,属于三维可视化


技术介绍

[0002]随着工业互联网的快速发展,三维模型在人类生产生活中占据着越来越重要的地位。无论在现代工业、农业还是制造服务业的生产经营活动中,都可以利用三维模型去还原真实场景,通过人们在三维场景中的视觉感观和切身体会,增加人们对现实场景的理解,从而促进经济社会发展。因此,三维模型的准确性和有效性是保证能够呈现场景真实性的前提。
[0003]当场景内模型数量较多且一次将所有模型导入时,三维场景中的两个或多个物体表面会产生重叠或相交,也即出现模型与模型之间的穿插问题,这种问题将会导致呈现在视觉效果中的三维模型堆叠重合、杂乱无章的穿插在一起。
[0004]为了避免这种情况,目前传统的解决方法是将三维模型中的每个模型单独选择出来进行逐一手动摆放,这种人工手动处理方法仅能应对模型数量较少的情况,当场景所需模型数量众多时,将会面临两方面的问题:1、效率低且人员投入时间精力巨大;2、易出现纰漏和失误。
[0005]鉴于以上,行业中亟需一种简易且高效的批量处理方法来解决模型穿插的问题。

技术实现思路

[0006]为了解决上述问题,本专利技术提出了一种基于三维引擎批量修改模型穿插的方法、装置及设备,该方法能够高效快速的对穿插模型实现一键批量修改。
[0007]本专利技术解决其技术问题采取的技术方案是:第一方面,本专利技术提供一种基于三维引擎批量修改模型穿插的方法,包括以下步骤:S1、导入所有物体模型到三维引擎中;S2、利用for循环,从所述所有物体模型中得到每一个物体模型,基于所述每一个物体模型的外轮廓,创建所述每一个物体模型的最大包围球体;S3、基于所述每一个物体模型的最大包围球体的中心点位置及半径,判断物体模型之间是否存在穿插;S4、移动存在穿插的物体模型;S5、利用for循环重复S2

S4的步骤,直至所有物体模型没有穿插。
[0008]进一步地,所述S1中,导入所有模型到三维引擎中,保留其所有点的空间位置信息。
[0009]进一步地,所述S2中,通过创建for循环对得到的每一个物体模型,执行以下操作:S21、使用点函数Point将场景中的物体模型转换成点,保留所述物体模型中所有
点的空间位置信息;S22、使用点距离函数PointDistance计算所述物体模型中的每个点与其他点之间的距离,并把搜索到的所有距离值存储到相应的点上;S23、用排序函数sort将每个点所存储的所有距离值从大到小依次排列,用最大值函数max保留最大值,对每个点保留的最大值进行比较,提取最大值相同的两个点,并以这两点连线为直径创建球体,即得所述物体模型的最大包围球体。
[0010]进一步地,所述S3的具体步骤包括:S31、把每一个物体模型的最大包围球体打包成一个点,得到每一个物体模型的中心点;S32、利用每一个物体模型的最大包围球体的直径,求出其半径;S33、使用临近点函数nearpoint计算中心点与中心点之间的距离,返回每个中心点与其最近中心点的距离并将其保存到每个中心点的属性中;S34、将两物体的半径和,与两物体中心点所存储的最小距离值进行比较,以识别两物体之间是否存在穿插:如果两物体中心点存储的最小距离值大于两物体的半径和,则证明两物体间无穿插,保留物体原本的空间位置;如果两物体中心点存储的最小距离值小于两物体的半径和,则证明两物体间有穿插,即通过执行所述S4对存在穿插的物体模型进行移动。
[0011]进一步地,所述S4中,移动方法如下:将两个物体模型的中心点进行连接,其连接方向为当前物体的中心点指向搜索物体的中心点,并以此方向作为穿插物体的移动方向;以两个物体模型的半径和减去两个物体模型中心点的最短距离作为移动距离,对搜索到的物体模型进行移动。
[0012]第二方面,本专利技术还提供了一种基于三维引擎批量修改模型穿插的装置,包括:模型导入模块,用以将所有物体模型导入到三维引擎中,保留模型所有点的空间位置信息;球体创建模块,用以利用for循环,从所述所有物体模型中得到每一个物体模型,基于所述每一个物体模型的外轮廓,创建所述每一个物体模型的最大包围球体;循环判断模块,用以基于所述每一个物体模型的最大包围球体的中心点位置及半径,判断物体模型之间是否存在穿插;移动模块,用以移动存在穿插的物体模型。
[0013]第三方面,本专利技术提供一种计算机设备,包括处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当所述计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述机器可读指令,以执行如上所述的基于三维引擎批量修改模型穿插的方法步骤。
[0014]本专利技术的有益效果如下:本专利技术的一种基于三维引擎批量修改模型穿插的方法、装置及设备,通过三维引擎空间中心点的位置信息和两点的法线去判断是否存在模型穿插,将逻辑思维转化成具体算法进行应用,能够针对场景中所有穿插的三维模型实现一键分离操作,分离速度快,方法完善且准确无误,解决了现有三维模型因穿插需要手动一个个进行分离的麻烦,节省了大量的人力物力,高效便捷,可靠准确。
附图说明
[0015]图1是实施例一的基于三维引擎批量修改模型穿插的方法的流程图;图2是实施例二的基于三维引擎批量修改模型穿插的装置的结构示意图;图3是实施例三的计算机设备的结构示意图。
具体实施方式
[0016]下面结合附图与实施例对本专利技术做进一步说明:为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本专利技术进行详细阐述。下文的公开提供了许多不同的实施例用来实现本专利技术的不同结构。为了简化本专利技术的公开,下文中对特定例子的部件和设置进行描述。此外,本专利技术可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本专利技术省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本专利技术。
[0017]实施例一本实施例提出一种基于三维引擎批量修改模型穿插的方法,其流程参考图1所示,具体过程如下:S1、导入所有物体模型到三维引擎中,保留其所有点的空间位置信息。
[0018]S2、利用for循环,从所述所有物体模型中分离得到每一个物体模型,并通过以下方法,创建出每一个物体模型的最大包围球体:S21、使用点函数Point将场景中的物体模型转换成点,保留所述物体模型中所有点的空间位置信息;S22、使用点距离函数PointDistance计算所述物体模型中的每个点与其他点之间的距离,并把搜索到的所有距离值存储到相应的点上;S23、用排序函数sort将每个点所存储的所有距离值从大到小依次排列,用最大值函数max保留其中的最大值,对每个点所保留的最大值进行比较,提取最大值相同的两个点,连接这两个点并以其作为直径创建球体,即得当前物体模本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于三维引擎批量修改模型穿插的方法,其特征在于,包括以下步骤:S1、导入所有物体模型到三维引擎中;S2、利用for循环,从所述所有物体模型中得到每一个物体模型,基于所述每一个物体模型的外轮廓,创建所述每一个物体模型的最大包围球体;S3、基于所述每一个物体模型的最大包围球体的中心点位置及半径,判断物体模型之间是否存在穿插;S4、移动存在穿插的物体模型;S5、利用for循环重复S2

S4的步骤,直至所有物体模型没有穿插。2.如权利要求1所述的一种基于三维引擎批量修改模型穿插的方法,其特征在于,所述S1中,导入所有模型到三维引擎中,保留其所有点的空间位置信息。3.如权利要求1所述的一种基于三维引擎批量修改模型穿插的方法,其特征在于,所述S2中,通过创建for循环对得到的每一个物体模型,执行以下操作:S21、使用点函数Point将场景中的物体模型转换成点,保留所述物体模型中所有点的空间位置信息;S22、使用点距离函数Point Distance计算所述物体模型中的每个点与其他点之间的距离,并把搜索到的所有距离值存储到相应的点上;S23、用排序函数sort将每个点所存储的所有距离值从大到小依次排列,用最大值函数max保留最大值,对每个点保留的最大值进行比较,提取最大值相同的两个点,并以这两点连线为直径创建球体,即得所述物体模型的最大包围球体。4.如权利要求1所述的一种基于三维引擎批量修改模型穿插的方法,其特征在于,所述S3的具体步骤包括:S31、把每一个物体模型的最大包围球体打包成一个点,得到每一个物体模型的中心点;S32、利用每一个物体模型的最大包围球体的直径,求出其半径;S33、使用临近点函数nearpoint计算中心...

【专利技术属性】
技术研发人员:王涛赵洋洋尉鲁闽谢锋尚武赵晓彤
申请(专利权)人:山东捷瑞信息技术产业研究院有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1