一种基于人工智能的三维体素建模方法及系统与流程

文档序号:18170379发布日期:2019-07-13 09:49阅读:551来源:国知局
一种基于人工智能的三维体素建模方法及系统与流程

本发明涉及机器视觉技术领域,尤其涉及一种基于人工智能的三维体素建模方法及系统。



背景技术:

现有的三维建模方法包括体素建模方法和非体素建模方法。非体素建模方法具有很高的专业性,对于普通用户来说,想要两次搭建出一样的模型都非常困难。如果要降低使用门槛,就必须做非常多的预设和限制,但是这样就降低了软件的可创造性。因此体素建模软件越来越多的出现在日常工作和生活中。

现有技术中的三维体素模型软件在操作时,因预设的模型多,且计算次数多,而且中间封装的层级多,降低设备的性能。在体素建模软件使用过程中,由于建模操作效率低,程序占用的内存大,gpu计算率高,使得在web环境下软件出现卡顿和程序崩溃,为使用带来不便。

因此,现有技术还有待于改进和发展。



技术实现要素:

鉴于上述现有技术的不足,本发明的目的在于提供一种基于人工智能的三维体素建模方法及系统,旨在解决现有技术中三维体素软件建模操作效率低的缺陷。

本发明的技术方案如下:

一种基于人工智能的三维体素建模方法,所述方法包括:

预先获取用户的建模指令,根据webgl配合多线程完成三维图像的计算和渲染,生成三维体素模型;

检测到用户的图形处理指令后,获取鼠标光标在所述三维体素模型上的点,记录该点所在平面的法向量信息;

根据法向量信息对三维体素模型进行处理,生成处理后的目标三维体素模型。

可选地,所述图形处理指令包括平移、拉伸、圆形的中心建造、方形的中心建造。

可选地,所述图形处理指令为平移时,所述根据法向量信息对三维体素模型进行处理,生成处理后的目标三维体素模型,包括:

获取法向量信息,其中法向量信息是一个包含三个法向量分量的一维数组;

提取法向量分量为0的轴,控制三维体素模型沿着法向量为0的轴进行移动,生成处理后的目标三维体素模型。

可选地,所述图形处理指令为拉伸时,所述根据法向量信息对三维体素模型进行处理,生成处理后的目标三维体素模型,包括:

获取法向量信息,其中法向量信息是一个包含三个法向量分量的一维数组;

提取法向量分量不为0的轴,控制三维体素模型沿着法向量不为0的轴进行延展,生成处理后的目标三维体素模型。

可选地,所述图形处理指令为圆形的中心建造,所述根据法向量信息对三维体素模型进行处理,生成处理后的目标三维体素模型,包括:

获取法向量信息,其中法向量信息是一个包含三个法向量分量的一维数组;

提取法向量信息为0的轴,控制圆形沿着法向量分量为0的轴移动,生成处理后的目标三维体素模型。

可选地,所述图形处理指令为正方形的中心建造,所述根据法向量信息对三维体素模型进行处理,生成处理后的目标三维体素模型,包括:

获取法向量信息,其中法向量信息是一个包含三个法向量分量的一维数组;

提取法向量信息为0的轴,控制正方形沿着法向量分量为0的轴移动,生成处理后的目标三维体素模型。

可选地,所述提取法向量信息为0的轴,控制圆形沿着法向量分量为0的轴移动,生成处理后的目标三维体素模型,包括:

检测对称模式是否开启,若开启,则提取法向量信息为0的轴,控制圆形沿着法向量分量为0的轴移动;

计算移动后的三维体素模型在对称模式下对应的三维体素模型并显示,生成处理后的目标三维体素模型。

可选地,所述对称模式为镜像对称模式。

本发明另一实施例还提供了一种基于人工智能的三维体素建模系统,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的基于人工智能的三维体素建模方法。

本发明的又一实施例还提供了一种非易失性计算机可读存储介质,其特征在于,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行上述的基于人工智能的三维体素建模方法。

有益效果:本发明公开了一种基于人工智能的三维体素建模方法及系统,本发明实施例中鼠标在三维体素模型中位置不仅指示当前位置,还负责记录目标面的法向量,从而为三维体素模型的平移、拉伸等处理提供了方便,进一步提高了三维体素模型的处理效率,同时建模方法简单,为少儿操作提供方便。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1为本发明一种基于人工智能的三维体素建模方法较佳实施例的流程图。

图2为本发明一种基于人工智能的三维体素建模系统的较佳实施例的硬件结构图。

具体实施方式

为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

请参阅图1,图1为本发明一种基于人工智能的三维体素建模方法较佳实施例的流程图。如图1所示,其包括步骤:

步骤s100、预先获取用户的建模指令,根据webgl配合多线程完成三维图像的计算和渲染,生成三维体素模型;

步骤s200、检测到用户的图形处理指令后,获取鼠标光标在所述三维体素模型上的点,记录该点所在平面的法向量信息;

步骤s300、根据法向量信息对三维体素模型进行处理,生成处理后的目标三维体素模型。

具体实施时,本发明实施例主要用于实现在浏览器中运行的快速方便的体素建模软件。具体技术为javascript配合webgl开发,可以脱离web服务器,作为静态页面程序使用,也就是说既可以通过网页访问web程序,又完全可以作为一个本地的应用程序使用,具有很好的跨平台性。建模的操作简单高效,对于非专业的普通用户的上手门槛很低。因此适用于少儿操作。而且支持导出其它建模软件通用的文件格式以及3d打印机所需的文件格式在一维数组用于模拟三维结构并记录三维结构的尺寸数据。其中webgl(全写webgraphicslibrary)是一种3d绘图协议。

预先对体素的数据结构进行设置,体素的数据结构为一维数组。一维数组用于模拟三维结构并记录三维结构的尺寸数据。具体地,在数据结构方面体素是使用一维数组模拟三维的结构,同时记录三维的尺寸数据。大致可以表示成:

data=[1,0,1,0,0,0,0,2,5,7,3…,9];shape=[5,5,5];因此对于<x,y,z>为<2,3,4>的体素来说,下标就是2+3*5+4*25=117;因为三维数组在javascript中并不能用最节省空间的数据类型构造,而且不同维度之间是通过地址一层一层的查找访问的,直接计算下标然后直接定位,计算速度快。数组中存储的值除了0以外,其余的都表示该位置有体素,并且体素的颜色由对应的值表示,这些值为色表的中颜色的编号,因此1、2、4、6这些数字代表什么颜色是由色表决定的。而色表是另外单独存储的数据,一组色表存储255个颜色的rgb值,用户可以随意更改这些值取得想要的颜色。

在用户进行一次编辑的过程中,从接受输入到渲染的过程:通过鼠标的位置计算编辑的区域,也就是从起点<x1,y1,z1>到终点<x2,y2,z2>的一个空间范围s;遍历空间s内的数据,修改相应位置的值;通过“三维”数据计算渲染所需的顶点数据;将顶点数据、通过查找色表获得颜色信息发送到gpu进行渲染。

可选地,本发明实施例中采用游程编码对表示三维体素模型的一维数据进行编码,并存储。

具体地,因为本程序是运行在web上,因此数据轻量、方便传输是必须要考虑的。因此在数据存储方面采用游程编码对表示模型的一维数组进行编码,以极大的压缩数据量,而现有的建模软件大多都直接纪录每个体素的数据,这种方式虽然直接简单,但是需要保存更多数据量。

可选地,步骤s100包括:主线程获取用户的鼠标位置,通过鼠标位置计算待编辑的区域,遍历区域内的数据,对相应位置的值进行修改;

子线程通过所述一维数组计算渲染所需的顶点数据,并将顶点数据返回至主线程;

主线程根据顶点数据查找色表获取颜色信息发送到图形处理器进行渲染,生成编辑后的三维体素模型。

具体地,预先将一维数组中表示颜色的数字与色表的颜色一一对应。

在实际渲染中并不是一个体素一个体素的渲染,而是将相邻且颜色一致的体素合并,这种方式极大的降低的性能的需求,比如一个大小为10x10x10的立方体如果把每个体素都渲染出来,需要1000*8个顶点,而在本程序中只需要8个顶点。

由于通过所述一维数组计算渲染所需的顶点数据的步骤,是需要大量cpu计算的一步,如果一次计算的时间过长,会导致整个程序处于不能响应的状态,为了尽量减少“卡顿”的情况,可以将通过所述一维数组计算渲染所需的顶点数据的步骤放到例外开辟的子线程中完成,这样主线程依然可以不受影响的响应用户输入。但是还需要考虑线程中数据来回传输的时间消耗,如果耗时过长,程序依然会给人延迟的感觉。为了在操作过程中减少这个时间消耗,可以在一次操作开始的时候同步一次住线程和子线程的数据,然后每次只传输数据变动的部分。

可选地,主线程获取用户的鼠标位置,通过鼠标位置计算待编辑的区域,遍历区域内的数据,对相应位置的值进行修改,包括:

主线程通过鼠标的位置计算当前的编辑区域,获取上一次的编辑区域,对比当前编辑区域和上一次的编辑区域的差值,对差值对应的范围进行修改。

具体实施时,主线程可以比对当前编辑区域和上一次的编辑区域,得到两次的差值,这样就可以将遍历的范围缩小到差值代表的范围,从而减少原本大量的遍历次数。

可选地,步骤s100还包括:

若检测到用户导入图片时,则对图片进行处理,并将二维的像素映射到三维的体素,生成三维体素模型。

具体实施时,检测到用户的任意图片导入,可生成三维体素模型,图片可以是一张或多张。如果是一张图片导入,生成立体模型的原理就是平面沿着z轴延伸,如果是两张图片,用户可根据需要指定正视图和侧视图,通过分析正、侧两个视角,结合起来生成模型,通过这种方式,可以任意组合不同的图片产生许多新奇的模型。两张图片的原理就是两张图分别沿x轴、z轴填充整个空间,再取交集即可。

其中,图形处理指令包括平移、拉伸、圆形的中心建造、方形的中心建造。

进一步地,图形处理指令为平移时,所述根据法向量信息对三维体素模型进行处理,生成处理后的目标三维体素模型,包括:

获取法向量信息,其中法向量信息是一个包含三个法向量分量的一维数组;

提取法向量分量为0的轴,控制三维体素模型沿着法向量为0的轴进行移动,生成处理后的目标三维体素模型。

具体实施时,如果是平移指令,如果待平移的三维体素模型平面的法向量为[0,1,0],则选中的物件只可能在x轴或z轴上移动,也就是说,只可能沿着法向量分量为0的轴移动。

进一步地,若图形处理指令为拉伸时,所述根据法向量信息对三维体素模型进行处理,生成处理后的目标三维体素模型,包括:

获取法向量信息,其中法向量信息是一个包含三个法向量分量的一维数组;

提取法向量分量不为0的轴,控制三维体素模型沿着法向量不为0的轴进行延展,生成处理后的目标三维体素模型。

具体实施时,对于拉伸,如果法向量为[0,1,0],则只能沿着y轴的正方向延展,规则就是只能沿着法向量分量不为0的方向延展。延展的操作需要借助额外的平面,使鼠标在辅助平面上滑动,计算在目标轴向上的距离。

进一步地,图形处理指令为圆形的中心建造,所述根据法向量信息对三维体素模型进行处理,生成处理后的目标三维体素模型,包括:

获取法向量信息,其中法向量信息是一个包含三个法向量分量的一维数组,

提取法向量信息为0的轴,控制圆形沿着法向量分量为0的轴移动,生成处理后的目标三维体素模型。

具体实施时,圆形建造的方向和平移的规则一样,只能沿着法向量分量为0的轴移动。在此不再赘述。

进一步地,图形处理指令为正方形的中心建造,所述根据法向量信息对三维体素模型进行处理,生成处理后的目标三维体素模型,包括:

获取法向量信息,其中法向量信息是一个包含三个法向量分量的一维数组;

提取法向量信息为0的轴,控制正方形沿着法向量分量为0的轴移动,生成处理后的目标三维体素模型。

具体实施时,方形建造的方向和平移的规则一样,只能沿着法向量分量为0的轴移动。在此不再赘述。

再进一步地实施例中,提取法向量信息为0的轴,控制圆形沿着法向量分量为0的轴移动,生成处理后的目标三维体素模型,包括:

检测对称模式是否开启,若开启,则提取法向量信息为0的轴,控制圆形沿着法向量分量为0的轴移动;

计算移动后的三维体素模型在对称模式下对应的三维体素模型并显示,生成处理后的目标三维体素模型。

具体实施时,对称模式包括但不限于镜像对称模式和轴对称模式。以镜像对称为例,如果x轴镜像对称时,[x,y,z]的对称点为[size-x,y,z],对称的效果是叠加组合的,也就是说同时开启x轴、y轴的对称和分两次开启建造的效果是不同的;

比如有基础点[x,y,z],如果开启x轴对称,得到[size-x,y,z],如果是开启y轴对称,得到的点为[x,size-y,z],但是如果同时开启,则在先计算x轴对称的基础上再计算了一次y轴对称。也就是[x,y,z]和[size-x,y,z]同时计算y轴对称,这样又得到了第四个点[size-x,size-y,z]。

进一步地,本发明的建模方法还提供以下功能:绘制、消除、着色、选区、魔棒、空间平移、颜色选取、区域替换。从数据表示的层次考虑,这些操作无非都是如何查找满足条件的数据并进行修改,譬如绘制,是将空间范围s内的数据值为0的都置为a(a代表用户当前选中的颜色在色表中的下标)。消除则是将空间s内的值都置为0,着色则是将空间范围s内的数据值非0的都置为a,选区则是将空间范围s内的数据值非0的都拷贝到选区空间中,其余的操作原理类似。

绘制、消除、着色、选区四个操作又有轴对称模式、镜像对称模式可以选择,两种模式支持同时使用。选区还另外支持多选、删除选区、取消选区。

魔棒、颜色选取、区域替换都是针对颜色所作的操作。其中魔棒提供面、体、全部三种选择,即:可以选择一个连续的面、连续的体或空间中所有目标颜色的体素(不需要相邻)。

本发明实施例的三维体素模型方法可在windows和macos平台下,chrome、firefox、edge、safari浏览器都能无差别的运行。通过该方法生成的模型可以生成obj格式,并能导入其他建模软件如blender,给更专业的用户也提供选择。除此之外还支持生成3d打印机接收的stl格式。

由以上方法实施例可知,本发明提供了一种基于人工智能的三维体素建模方法,具有如下技术好处:

从底层的渲染到顶层的数据封装都摆脱现有的框架,因为每一个过程都是用代码编写完成,对各个部分的实现方法都能做完整的分析。比如在底层渲染的部分可以考虑开启或关闭什么效果降低gpu的计算量,数据存储的时候采用多少的字节的格式可以减少内存清理的次数,以及什么时候采用多线程以最大发挥cpu的性能。

体素建模就是以一个单位立方体为基本单位的建模,因此用户的每次修改,比如绘制、消除、着色都可以用体素作为单位计算。简单来说,就是计算一次操作中修改的多少个单位立方体。建模的操作通过鼠标滑动完成,所以一次操作可以修改一个长方体空间内的体素,而现在已有的大多数体素类的建模软件只能一个体素一个体素的编辑。

支持用户导入图片建模,程序自动对图片的颜色进行处理,并将二维的像素映射到三维的体素,从而使用者非常快速的创造出一些独特的模型;

通过鼠标记录目标面的法向量,为三维体素模型的平移、拉伸提供了方便,进一步提高了三维体素模型的处理效率,而且建模方法简单,为少儿操作提供方便。

本发明另一实施例提供一种基于人工智能的三维体素建模系统,如图2所示,该基于人工智能的三维体素建模系统10包括:

一个或多个处理器110以及存储器120,图2中以一个处理器110为例进行介绍,处理器110和存储器120可以通过总线或者其他方式连接,图2中以通过总线连接为例。

处理器110用于完成基于人工智能的三维体素建模系统10的各种控制逻辑,其可以为通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、单片机、arm(acornriscmachine)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。还有,处理器110还可以是任何传统处理器、微处理器或状态机。处理器110也可以被实现为计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、一个或多个微处理器结合dsp核、或任何其它这种配置。

存储器120作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的基于人工智能的三维体素建模方法对应的程序指令。处理器110通过运行存储在存储器120中的非易失性软件程序、指令以及单元,从而执行基于人工智能的三维体素建模系统10的各种功能应用以及数据处理,即实现上述方法实施例中的基于人工智能的三维体素建模方法。

存储器120可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据基于人工智能的三维体素建模系统10使用所创建的数据等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器120可选包括相对于处理器110远程设置的存储器,这些远程存储器可以通过网络连接至基于人工智能的三维体素建模系统10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

一个或者多个单元存储在存储器120中,当被一个或者多个处理器110执行时,执行上述任意方法实施例中的基于人工智能的三维体素建模方法,例如,执行以上描述的图1中的方法步骤s100至步骤s300。

上述基于人工智能的三维体素建模系统10可执行本发明实施例所提供的基于人工智能的三维体素建模方法,具备执行方法相应的功能模块和有益效果。未在基于人工智能的三维体素建模系统10实施例中详尽描述的技术细节,可参见本发明实施例所提供的基于人工智能的三维体素建模方法。

本发明实施例提供了一种非易失性计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如,执行以上描述的图1中的方法步骤s100至步骤s300。

本发明的另一种实施例提供了一种计算机程序产品,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被处理器执行时,使所述处理器执行上述方法实施例的基于人工智能的三维体素建模方法。例如,执行以上描述的图1中的方法步骤s100至步骤s300。

以上所描述的系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际需要选择其中的部分或者全部模块来实现本实施例方案的目的。

通过以上的实施例的描述,本领域的技术人员可以清楚地了解到各实施例可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件实现。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存在于计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

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