CN117036606A - 一种三维模型生成方法、装置、电子设备及存储介质 - Google Patents
一种三维模型生成方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117036606A CN117036606A CN202310984843.9A CN202310984843A CN117036606A CN 117036606 A CN117036606 A CN 117036606A CN 202310984843 A CN202310984843 A CN 202310984843A CN 117036606 A CN117036606 A CN 117036606A
- Authority
- CN
- China
- Prior art keywords
- target
- dimensional
- dimensional model
- data
- generated
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 105
- 238000003860 storage Methods 0.000 title claims abstract description 13
- 238000009877 rendering Methods 0.000 claims abstract description 92
- 238000012545 processing Methods 0.000 claims abstract description 84
- 230000006870 function Effects 0.000 claims description 85
- 238000004891 communication Methods 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 abstract description 17
- 230000004044 response Effects 0.000 abstract description 2
- 230000000875 corresponding effect Effects 0.000 description 49
- 238000005538 encapsulation Methods 0.000 description 16
- 238000011960 computer-aided design Methods 0.000 description 10
- 238000006243 chemical reaction Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 238000004806 packaging method and process Methods 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 230000002452 interceptive effect Effects 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 5
- 239000007787 solid Substances 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000013329 compounding Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明实施例提供了一种三维模型生成方法、装置、电子设备及存储介质,涉及三维模型技术领域,应用于三维引擎,所述三维引擎中设置有目标几何内核;该方法包括:显示包含有各个三维模型的三维虚拟场景;响应于接收到针对三维虚拟场景中的至少两个三维模型的布尔操作指令,调用目标几何内核,以使目标几何内核对至少两个三维模型的初始拓扑数据进行与布尔操作指令相匹配的运算处理,得到目标拓扑数据,并目标拓扑数据进行三角化处理,得到处理后的三角网格数据;根据处理后的三角网格数据,渲染生成布尔操作后的目标三维模型。本方案可以使得三维引擎对至少两个三维模型进行布尔操作,通过计算并组合生成新的三维模型。
Description
技术领域
本发明涉及三维模型技术领域,特别是涉及一种三维模型生成方法、装置、电子设备及存储介质。
背景技术
在工业CAD(Computer Aided Design,计算机辅助设计)领域,通常需对两个三维模型进行布尔操作,以生成满足需求的、新的三维模型,例如:对立方体模型和球模型进行布尔操作,生成一个立方体模型和球模型组合后的三维模型。其中,布尔操作是对几何图元进行组合计算,布尔操作可以包括:两个模型体的差集(Difference)、交集(Intersection)和/或并集(Union)等等。
相关技术中,通常在三维软件中手动生成包含待生成三维模型的模型数据的模型文件,并基于该模型文件,在三维引擎中渲染生成三维模型。此时,该模型文件中仅仅包括三维模型的三角网格数据,而在对两个三维模型进行布尔操作并生成新的三维模型时,通常需对这两个三维模型的拓扑数据进行计算,得到新生成的三维模型的拓扑数据。拓扑数据即三维模型的结构化数据,三角网格数据为拓扑数据三角化后的数据。
可见,相关技术中,通过三维引擎生成三维模型后,由于三维模型的模型文件中仅仅包含有三角网格数据,这样导致三维引擎无法通过计算并组合生成新的三维模型。
发明内容
本发明实施例的目的在于提供一种三维模型生成方法、装置、电子设备及存储介质,以使得三维引擎对至少两个三维模型进行布尔操作,通过计算并组合生成新的三维模型。
具体技术方案如下:
第一方面,本发明实施例提供了一种三维模型生成方法,应用于三维引擎,所述三维引擎中设置有目标几何内核;所述方法包括:
显示包含有各个三维模型的三维虚拟场景;其中,每一三维模型通过所述目标几何内核所生成,且每一三维模型的描述数据包含有所述目标几何内核在生成该三维模型时所产生的初始拓扑数据;
响应于接收到针对所述三维虚拟场景中的至少两个三维模型的布尔操作指令,调用所述目标几何内核,以使所述目标几何内核对所述至少两个三维模型的初始拓扑数据进行与所述布尔操作指令相匹配的运算处理,得到目标拓扑数据,并对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据;
根据所述处理后的三角网格数据,渲染生成布尔操作后的目标三维模型。
可选地,所述调用所述目标几何内核,以使所述目标几何内核对所述至少两个三维模型的初始拓扑数据进行与所述布尔操作指令相匹配的运算处理,得到目标拓扑数据,并对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据,包括:
调用所述目标几何内核,以使所述目标几何内核通过调用布尔操作接口,对所述至少两个三维模型的初始拓扑数据进行与所述布尔操作指令相匹配的运算处理,得到目标拓扑数据,并通过调用三角化函数,对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据。
可选地,所述目标几何内核对所述至少两个三维模型的初始拓扑数据进行与所述布尔操作指令相匹配的运算处理,得到目标拓扑数据,包括:
所述目标几何内核基于所述布尔操作指令,计算所述至少两个三维模型的初始拓扑数据之间的几何公差,得到目标拓扑数据。
可选地,所述目标几何内核通过调用三角化函数,对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据之前,所述方法还包括:
获得针对目标三维模型所配置的精度参数的目标参数值;其中,所述精度参数为表征三角化精度的参数,不同的参数值表征不同的三角化精度;
所述目标几何内核通过调用三角化函数,对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据,包括:
所述目标几何内核通过调用三角化函数,以使所述三角化函数基于所述目标参数值,对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据。
可选地,所述根据所述处理后的三角网格数据,渲染生成布尔操作后的目标三维模型,包括:
构建与所述处理后的三角网格数据所表征结构相匹配的待渲染图元,将所述待渲染图元传递给三维模型的渲染管线,以使所述渲染管线对所述待渲染图元进行渲染,得到布尔操作后的目标三维模型。
可选地,所述三维虚拟场景中的每一三维模型的描述数据还包含有初始拓扑数据三角化后的初始三角网格数据,所述方法还包括:
根据所述目标拓扑数据,对所述至少两个三维模型的初始拓扑数据进行更新;
根据所述处理后的三角网格数据,对所述至少两个三维模型的初始三角网格数据进行更新。
可选地,所述三维虚拟场景的中的任一三维模型的生成方式,包括:
确定待生成三维模型所属的目标几何类型;
获得针对所述待生成三维模型所设定的、与所述目标几何类型相对应的目标模型参数的参数值;其中,所述与所述目标几何类型相对应的目标模型参数的参数值为:在生成所述目标几何类型的所述待生成三维模型时所需利用的模型几何参数;
调用所述目标几何内核,以使所述目标几何内核根据所述目标模型参数的参数值,生成所述待生成三维模型对应的初始拓扑数据,并对所述待生成三维模型对应的初始拓扑数据进行三角化处理,得到所述待生成三维模型的初始三角网格数据;
根据所述待生成三维模型的初始三角网格数据,渲染生成所述待生成三维模型。
可选地,所述调用所述目标几何内核,以使所述目标几何内核根据所述目标模型参数的参数值,生成所述待生成三维模型对应的初始拓扑数据,并对所述待生成三维模型对应的初始拓扑数据进行三角化处理,得到所述待生成三维模型的初始三角网格数据,包括:
调用目标几何内核,以使所述目标几何内核通过调用拓扑生成函数,根据所述目标模型参数的参数值,生成所述待生成三维模型对应的初始拓扑数据,并通过调用三角化函数,对所述待生成三维模型对应的初始拓扑数据进行三角化处理,得到所述待生成三维模型的初始三角网格数据。
第二方面,本发明实施例提供了一种三维模型生成装置,应用于三维引擎,所述三维引擎中设置有目标几何内核;所述装置包括:
显示模块,用于显示包含有各个三维模型的三维虚拟场景;其中,每一三维模型通过所述目标几何内核所生成,且每一三维模型的描述数据包含有所述目标几何内核在生成该三维模型时所产生的初始拓扑数据;
调用模块,响应于接收到针对所述三维虚拟场景中的至少两个三维模型的布尔操作指令,调用所述目标几何内核,以使所述目标几何内核对所述至少两个三维模型的初始拓扑数据进行与所述布尔操作指令相匹配的运算处理,得到目标拓扑数据,并对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据;
渲染模块,用于根据所述处理后的三角网格数据,渲染生成布尔操作后的目标三维模型。
可选地,所述调用模块,具体用于:
调用所述目标几何内核,以使所述目标几何内核通过调用布尔操作接口,对所述至少两个三维模型的初始拓扑数据进行与所述布尔操作指令相匹配的运算处理,得到目标拓扑数据,并通过调用三角化函数,对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据。
可选地,所述目标几何内核对所述至少两个三维模型的初始拓扑数据进行与所述布尔操作指令相匹配的运算处理,得到目标拓扑数据,包括:
所述目标几何内核基于所述布尔操作指令,计算所述至少两个三维模型的初始拓扑数据之间的几何公差,得到目标拓扑数据。
可选地,所述装置还包括获取模块,用于:
获得针对目标三维模型所配置的精度参数的目标参数值;其中,所述精度参数为表征三角化精度的参数,不同的参数值表征不同的三角化精度;
所述目标几何内核通过调用三角化函数,对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据,包括:
所述目标几何内核通过调用三角化函数,以使所述三角化函数基于所述目标参数值,对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据。
可选地,所述渲染模块,具体用于:
构建与所述处理后的三角网格数据所表征结构相匹配的待渲染图元,将所述待渲染图元传递给三维模型的渲染管线,以使所述渲染管线对所述待渲染图元进行渲染,得到布尔操作后的目标三维模型。
可选地,所述三维虚拟场景中的每一三维模型的描述数据还包含有初始拓扑数据三角化后的初始三角网格数据,所述装置还包括更新模块,用于:
根据所述目标拓扑数据,对所述至少两个三维模型的初始拓扑数据进行更新;
根据所述处理后的三角网格数据,对所述至少两个三维模型的初始三角网格数据进行更新。
可选地,所述三维虚拟场景的中的任一三维模型的生成方式,包括:
确定待生成三维模型所属的目标几何类型;
获得针对所述待生成三维模型所设定的、与所述目标几何类型相对应的目标模型参数的参数值;其中,所述与所述目标几何类型相对应的目标模型参数的参数值为:在生成所述目标几何类型的所述待生成三维模型时所需利用的模型几何参数;
调用所述目标几何内核,以使所述目标几何内核根据所述目标模型参数的参数值,生成所述待生成三维模型对应的初始拓扑数据,并对所述待生成三维模型对应的初始拓扑数据进行三角化处理,得到所述待生成三维模型的初始三角网格数据;
根据所述待生成三维模型的初始三角网格数据,渲染生成所述待生成三维模型。
可选地,所述调用所述目标几何内核,以使所述目标几何内核根据所述目标模型参数的参数值,生成所述待生成三维模型对应的初始拓扑数据,并对所述待生成三维模型对应的初始拓扑数据进行三角化处理,得到所述待生成三维模型的初始三角网格数据,包括:
调用目标几何内核,以使所述目标几何内核通过调用拓扑生成函数,根据所述目标模型参数的参数值,生成所述待生成三维模型对应的初始拓扑数据,并通过调用三角化函数,对所述待生成三维模型对应的初始拓扑数据进行三角化处理,得到所述待生成三维模型的初始三角网格数据。
第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现任一所述的三维模型生成方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现任一所述的三维模型生成方法。
本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的三维模型生成方法。
本发明实施例有益效果:
本发明实施例提供的三维模型生成方法,应用于三维引擎,三维引擎中设置有目标几何内核,本发明实施例中,可以显示包含有各个三维模型的三维虚拟场景,每一三维模型通过目标几何内核所生成,且每一三维模型的描述数据包含有目标几何内核在生成该三维模型时所产生的初始拓扑数据,也就是,目标几何内核可以生成三维模型,且所生成的三维模型的描述数据中包含有初始拓扑数据;此时,本发明可以响应于接收到针对三维虚拟场景中的至少两个三维模型的布尔操作指令,调用目标几何内核,对至少两个三维模型的初始拓扑数据进行与布尔操作指令相匹配的运算处理,得到目标拓扑数据,即该至少两个三维模型经布尔操作后的拓扑数据,还可以对目标拓扑数据进行三角化处理,得到处理后的三角网格数据,并渲染生成布尔操作后的目标三维模型。本发明实施例的三维引擎中设置有目标几何内核,目标几何内核所生成的三维模型的描述数据中包含有该三维模型的初始拓扑数据,通过调用目标几何内核对至少两个三维模型的初始拓扑数据进行与布尔操作指令相匹配的运算处理,可以得到布尔操作后的拓扑数据,即目标拓扑数据,后续可以基于该目标拓扑数据渲染生成布尔操作后的目标三维模型。可见,通过本方案可以使得三维引擎对至少两个三维模型进行布尔操作,通过计算并组合生成新的三维模型。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
图1为本发明实施例所提供的一种三维模型生成方法的流程示意图;
图2为本发明实施例所提供的一种三维模型生成方法的另一流程示意图;
图3为本发明实施例所提供的一种三维模型生成方法的又一流程示意图;
图4为本发明实施例所提供的一种三维模型生成方法的数据结构示意图;
图5为本发明实施例所提供的一种三维引擎的示意图;
图6为本发明实施例所提供的一种三维引擎的引擎editor层和几何内核封装层的具体结构示意图;
图7为本发明实施例所提供的一种三维模型生成方法的原理图;
图8为本发明实施例所提供的一种三维模型生成方法的效果图;
图9为本发明实施例所提供的一种三维模型生成装置的结构示意图;
图10为本发明实施例所提供的电子设备的框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本发明保护的范围。
为了方便理解,下面首先对本发明所涉及的专业术语进行介绍。
几何内核:几何内核是CAD(计算机辅助设计)/CAM(计算机辅助制造)/CAE(计算机辅助工程)等软件使用的三维实体建模组件,用于在计算机上以3D形式表示和精确建模物理对象。
OpenCascade:开源几何内核,简称OCC,为3D表面和实体建模、CAD数据交换和可视化提供服务的软件开发平台。OCC的大多数功能都以C++库的形式提供,适合用于处理3D建模(CAD)、制造/测量(CAM)或数值模拟(CAE)的软件开发。
离散化:离散化指的是把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。对于三维模型而言,离散化可以理解为是取样的过程,即对于数学表达的模型在上面取样来达到描述原模型的流程。例如:对于一根样条曲线或一个3D曲面,实际上存在无限的点,离散化的过程就是量化出有限的点来表示这根曲线或曲面。
BREP:Boundary representation,模型边界表示,是保存如何根据模型的几何形状尤其是欧拉拓扑边界构建模型所需信息的方法。它的基本思想是为曲面提供精确的数学方程以3D形式勾勒出外部轮廓,它的底层数据结构是通过将其划分为几何和拓扑来实现整个形状表示。拓扑通常表示为顶点、边线、半边、face loop(面部线圈)、表面、shell(壳)、体以及基本的几何表示。几何表示有点、线、面(如平面、球面、锥面、环面)、实体等等。模型边界表示常用于CAD(计算机辅助设计)领域。
模型坐标空间:Model Coordinate Space,是与特定对象关联的坐标空间。每个模型对象都有自己独立的模型空间,当一个模型对象移动或改变方向时,与该模型关联的模型坐标空间被随之携带,因此它也会移动或改变方向。
世界坐标空间:World Coordinate Space,是一个全局的参考系,可以用世界坐标空间来表达其它坐标空间的位置,但是不能用更大的外部坐标空间来表示世界坐标空间。例如,“向左转”是一个用对象空间表达的概念,而“向东走”则是在世界空间中表达的概念。
在当前三维引擎中,通常将三角网格数据作为模型渲染数据,进而渲染生成三维模型,而通过三维模型的三角网格数据无法得到三维模型的拓扑数据,仅仅通过三维模型的三角网格数据无法实现三维模型的布尔操作,如:差、并、交等计算。
但是在工业CAD领域,往往需要通过对较为简单的模型进行布尔操作从而构建出复杂的三维模型,因此,当前的三维引擎无法支持完成工业领域的复杂建模操作,无法通过计算并组合生成新的三维模型。
基于此,本发明实施例提供了一种三维模型生成方法、装置、电子设备及存储介质,使得三维引擎对至少两个三维模型进行布尔操作,通过计算并组合生成新的三维模型。
下面对本发明所提供的一种三维模型生成方法进行介绍。
其中,本发明实施例所提供的一种三维模型生成方法可以应用于三维引擎,三维引擎可以作为一种3D软件,在实际应用中,三维引擎可以设置于电子设备,该电子设备可以为终端设备或服务器,示例性的,终端设备可以为手机、电脑等等,本发明并不对电子设备的具体形态进行限定。本发明所提供的一种三维模型生成方法可以应用于任一具有三维模型生成需求的场景,例如:需要对两个或多个三维模型进行布尔操作,以生成新的三维模型的场景等等。
其中,本发明所涉及的三维模型可以为三维几何模型,本发明所提供的三维模型生成方法可以生成一种或多种形态的三维几何模型,本发明所生成的三维几何模型相较于布尔操作前的三维几何模型的复杂程度可以增加或降低,例如:本发明所生成的三维几何模型可以为一立方体模型和一球模型复合后的复杂模型,或者,本发明所生成的三维几何模型可以为一复杂模型与一球模型求差后的简单模型,例如:立方体模型。
另外,本发明所提供的三维模型生成方法,可以对至少两个三维模型进行布尔操作,若待生成的目标三维模型较为简单,则可以将待进行布尔操作的多个三维模型整体进行布尔操作,得到该目标三维模型;若待生成的目标三维模型较为复杂,则可以将待进行布尔操作的多个三维模型,两两进行布尔操作,进而生成该目标三维模型,本发明对此不做限定。另外,待进行布尔操作的三维模型可以为简单或复杂的三维模型,例如:立方体模型,或立方体模型与球模型复合后的三维模型等等,本发明对此不做限定。
本发明实施例所提供的一种三维模型生成方法,应用于三维引擎,所述三维引擎中设置有目标几何内核;所述方法包括:
显示包含有各个三维模型的三维虚拟场景;其中,每一三维模型通过所述目标几何内核所生成,且每一三维模型的描述数据包含有所述目标几何内核在生成该三维模型时所产生的初始拓扑数据;
响应于接收到针对所述三维虚拟场景中的至少两个三维模型的布尔操作指令,调用所述目标几何内核,以使所述目标几何内核对所述至少两个三维模型的初始拓扑数据进行与所述布尔操作指令相匹配的运算处理,得到目标拓扑数据,并对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据;
根据所述处理后的三角网格数据,渲染生成布尔操作后的目标三维模型。
本发明实施例提供的三维模型生成方法,应用于三维引擎,三维引擎中设置有目标几何内核,本发明实施例中,可以显示包含有各个三维模型的三维虚拟场景,每一三维模型通过目标几何内核所生成,且每一三维模型的描述数据包含有目标几何内核在生成该三维模型时所产生的初始拓扑数据,也就是,目标几何内核可以生成三维模型,且所生成的三维模型的描述数据中包含有初始拓扑数据;此时,本发明可以响应于接收到针对三维虚拟场景中的至少两个三维模型的布尔操作指令,调用目标几何内核,对至少两个三维模型的初始拓扑数据进行与布尔操作指令相匹配的运算处理,得到目标拓扑数据,即该至少两个三维模型经布尔操作后的拓扑数据,还可以对目标拓扑数据进行三角化处理,得到处理后的三角网格数据,并渲染生成布尔操作后的目标三维模型。本发明实施例的三维引擎中设置有目标几何内核,目标几何内核所生成的三维模型的描述数据中包含有该三维模型的初始拓扑数据,通过调用目标几何内核对至少两个三维模型的初始拓扑数据进行与布尔操作指令相匹配的运算处理,可以得到布尔操作后的拓扑数据,即目标拓扑数据,后续可以基于该目标拓扑数据渲染生成布尔操作后的目标三维模型。可见,通过本方案可以使得三维引擎对至少两个三维模型进行布尔操作,通过计算并组合生成新的三维模型。
下面结合附图,对本发明实施例所提供的一种三维模型生成方法进行示例性介绍。
如图1所述,本发明实施例所提供的一种三维模型生成方法,应用于三维引擎,所述三维引擎中设置有目标几何内核;该方法可以包括如下步骤:
S101:显示包含有各个三维模型的三维虚拟场景;
其中,每一三维模型通过所述目标几何内核所生成,且每一三维模型的描述数据包含有所述目标几何内核在生成该三维模型时所产生的初始拓扑数据;
本发明实施例提供的三维模型生成方法可以应用于三维引擎,该三维引擎即一3D软件,首先可以显示包含有各个三维模型的三维虚拟场景,后续可以基于该三维虚拟场景,针对各个三维模型发出布尔操作,以使得三维引擎可以通过计算并组合生成新的三维模型。
其中,三维引擎中设置的目标几何内核可以生成三维虚拟场景中所显示的三维模型,且所生成的任一三维模型的描述数据具有目标几何内核在生成该三维模型时所产生的初始拓扑数据,针对任一三维模型而言,可以基于其初始拓扑数据,实现对该三维模型的布尔操作。
另外,三维虚拟场景中还可以包含有通过其他方式导入的三维模型,所导入的三维模型的描述数据不包含其拓扑数据,无法通过本发明提供的方案进行布尔操作。本发明实施例中三维虚拟场景所包含的各个三维模型,可以理解为通过目标几何内核所生成的三维模型,且每一三维模型的描述数据包含有目标几何内核在生成该三维模型时所产生的初始拓扑数据,本发明并不考虑通过其他方式导入的三维模型。
目标几何内核所生成的三维模型可以为任一种三维模型,本发明对此不做限定,例如:立方体模型、球模型、圆柱模型等等,当然,还可以为复合模型,例如:立方体模型和球模型组合得到的模型,该复合模型可以理解为立方体模型和球模型经后续的布尔操作所得到的目标三维模型,该目标三维模型还可以与其他模型进行布尔操作,即与其他模型继续组合,生成新的三维模型。
需要说明的是,目标几何内核在生成任一三维模型时,该三维模型的描述数据包含有其对应的初始拓扑数据,本发明实施例可以基于三维模型的初始拓扑数据,对三维模型进行布尔操作,使得三维引擎可以通过计算并组合生成新的三维模型;其中,目标几何内核可以为封装有三维模型生成功能以及三维模型布尔操作功能的任一几何内核。示例性的,目标几何内核可以为基于多个用于生成三维模型的功能函数以及对三维模型进行布尔操作的接口进行封装所得到的几何内核;示例性的,该目标几何内核可以为利用OCC几何内核中的功能函数以及对三维模型进行布尔操作的接口进行封装所得到的几何内核,当然也可以利用其他几何内核的功能函数和对三维模型进行布尔操作的接口进行封装,从而得到目标几何内核,在此不做限定。
S102:响应于接收到针对所述三维虚拟场景中的至少两个三维模型的布尔操作指令,调用所述目标几何内核,以使所述目标几何内核对所述至少两个三维模型的初始拓扑数据进行与所述布尔操作指令相匹配的运算处理,得到目标拓扑数据,并对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据;
显示三维虚拟场景后,三维虚拟场景中包含有各个三维模型,用户可以发出针对三维虚拟场景中的至少两个三维模型的布尔操作指令,即用户选中至少两个三维模型,并对选中的三维模型进行组合,以生成新的三维模型。此时,本发明可以响应于接收到该布尔操作指令,调用设置的目标几何内核,对至少两个三维模型的初始拓扑数据进行与该布尔操作指令相匹配的运算处理,得到目标拓扑数据,并对目标拓扑数据进行三角化处理,得到处理后的三角网格数据,后续可以基于该处理后的三角网格数据,渲染生成布尔操作后所组合的新的三维模型。
其中,布尔操作指令可以为对该至少两个三维模型的差、并和/或交等操作,对至少两个三维模型的初始拓扑数据进行与该布尔操作指令相匹配的运算处理,可以得到目标拓扑数据,即对该至少两个三维模型进行布尔操作后的拓扑数据。并且,三角化还可以称为离散化,目标三维模型的目标拓扑数据三角化生成处理后的三角网格数据,即对目标三维模型在数学意义上的表达进行离散化,以三角网格的形式表征目标三维模型的几何结构,可以渲染处理后的三角网格数据从而生成目标三维模型。
示例性的,所述调用所述目标几何内核,以使所述目标几何内核对所述至少两个三维模型的初始拓扑数据进行与所述布尔操作指令相匹配的运算处理,得到目标拓扑数据,并对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据,包括:
调用所述目标几何内核,以使所述目标几何内核通过调用布尔操作接口,对所述至少两个三维模型的初始拓扑数据进行与所述布尔操作指令相匹配的运算处理,得到目标拓扑数据,并通过调用三角化函数,对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据。
本发明实施例所提供的目标几何内核,可以生成包含有初始拓扑数据的三维模型,并且可以对具有初始拓扑数据的三维模型进行布尔操作。具体而言,目标几何内核中可以封装有布尔操作接口,可以通过调用布尔操作接口的方式,对至少两个三维模型的初始拓扑数据进行与布尔操作指令相匹配的运算处理,得到目标拓扑数据;目标几何内核中还可以封装有三角化函数,可以通过调用三角化函数的方式,对目标拓扑数据进行三角化处理,得到处理后的三角网格数据,后续可以基于该处理后的三角网格数据,渲染生成布尔操作后所组合的新的三维模型。当然,为了实现三维模型的生成以及三维模型的布尔操作,目标几何内核还可以封装有其他功能函数,本发明对此不做限定。
另外,所述目标几何内核对所述至少两个三维模型的初始拓扑数据进行与所述布尔操作指令相匹配的运算处理,得到目标拓扑数据,包括:
所述目标几何内核基于所述布尔操作指令,计算所述至少两个三维模型的初始拓扑数据之间的几何公差,得到目标拓扑数据。
目标几何内核在生成目标拓扑数据时,可以通过计算至少两个三维模型的初始拓扑之间的几何公差来判断至少两个三维模型之间是否发生干扰,从而达到布尔操作的效果;也就是,目标几何内核可以基于布尔操作指令,计算至少两个三维模型的初始拓扑数据之间的几何公差,可以准确得到目标拓扑数据,后续对目标拓扑数据进行三角化之后,可以渲染生成布尔操作后的所组合的新的三维模型,即目标三维模型。
另外,本发明所提供的目标几何内核,还支持按照三角化的精度需求对目标拓扑数据进行三角化处理,所述目标几何内核通过调用三角化函数,对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据之前,所述方法还包括:
获得针对目标三维模型所配置的精度参数的目标参数值;其中,所述精度参数为表征三角化精度的参数,不同的参数值表征不同的三角化精度;
所述目标几何内核通过调用三角化函数,对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据,包括:
所述目标几何内核通过调用三角化函数,以使所述三角化函数基于所述目标参数值,对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据。
本发明实施例中,在对目标拓扑数据进行三角化处理之前,可以先获取针对目标三维模型所配置的精度参数的目标参数值,该目标参数值所表征的三角化精度可以与用户的三角化精度需求一致,在对目标拓扑数据进行三角化处理时,目标几何内核通过调用三角化函数,将该目标参数值输入至三角化函数,使得三角化函数基于目标参数值对目标拓扑数据进行符合该目标参数值所表征精度三角化处理,得到处理后的三角网格数据,实现三角化处理的精度可控。通过对目标三维模型配置精度参数的方式,精度参数可以具有多个参数值,可以从中选取一参数值作为目标参数值,从而使得目标拓扑数据的三角化精度可控。
示例性的,精度参数的多个预设参数值可以为:0.2、0.4、0.6、0.8,其中,参数值越小表征三角化处理的偏移量越小,从而三角化后的点更为密集,三角化处理的精度更高,也就是,精度参数的参数值越小,其所对应的三角化精度越高,若三角化的精度需求较高,可以选取0.2作为精度参数的目标参数值,从而调用目标几何内核,对目标拓扑数据进行符合目标参数值所表征的精度的三角化处理,从而得到目标参数值0.2所对应精度的处理后的三角网格数据。另外,精度参数可以通过线性偏转(linear deflection)参数和角度偏转(angle deflection)参数表征,也就是,三角化处理的偏移量可以通过线性偏转和角度偏转进行表征,线性偏转参数和角度偏转参数可以作为三角化处理时的主要控制参数,从而控制三角化处理的精度。当然,精度参数可以默认配置有一参数值,可以将该默认配置的参数值作为目标参数值,并对目标拓扑数据进行三角化处理;用户还可以根据需求从精度参数的多个参数值中选取一参数值作为目标参数值,这都是合理的。
S103:根据所述处理后的三角网格数据,渲染生成布尔操作后的目标三维模型;
得到处理后的三角网格数据后,可以根据处理后的三角网格数据,渲染生成布尔操作后的目标三维模型,具体的,所述根据所述处理后的三角网格数据,渲染生成布尔操作后的目标三维模型,包括:
构建与所述处理后的三角网格数据所表征结构相匹配的待渲染图元,将所述待渲染图元传递给三维模型的渲染管线,以使所述渲染管线对所述待渲染图元进行渲染,得到布尔操作后的目标三维模型。
在基于处理后的三角网格数据渲染生成目标三维模型时,可以先构建与处理后的三角网格数据所表征的结构相匹配的待渲染图元,该处理后的三角网格数据所表征的结构即目标三维模型的结构,可以先生成该结构相匹配的待渲染图元,并通过渲染图元的形式生成目标三维模型。其中,针对三维模型而言,三维引擎中关于三维模型的渲染管线可以渲染该待渲染图元,生成待渲染图元后,可以将待渲染图元传递给渲染管线,进而渲染生成目标三维模型,渲染管线可以理解为三维引擎中自定义有渲染逻辑的功能模块;并且,三维引擎在运行时会实时刷新,渲染管线会实时渲染该待渲染图元。
当然,本发明对于根据处理后的三角网格数据渲染生成目标三维模型的方式并不限定,其渲染方式还可以与现有技术类似。
可选地,所述三维虚拟场景中的每一三维模型的描述数据还包含有初始拓扑数据三角化后的初始三角网格数据,所述方法还包括:
根据所述目标拓扑数据,对所述至少两个三维模型的初始拓扑数据进行更新;
根据所述处理后的三角网格数据,对所述至少两个三维模型的初始三角网格数据进行更新。
本发明中,三维虚拟场景的各个三维模型在显示时,通常需对各个三维模型的初始三角网格数据进行渲染,其初始三角网格数据可以对各个三维模型的初始拓扑数据进行三角化得到;此时,还可以保存各个三维模型的初始三角网格数据,以便后续的其他操作。为保证初始拓扑数据以及初始三角网格数据与布尔操作后的三维模型的描述数据的一致性,可以根据目标拓扑数据,对至少两个三维模型的初始拓扑数据进行更新;以及根据处理后的三角网格数据,对至少两个三维模型的初始三角网格数据进行更新。
其中,本发明对于更新至少两个三维模型的初始拓扑数据以及初始三角网格数据的时机不做限定,可以在得到目标拓扑数据时更新至少两个三维模型的初始拓扑数据,以及在得到处理后的三角网格数据时更新至少两个三维模型的初始三角网格数据;当然还可以在渲染生成目标三维模型后,更新至少两个三维模型的初始拓扑数据以及初始三角网格数据。
另外,本发明实施例所提供的三维引擎,其设置的目标几何内核在生成三维模型时还可以包含有具体的模型参数,所显示的各个三维模型可以包含有具体的参数显示、位置显示、大小显示等等,当然,渲染生成的布尔操作后的目标三维模型也可以具有其参数显示、位置显示、大小显示等等,当然还可以显示该目标三维模型布尔操作前所利用的至少两个三维模型等信息,本发明对于针对三维虚拟场景所显示的信息不做限定。另外,用户可以基于三维虚拟场景,对三维模型进行参数调整,位置调整,旋转调整,以及对至少两个三维模型发起布尔操作等等,本发明对此不做限定。
本发明实施例提供的三维模型生成方法,应用于三维引擎,三维引擎中设置有目标几何内核,本发明实施例中,可以显示包含有各个三维模型的三维虚拟场景,每一三维模型通过目标几何内核所生成,且每一三维模型的描述数据包含有目标几何内核在生成该三维模型时所产生的初始拓扑数据,也就是,目标几何内核可以生成三维模型,且所生成的三维模型的描述数据中包含有初始拓扑数据;此时,本发明可以响应于接收到针对三维虚拟场景中的至少两个三维模型的布尔操作指令,调用目标几何内核,对至少两个三维模型的初始拓扑数据进行与布尔操作指令相匹配的运算处理,得到目标拓扑数据,即该至少两个三维模型经布尔操作后的拓扑数据,还可以对目标拓扑数据进行三角化处理,得到处理后的三角网格数据,并渲染生成布尔操作后的目标三维模型。本发明实施例的三维引擎中设置有目标几何内核,目标几何内核所生成的三维模型的描述数据中包含有该三维模型的初始拓扑数据,通过调用目标几何内核对至少两个三维模型的初始拓扑数据进行与布尔操作指令相匹配的运算处理,可以得到布尔操作后的拓扑数据,即目标拓扑数据,后续可以基于该目标拓扑数据渲染生成布尔操作后的目标三维模型。可见,通过本方案可以使得三维引擎对至少两个三维模型进行布尔操作,通过计算并组合生成新的三维模型。
另外,本发明引入了基于模型边界表示的三维形体数据结构,即三维模型的拓扑数据,将三维模型划分为几何和拓扑来实现整个模型形状的表示,并通过计算拓扑形状之间的几何公差来判断形状之间是否发生干扰,最终达到布尔操作的效果,从而通过计算并组合生成新的三维模型。本发明的方案实现了三维引擎所产生的三维模型可以进行布尔操作,并且可以通过布尔差、并和/或交,可以从简单的三维模型组合构建出复杂的三维模型。
可选地,如图2所示,在本发明的另一实施例中,所述三维虚拟场景的中的任一三维模型的生成方式,包括:
S201:确定待生成三维模型所属的目标几何类型;
在生成三维模型时,用户可以发出针对待生成三维模型的生成操作,该操作中可以指示有待生成三维模型所属的目标几何类型,本发明中,可以响应于该针对待生成三维模型的生成操作,并确定该操作所指示的目标几何类型,基于后续的步骤,从而生成待生成三维模型。
示例性的,在交互界面中,用户可以给定待生成的待生成三维模型的目标几何类型,从而电子设备可以通过交互界面获得目标几何类型;并且,用户可以通过预定的输入框输入几何类型,用户也可以在交互界面中预先提供的多种可选择的几何类型中,选中一几何类型,得到目标几何类型。
示例性的,预先提供的多种可选择的几何类型可以包括:立方体类型、圆柱类型、球类型等等。
上述针对确定目标几何类型的说明,仅仅作为示例,并不应构成对本发明的限定。
S202:获得针对所述待生成三维模型所设定的、与所述目标几何类型相对应的目标模型参数的参数值;
其中,所述与所述目标几何类型相对应的目标模型参数的参数值为:在生成所述目标几何类型的所述待生成三维模型时所需利用的模型几何参数;
在生成三维模型时,可以根据模型的几何参数进行三维模型生成,因此,确定目标几何类型后,还可以获得针对待生成三维模型所设定的、与目标几何类型相对应的目标模型参数的参数值。示例性的,若目标几何类型为立方体类型,目标模型参数可以为长宽高;若目标几何类型为球类型,目标模型参数可以为半径。
与目标几何类型的确定方式类似,示例性的,获得目标模型参数的参数值的方式可以包括:在交互界面中,用户可以给定针对待生成三维模型所设定的、与目标几何类型相对应的目标模型参数的参数值,从而电子设备可以通过交互界面获得目标模型参数的参数值;并且,用户可以通过预定的输入框输入参数值,用户也可以在交互界面中预先提供的多种可选择的参数值中,选中一参数值,得到目标模型参数的参数值。
当然,针对任一种几何类型,可以预先设置有目标模型参数的多个参数值。示例性的,在一种实现方式中,针对球类型的待生成的待生成三维模型,其目标模型参数即球的半径参数,针对半径参数预设有多个半径参数值,如:1、2、3、4、5等等,可以从中选取一参数值,作为针对待生成三维模型所设定的、与球类型相对应的目标模型参数的参数值。
示例性的,在另一种实现方式中,针对立方体类型的待生成的待生成三维模型,其目标模型参数可以为立方体的长宽高参数,针对长宽高参数而言,可以预设有多组参数值,例如:长1宽1高2、长2宽1高3、长3宽1高2等等,可以从多组参数值中,选取一组参数值,作为针对目标参数模型所设定的、与立方体类型相对应的目标模型参数的参数值。
可以理解的是,针对任一目标模型参数的参数值,该参数值可以为正数。
需要说明的是,上述对目标模型参数的参数值的获得方式的说明,仅仅作为示例,并不应构成对本发明的限定。
S203:调用所述目标几何内核,以使所述目标几何内核根据所述目标模型参数的参数值,生成所述待生成三维模型对应的初始拓扑数据,并对所述待生成三维模型对应的初始拓扑数据进行三角化处理,得到所述待生成三维模型的初始三角网格数据;
获得目标模型参数的参数值后,可以调用目标几何内核,根据目标模型参数的参数值,生成目标几何类型的待生成三维模型对应的初始拓扑数据,该初始拓扑数据可以为待生成三维模型的结构化数据,示例性,初始拓扑数据可以通过方程的形式对待生成三维模型的结构进行数学意义的表达;并且,目标几何内核还可以将所得到的初始拓扑数据进行三角化处理,得到待生成三维模型的初始三角网格数据。得到待生成三维模型的初始三角网格数据后,可以通过后续的步骤对待生成三维模型的初始三角网格数据进行渲染从而生成待生成三维模型。其中,所谓三角化也可称为离散化,从而通过有限的点,描述拓扑数据所表征的线或面等等。
需要说明的是,目标几何内核可以为基于多个用于生成三维模型的功能函数进行封装所得到的几何内核,示例性的,该目标几何内核可以为利用OCC几何内核中的功能函数进行封装所得到的几何内核,当然也可以利用其他功能函数进行封装,从而得到目标几何内核,在此不做限定。
示例性的,所述调用所述目标几何内核,以使所述目标几何内核根据所述目标模型参数的参数值,生成所述待生成三维模型对应的初始拓扑数据,并对所述待生成三维模型对应的初始拓扑数据进行三角化处理,得到所述待生成三维模型的初始三角网格数据,包括:
调用目标几何内核,以使所述目标几何内核通过调用拓扑生成函数,根据所述目标模型参数的参数值,生成所述待生成三维模型对应的初始拓扑数据,并通过调用三角化函数,对所述待生成三维模型对应的初始拓扑数据进行三角化处理,得到所述待生成三维模型的初始三角网格数据。
可以理解的是,目标几何内核中可以封装有多个功能函数,例如:拓扑生成函数,三角化函数等等,具体而言,在调用目标几何内核时,目标几何内核可以调用其中包含的功能函数实现对应的功能。
在生成初始拓扑数据时,可以调用几何内核中的拓扑生成函数,根据目标模型参数的参数值,生成待生成三维模型对应的初始拓扑数据;其中,调用拓扑生成函数时,可以先根据目标几何类型,确定拓扑生成函数的类型,进而基于目标模型参数的参数值进行拓扑数据生成,例如:目标几何类型为立方体类型,所调用的拓扑生成函数为用于生成立方体的待生成三维模型的函数,可以将目标模型参数的参数值,即立方体的长宽高的参数值,作为输入,通过调用立方体类型的拓扑生成函数,从而生成立方体类型的待生成三维模型对应的初始拓扑数据。
得到待生成三维模型对应的初始拓扑数据之后,可以调用三角化函数,对待生成三维模型对应的初始拓扑数据进行三角化处理,示例性的,针对三角化精度固定的三角化处理而言,可以预设有一精度参数的值,在对任一初始拓扑数据进行三角化处理时,均可以直接将该精度参数的值作为输入,调用三角化函数,对初始拓扑数据进行三角化处理,从而得到初始三角网格数据。与上述目标三维模型预设有精度参数的方式类似,待生成三维模型也可以与预设有精度参数,可以将精度参数的目标参数值作为输入,通过调用三角化函数,对待生成三维模型对应的初始拓扑数据进行三角化处理,得到待生成三维模型的初始三角网格数据,此时,通过精度参数的不同目标参数值,可以控制拓扑数据的三角化精度。S204:根据所述待生成三维模型的初始三角网格数据,渲染生成所述待生成三维模型;
得到待生成三维模型的初始三角网格数据后,可以根据待生成三维模型的初始三角网格数据渲染生成待生成三维模型。与目标三维模型的渲染方式类型,示例性的,所述根据所述待生成三维模型的初始三角网格数据,渲染生成所述待生成三维模型,包括:
构建与所述待生成三维模型的初始三角网格数据所表征结构相匹配的待渲染图元,将所述待渲染图元传递给三维模型的渲染管线,以使所述渲染管线对所述待渲染图元进行渲染,得到所述待生成三维模型。
在基于待生成三模型的初始三角网格数据渲染生成待生成三维模型时,可以先构建与待生成三维模型的初始三角网格数据所表征的结构相匹配的待渲染图元,该待生成三维模型的初始三角网格数据所表征的结构即待生成三维模型的结构,可以先生成该结构相匹配的待渲染图元,并通过渲染图元的形式生成待生成待生成三维模型。其中,针对三维模型而言,三维引擎中关于三维模型的渲染管线可以渲染该待渲染图元,生成待渲染图元后,可以将待渲染图元传递给渲染管线,进而渲染生成待生成三维模型,渲染管线可以理解为三维引擎中自定义有渲染逻辑的功能模块;并且,三维引擎在运行时会实时刷新,渲染管线会实时渲染该待渲染图元。
当然,本发明对于根据待生成三维模型的初始三角网格数据渲染生成待生成三维模型的方式并不限定,其渲染方式还可以与现有技术类似。
本发明实施例提供的三维模型生成方法,三维引擎先确定待生成三维模型所属的目标几何类型,并获得生成目标几何类型的待生成三维模型时所需利用的目标模型参数的参数值;通过调用目标几何内核,根据目标模型参数的参数值生成待生成三维模型对应的初始拓扑数据以及对待生成三维模型对应的初始拓扑数据进行三角化处理,得到待生成三维模型的初始三角网格数据;根据待生成三维模型的初始三角网格数据,可以渲染生成待生成三维模型。可见,本申请所提供的三维引擎中设置有目标几何内核,目标几何内核可以生成三维模型,且所生成的三维模型的描述数据中包含有该三维模型在生成时的初始拓扑数据,因此,通过本方案可以使得三维引擎对至少两个三维模型进行布尔操作,通过计算并组合生成新的三维模型。
另外,在生成三维模型时针对该三维模型可以预设有精度参数,精度参数的不同参数值可以实现对初始拓扑数据的三角化处理的三角化精度可控。
下面结合另一实施例,对本发明所提供的一种三维模型生成方法进行介绍,
本发明在当前的引擎架构中新增了几何引擎,以开源几何内核OpenCascade为基础(本发明以OpenCascade为例,当然也支持其他几何内核,在能满足能生成三维模型,三维模型具有拓扑数据,以及所生成的三维模型可实现布尔操作的基础上,本发明对于所使用的几何内核不做限定),实现了几何引擎可进行参数化调整以及三维模型之间可以进行布尔操作的功能。本发明中所提供的三维引擎可以包括渲染引擎和几何引擎,渲染引擎中存储三维模型的三角网格数据,几何引擎中存储三维模型的拓扑数据,渲染引擎和几何引擎中所存储的数据针对同一三维模型相关联,用户可以在显示三维模型的界面中对三维模型进行调整,渲染引擎中该三维模型的三角网格数据会发生变化(例如:对三维模型平移、旋转和/或缩放,平移和旋转会使得三角网格数据发生变化,而缩放可以理解为视角的调整,三角网格数据实质上未发生变化),此时,几何引擎中该三维模型的拓扑数据也会同步更新。
用户选择两个三维模型并发起布尔操作命令时,根据两个三维模型自身的模型坐标空间,计算模型在世界坐标空间中的位置,使得两个模型的坐标系统一,此时,两个模型会存在相对位置关系,可以通过调用几何内核的布尔操作接口,完成拓扑计算,生成两个三维模型布尔操作之后的拓扑数据,即目标拓扑数据,同时将拓扑数据进行离散化得到处理后的三角网格数据,并在渲染引擎中渲染,得到布尔操作后的新的三维模型。
如图3所示,本发明实施例所提供的一种三维模型生成方法,可以包括如下步骤:
S301:在应用层选中需要进行布尔操作的两个模型,将指令发送至引擎层;即用户在应用层选中需要进行布尔操作的两个模型,此时,应用层会将用户发出的布尔操作指令发送至引擎层。该指令即上述的针对所述三维虚拟场景中的至少两个三维模型的布尔操作指令。需要说明的是,本实施例以两个三维模型进行布尔操作为例,本申请并不对进行布尔操作的三维模型的数量进行限定。
S302:调用封装的OCC接口,对两个模型进行布尔操作;即引擎层接收到布尔操作指令后,调用封装的OCC接口,对两个模型进行布尔操作,对两个模型的拓扑进行计算,得到布尔操作后的目标拓扑数据。对应上述调用目标几何内核,以使目标几何内核通过调用布尔操作接口,对至少两个三维模型的初始拓扑数据进行与布尔操作指令相匹配的运算处理,得到目标拓扑数据。
S303:更新封装层的数据结构;得到两个模型布尔操作后的目标拓扑数据之后,可以从最底层开始,逐层更新关于这两个模型的数据结构,以保证数据的一致性。首先可以更新最底层,即封装层的数据结构,封装层即几何内核封装层,可以包括这两个模型的初始拓扑数据以及初始三角网格数据,可以基于S302所得到的布尔操作后的目标拓扑数据,对这两个模型的初始拓扑数据进行更新;并且,三角化处理为封装层的三角化函数所执行的,还可以根据布尔操作后的目标拓扑数据进行三角化后的处理后的三角网格数据,即布尔操作后的三角网格数据,对这两个模型的初始三角网格数据进行更新。当然,封装层还可以封装有其他数据,例如:三角化函数,拓扑生成函数,布尔操作的接口(即上述的OCC接口)等等,本发明对于封装层所包含的数据内容不做限定。
S304:更新引擎层的数据结构;更新封装层的数据结构后,可以进一步更新引擎层的数据结构,引擎层所包含的数据结构为拓扑数据三角化后的三角网格数据的渲染数据,可以理解为三角网格数据;针对进行布尔操作的两个模型而言,可以基于布尔操作后的处理后的三角网格数据,更新这两个模型对应的初始三角网格数据。
S305:更新应用层的数据结构;更新引擎层的数据结构后,可以进一步更新应用层的数据结构,应用层的数据结构可以包括三维模型的三角网格数据,三维模型的位置信息,以及用户界面UI(User Interface),经布尔操作后,针对应用层所显示的这两个模型的数据结构也可以进行更新,可以基于布尔操作后的处理后的三角网格数据,对应用层所显示的两个模型的初始三角网格数据进行更新,并且还可以基于布尔操作后的模型的位置信息,以及用户界面UI中待显示的布尔操作后的模型的信息,对这两个模型的位置信息以及用户界面中所显示的信息进行更新。
S306:成功正确渲染布尔操作后的模型;在从底层向上层进行数据结构的更新完毕后,可以利用更新后的数据,成功正确渲染布尔操作后的模型,即上述的渲染生成布尔操作后的目标三维模型。
需要说明的是,上述步骤S303-S305对应上述根据所述目标拓扑数据,对所述至少两个三维模型的初始拓扑数据进行更新;和/或,根据所述处理后的三角网格数据,对所述至少两个三维模型的初始三角网格数据进行更新的步骤,并且,步骤S303-S305可以在步骤S306之后执行,或者,与步骤S306同步执行,也就是,根据布尔操作后的数据对布尔操作前的数据进行更新的步骤的执行时机,本申请并不限定。
可见,本发明在执行布尔操作时,针对多层存储的数据结构,在布尔操作之后,可以进行数据结构联动更新,使得模型从自身的模型坐标空间到世界坐标空间转换时,其位置变换信息保持一致,保证布尔操作的正确性,从而正确渲染生成布尔操作后的三维模型。并且,本发明拓展了现有引擎的功能,基于开源几何内核,使得三维引擎支持几何层面的数据操作,即可以对拓扑数据进行操作,增加三维引擎对攻讦CAD方向应用开发的支持,并且支持对三维模型的布尔操作,由此可以通过布尔操作从基础的三维模型生成更复杂的三维模型,扩展了三维引擎的建模功能。
下面结合另一实施例,对本发明所提供的一种三维模型生成方法的数据存储结构进行介绍。
在本发明实施例的三维引擎建模流程中,三维引擎可以包括几何引擎层、渲染引擎层以及应用层,针对三维模型而言,各层中均存储有三维模型的数据,各层所存储的数据属于同一三维模型,但其数据存储结构可以不同,本发明所提供的一种三维模型生成方法的数据结构如图4所示。其中,几何引擎层存储有三维模型的拓扑数据,渲染引擎层存储有三维模型的三角网格数据,应用层存储有所渲染的三维模型的实体数据。
可见,针对同一三维模型,几何引擎层存储的拓扑数据,使用gp_Trsf的数据结构表征三维模型的拓扑数据的位置信息;渲染引擎层的三角网格数据,使用矩阵数据结构表征三维引擎的三角网格数据的位置信息,示例性的,该矩阵数据结构可以包括:Matrix4x4矩阵;应用层的实体数据,使用平移(Translation)、旋转(Rotation)、缩放(Scale)等参数的数据结构表征三维模型的位置信息,其中,平移参数即三维模型在展示界面中的坐标,例如:(-61.56352,77.00195,23.78307),旋转参数可以从三维的角度,对几何变换操作后的三维模型相较于初始生成的三维模型的旋转程度进行说明,例如:初始生成的三维模型的旋转参数可以为(0,0,0),缩放参数可以从三维的角度,对几何变换操作后的三维模型相较于初始生成的三维模型的缩放程度进行说明,例如:初始生成的三维模型的三维缩放参数可以为(1,1,1)。
另外,几何引擎层的gp_Trsf的数据结构、渲染引擎层的矩阵数据结构,以及应用层的平移、旋转、缩放等参数的数据结构,可以实现不同数据结构之间的转换,例如:gp_Trsf的数据结构可以转换为矩阵数据结构,矩阵数据结构可以转换为平移、旋转、缩放等参数的数据结构,平移、旋转、缩放等参数的数据结构可以转换为gp_Trsf的数据结构。示例性的,其数据结构转换方式可以为:将某一数据结构作为输入,基于针对该数据结构的格式转换公式,对该数据结构进行格式转换。当然,任一种能够实现不同数据结构之间相互转换的方式均适用于本发明,在此不做限定。
基于上述不同数据结构之间的转换,针对同一三维模型的不同数据结构,可以进行联动更新,例如:若应用层该三维模型的位置信息发生了变化,则可以对几何引擎层对应的gp_Trsf的数据结构进行更新,使得模型从自身的模型坐标空间到世界坐标空间转换时,其位置变换信息保持一致,保证布尔操作的正确性,从而正确渲染生成布尔操作后的三维模型。
下面结合另一实施例,对本发明所提供的三维引擎进行介绍。
如图5所示,本发明所提供的三维引擎,从功能逻辑上进行划分,三维引擎可以包括:引擎C#层、引擎editor层、几何内核封装层以及基础支持。其中,引擎C#层、引擎editor层以及几何内核封装层为依次的调用关系,引擎C#层为最上层的应用层,基础支持为最底层,包括对三维引擎的基础支持。上述的几何引擎层和渲染引擎层可以理解为引擎editor层所能实现的不同功能,引擎editor层可以通过调用几何内核封装层的接口实现几何引擎层和渲染引擎层的功能。并且,上述的目标几何内核即所封装的几何内核,上述的布尔操作接口、三角化函数、拓扑生成函数等均可以位于几何内核封装层。本发明实施例中,下述的拓扑数据可以理解为初始拓扑数据和/或目标拓扑数据,三角网格数据可以理解为初始三角网格数据和/或处理后的三角网格数据。
可见,引擎C#层即应用层,包括三维引擎的封装engine_wrapper,以及软件界面level_editor,该软件界面可以用于展示三维模型以及与用户交互;引擎editor层可以通过调用几何内核封装层的方式,实现三维模型生成的各个功能,引擎editor层包括引擎编辑器editor;几何内核封装层可以包括几何内核geometry_kernel,其中可以封装有多个功能函数;基础支持即三维引擎的基础支持,可以包括OpenCascade几何内核的功能函数,当然也可以是其他类型的几何内核的功能函数,以及引擎的核心功能函数Core。
引擎editor层以及几何内核封装层中均具有其对应的调用接口,图6为引擎editor层和几何内核封装层的详细结构,如图6左侧所示,引擎editor层可以包括:EngineEditorGeokernelManager(即引擎编辑器几何内核管理器,Geokernel为geometry_kernel的缩写),可以提供引擎editor层的调用接口,在实际应用中,引擎C#层可以通过该接口,调用引擎editor层,引擎editor层再调用几何内核封装层,从而生成三维模型。
如图6右侧所示,几何内核封装层可以包括:几何内核管理器GKManager(即GeokernelManager)、BrepMaker类、Common类以及Utility类;其中,BrepMaker、Common以及Utility可以理解为为三个类,GKManager即几何内核管理器,提供几何内核封装层的管理接口,引擎editor层可以调用该接口,进而实现BrepMaker类、Common类和/或Utility类的调用。
其中,GKManager可以提供几何内核封装层的管理接口,并维护存储拓扑数据和三角网格数据的map,以生成三维模型为例,GKManager可以接收用于生成模型的输入参数,通过调用BrepMaker类、Common类和/或Utility类中的函数,生成三维模型,并将生成的三维模型利用GUID添加至map。其中,map为存储三维模型的关联数据的列表,其关联数据可以为拓扑数据、三角网格数据以及所生成的三维模型等等,三维模型在生成时可以通过模型标识GUID进行关联,进而实现关联数据的关联存储。
BrepMaker类可以提供生成表示三维模型边界的函数,即拓扑生成函数,例如:用于生成立方体box、球sphere以及定制化元件等的拓扑数据的函数。
Common类可以提供基础数据的定义,例如:对三角化后的三角网格数据的结构定义。
Utility类可以提供功能函数,如:提供用于进行三角化操作的函数;写出ply操作,从而生成GUID的函数;或者,进行位置信息转换的函数等等。
在生成三维模型时,用户可以在引擎C#层的界面中进行操作,例如:选择模型类型,输入参数等操作,引擎C#层可以调用引擎editor层的接口EngineEditorGeokernelManager,引擎editor层可以调用几何内核封装层的接口GKManager,进而生成三维模型。具体而言,GKManager可以调用BrepMaker,生成三维模型的拓扑数据,基于Common所提供的数据定义,以及Utility中的三角化函数,可以对拓扑数据进行三角化处理,得到三角网格数据,并对三角网格数据进行渲染,从而生成三维模型。
本发明所提供的三维引擎,包含有多个封装层,通过从上向下依次调用的方式,可以利用目标模型参数的参数值,调用拓扑生成函数、三角化函数等,得到三角网格数据,并对三角网格数据进行渲染,即可得到三维模型。并且,三维模型的各关联数据通过模型标识GUID进行关联并存储至map,方便后续的应用。可见,通过本方案可以降低三维模型生成时的局限性。
下面结合另一实施例,对本发明所提供的三维模型生成方法进行介绍。
如图7所示,本发明所提供的三维模型生成方法的原理如下:
模型边界几何数据离散化为三角数据,三角数据经渲染可得到引擎渲染数据即三维模型。
模型边界几何数据;即Brep Geometry Data,也就是三维模型的拓扑数据,经数据离散化可得到三角数据。数据离散化的过程即上述三角化的过程,对应上述对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据的步骤。
三角数据;即Triangles,也就是三维模型的三角网格数据,经渲染可得到引擎渲染数据。渲染的过程对应上述根据所述处理后的三角网格数据,渲染生成布尔操作后的目标三维模型的步骤。
引擎渲染数据;即三维引擎基于三角数据进行渲染,得到的引擎渲染数据即三维模型。
用户可以在软件界面中进行操作,如:选择模型类型,输入模型参数等操作,本发明可以接收用户操作,从而基于用户操作中的模型参数,生成三维模型的模型边界几何数据,即上述的初始拓扑数据,经数据离散化和渲染,可以得到三维模型。并且,模型边界几何数据、三角数据以及引擎渲染数据可以通过三维模型的模型标识GUID进行关联存储。
此时,用户还可以对所生成的三维模型发出布尔操作指令,并本发明可以调用目标几何内核,实现对三维模型的初始拓扑数据进行与该布尔操作指令相匹配的运算处理,得到布尔操作后的待利用的目标拓扑数据,并经离散化后渲染生成目标三维模型。
本发明所提供的三维模型生成方法,可以对目标拓扑数据进行数据离散化处理,得到处理后的三角网格数据,对处理后的三角网格数据进行渲染,即可得到目标三维模型。并且,目标三维模型的各关联数据通过模型标识GUID进行关联并存储,方便后续的应用。本方案支持用户对三维模型进行布尔操作,对至少两个三维模型进行组合,生成新的三维模型。
下面结合另一实施例,对本发明实施例所提供的一种三维模型生成方法进行介绍。
如图8所示,用户所选中的两个三维模型可以为立方体模型A和球模型B,可以通过本发明所提供的三维模型生成方法,对立方体模型A和球模型B进行布尔操作,通过计算并组合生成新的三维模型。
用户可以针对立方体模型A和球模型B发出不同的布尔操作指令,例如:差集、交集和/或并集等等。以布尔操作指令分别为差集、交集以及并集为例,布尔操作后的新的三维模型:差集:A-B,交集:A∩B,并集:A∪B,如图8下方所示。
需要说明的是,本发明实施例所提供的布尔操作前的三维模型可以为任一三维模型,如:立方体模型、球模型,当然还可以为立方体模型和球模型经布尔操作后复合的模型等等,本发明对此不做限定。另外,布尔操作的方式也可以存在多种,针对相同的至少两个三维模型的相同的布尔操作,所得到的目标三维模型可以相同或不同。
可见,通过本方案可以使得三维引擎对至少两个三维模型进行布尔操作,通过计算并组合生成新的三维模型。
基于上述方法实施例,本发明实施例还提供了一种三维模型生成装置,应用于三维引擎,所述三维引擎中设置有目标几何内核;如图9所示,所述装置包括:
显示模块910,用于显示包含有各个三维模型的三维虚拟场景;其中,每一三维模型通过所述目标几何内核所生成,且每一三维模型的描述数据包含有所述目标几何内核在生成该三维模型时所产生的初始拓扑数据;
调用模块920,响应于接收到针对所述三维虚拟场景中的至少两个三维模型的布尔操作指令,调用所述目标几何内核,以使所述目标几何内核对所述至少两个三维模型的初始拓扑数据进行与所述布尔操作指令相匹配的运算处理,得到目标拓扑数据,并对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据;
渲染模块930,用于根据所述处理后的三角网格数据,渲染生成布尔操作后的目标三维模型。
本发明实施例提供的三维模型生成装置,应用于三维引擎,三维引擎中设置有目标几何内核,本发明实施例中,可以显示包含有各个三维模型的三维虚拟场景,每一三维模型通过目标几何内核所生成,且每一三维模型的描述数据包含有目标几何内核在生成该三维模型时所产生的初始拓扑数据,也就是,目标几何内核可以生成三维模型,且所生成的三维模型的描述数据中包含有初始拓扑数据;此时,本发明可以响应于接收到针对三维虚拟场景中的至少两个三维模型的布尔操作指令,调用目标几何内核,对至少两个三维模型的初始拓扑数据进行与布尔操作指令相匹配的运算处理,得到目标拓扑数据,即该至少两个三维模型经布尔操作后的拓扑数据,还可以对目标拓扑数据进行三角化处理,得到处理后的三角网格数据,并渲染生成布尔操作后的目标三维模型。本发明实施例的三维引擎中设置有目标几何内核,目标几何内核所生成的三维模型的描述数据中包含有该三维模型的初始拓扑数据,通过调用目标几何内核对至少两个三维模型的初始拓扑数据进行与布尔操作指令相匹配的运算处理,可以得到布尔操作后的拓扑数据,即目标拓扑数据,后续可以基于该目标拓扑数据渲染生成布尔操作后的目标三维模型。可见,通过本方案可以使得三维引擎对至少两个三维模型进行布尔操作,通过计算并组合生成新的三维模型。
可选地,所述调用模块,具体用于:
调用所述目标几何内核,以使所述目标几何内核通过调用布尔操作接口,对所述至少两个三维模型的初始拓扑数据进行与所述布尔操作指令相匹配的运算处理,得到目标拓扑数据,并通过调用三角化函数,对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据。
可选地,所述目标几何内核对所述至少两个三维模型的初始拓扑数据进行与所述布尔操作指令相匹配的运算处理,得到目标拓扑数据,包括:
所述目标几何内核基于所述布尔操作指令,计算所述至少两个三维模型的初始拓扑数据之间的几何公差,得到目标拓扑数据。
可选地,所述装置还包括获取模块,用于:
获得针对目标三维模型所配置的精度参数的目标参数值;其中,所述精度参数为表征三角化精度的参数,不同的参数值表征不同的三角化精度;
所述目标几何内核通过调用三角化函数,对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据,包括:
所述目标几何内核通过调用三角化函数,以使所述三角化函数基于所述目标参数值,对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据。
可选地,所述渲染模块,具体用于:
构建与所述处理后的三角网格数据所表征结构相匹配的待渲染图元,将所述待渲染图元传递给三维模型的渲染管线,以使所述渲染管线对所述待渲染图元进行渲染,得到布尔操作后的目标三维模型。
可选地,所述三维虚拟场景中的每一三维模型的描述数据还包含有初始拓扑数据三角化后的初始三角网格数据,所述装置还包括更新模块,用于:
根据所述目标拓扑数据,对所述至少两个三维模型的初始拓扑数据进行更新;
根据所述处理后的三角网格数据,对所述至少两个三维模型的初始三角网格数据进行更新。
可选地,所述三维虚拟场景的中的任一三维模型的生成方式,包括:
确定待生成三维模型所属的目标几何类型;
获得针对所述待生成三维模型所设定的、与所述目标几何类型相对应的目标模型参数的参数值;其中,所述与所述目标几何类型相对应的目标模型参数的参数值为:在生成所述目标几何类型的所述待生成三维模型时所需利用的模型几何参数;
调用所述目标几何内核,以使所述目标几何内核根据所述目标模型参数的参数值,生成所述待生成三维模型对应的初始拓扑数据,并对所述待生成三维模型对应的初始拓扑数据进行三角化处理,得到所述待生成三维模型的初始三角网格数据;
根据所述待生成三维模型的初始三角网格数据,渲染生成所述待生成三维模型。
可选地,所述调用所述目标几何内核,以使所述目标几何内核根据所述目标模型参数的参数值,生成所述待生成三维模型对应的初始拓扑数据,并对所述待生成三维模型对应的初始拓扑数据进行三角化处理,得到所述待生成三维模型的初始三角网格数据,包括:
调用目标几何内核,以使所述目标几何内核通过调用拓扑生成函数,根据所述目标模型参数的参数值,生成所述待生成三维模型对应的初始拓扑数据,并通过调用三角化函数,对所述待生成三维模型对应的初始拓扑数据进行三角化处理,得到所述待生成三维模型的初始三角网格数据。
本发明实施例还提供了一种电子设备,如图10所示,包括处理器1001、通信接口1002、存储器1003和通信总线1004,其中,处理器1001,通信接口1002,存储器1003通过通信总线1004完成相互间的通信,
存储器1003,用于存放计算机程序;
处理器1001,用于执行存储器1003上所存放的程序时,实现任一三维模型生成方法的步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一三维模型生成方法的步骤。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一三维模型生成方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种三维模型生成方法,其特征在于,应用于三维引擎,所述三维引擎中设置有目标几何内核;所述方法包括:
显示包含有各个三维模型的三维虚拟场景;其中,每一三维模型通过所述目标几何内核所生成,且每一三维模型的描述数据包含有所述目标几何内核在生成该三维模型时所产生的初始拓扑数据;
响应于接收到针对所述三维虚拟场景中的至少两个三维模型的布尔操作指令,调用所述目标几何内核,以使所述目标几何内核对所述至少两个三维模型的初始拓扑数据进行与所述布尔操作指令相匹配的运算处理,得到目标拓扑数据,并对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据;
根据所述处理后的三角网格数据,渲染生成布尔操作后的目标三维模型。
2.根据权利要求1所述的方法,其特征在于,所述调用所述目标几何内核,以使所述目标几何内核对所述至少两个三维模型的初始拓扑数据进行与所述布尔操作指令相匹配的运算处理,得到目标拓扑数据,并对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据,包括:
调用所述目标几何内核,以使所述目标几何内核通过调用布尔操作接口,对所述至少两个三维模型的初始拓扑数据进行与所述布尔操作指令相匹配的运算处理,得到目标拓扑数据,并通过调用三角化函数,对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据。
3.根据权利要求1或2所述的方法,其特征在于,所述目标几何内核对所述至少两个三维模型的初始拓扑数据进行与所述布尔操作指令相匹配的运算处理,得到目标拓扑数据,包括:
所述目标几何内核基于所述布尔操作指令,计算所述至少两个三维模型的初始拓扑数据之间的几何公差,得到目标拓扑数据。
4.根据权利要求2所述的方法,其特征在于,所述目标几何内核通过调用三角化函数,对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据之前,所述方法还包括:
获得针对目标三维模型所配置的精度参数的目标参数值;其中,所述精度参数为表征三角化精度的参数,不同的参数值表征不同的三角化精度;
所述目标几何内核通过调用三角化函数,对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据,包括:
所述目标几何内核通过调用三角化函数,以使所述三角化函数基于所述目标参数值,对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据。
5.根据权利要求1所述的方法,其特征在于,所述根据所述处理后的三角网格数据,渲染生成布尔操作后的目标三维模型,包括:
构建与所述处理后的三角网格数据所表征结构相匹配的待渲染图元,将所述待渲染图元传递给三维模型的渲染管线,以使所述渲染管线对所述待渲染图元进行渲染,得到布尔操作后的目标三维模型。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述三维虚拟场景中的每一三维模型的描述数据还包含有初始拓扑数据三角化后的初始三角网格数据,所述方法还包括:
根据所述目标拓扑数据,对所述至少两个三维模型的初始拓扑数据进行更新;
根据所述处理后的三角网格数据,对所述至少两个三维模型的初始三角网格数据进行更新。
7.根据权利要求1所述的方法,其特征在于,所述三维虚拟场景的中的任一三维模型的生成方式,包括:
确定待生成三维模型所属的目标几何类型;
获得针对所述待生成三维模型所设定的、与所述目标几何类型相对应的目标模型参数的参数值;其中,所述与所述目标几何类型相对应的目标模型参数的参数值为:在生成所述目标几何类型的所述待生成三维模型时所需利用的模型几何参数;
调用目标几何内核,以使所述目标几何内核通过调用拓扑生成函数,根据所述目标模型参数的参数值,生成所述待生成三维模型对应的初始拓扑数据,并通过调用三角化函数,对所述待生成三维模型对应的初始拓扑数据进行三角化处理,得到所述待生成三维模型的初始三角网格数据;
根据所述待生成三维模型的初始三角网格数据,渲染生成所述待生成三维模型。
8.一种三维模型生成装置,其特征在于,应用于三维引擎,所述三维引擎中设置有目标几何内核;所述装置包括:
显示模块,用于显示包含有各个三维模型的三维虚拟场景;其中,每一三维模型通过所述目标几何内核所生成,且每一三维模型的描述数据包含有所述目标几何内核在生成该三维模型时所产生的初始拓扑数据;
调用模块,响应于接收到针对所述三维虚拟场景中的至少两个三维模型的布尔操作指令,调用所述目标几何内核,以使所述目标几何内核对所述至少两个三维模型的初始拓扑数据进行与所述布尔操作指令相匹配的运算处理,得到目标拓扑数据,并对所述目标拓扑数据进行三角化处理,得到处理后的三角网格数据;
渲染模块,用于根据所述处理后的三角网格数据,渲染生成布尔操作后的目标三维模型。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一所述的方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310984843.9A CN117036606A (zh) | 2023-08-07 | 2023-08-07 | 一种三维模型生成方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310984843.9A CN117036606A (zh) | 2023-08-07 | 2023-08-07 | 一种三维模型生成方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117036606A true CN117036606A (zh) | 2023-11-10 |
Family
ID=88636575
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310984843.9A Pending CN117036606A (zh) | 2023-08-07 | 2023-08-07 | 一种三维模型生成方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117036606A (zh) |
-
2023
- 2023-08-07 CN CN202310984843.9A patent/CN117036606A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110392902B (zh) | 使用稀疏体积数据的操作 | |
EP3940649A1 (en) | Methods and systems for constructing ray tracing acceleration structures | |
US20150127301A1 (en) | Updating A CAD Model To Reflect Global Or Local Shape Changes | |
CN110675323B (zh) | 一种三维地图语义处理方法、系统、设备及计算机介质 | |
CN111127649B (zh) | 构建三维体块模型的方法及装置、服务器 | |
CN117036606A (zh) | 一种三维模型生成方法、装置、电子设备及存储介质 | |
CN110796735A (zh) | Nurbs曲面有限元板壳网格划分方法及计算机实现系统 | |
CN115511701A (zh) | 一种地理信息的转换方法及装置 | |
CN115099025A (zh) | 在流体模型中计算流体流速的方法、电子设备及存储介质 | |
US10204184B2 (en) | Apparatus and method for modeling cultural heritage building | |
CN116630517A (zh) | 一种三维模型生成方法、装置及电子设备 | |
GB2593946A (en) | Methods and systems for constructing ray tracing acceleration structures | |
CN107103642B (zh) | 一种三维模型体素化实体填充方法 | |
CN108305329A (zh) | 一种构建模型的方法及终端 | |
CN113096251B (zh) | 基于cim的模型处理方法、装置、设备及存储介质 | |
EP3940650A1 (en) | Methods and systems for constructing ray tracing acceleration structures | |
US20240212282A1 (en) | Image rendering method and apparatus, device, and medium | |
CN112446940B (zh) | 针对3d模型的简化方法、装置、电子设备及存储介质 | |
CN117065352A (zh) | 一种高精度头像模型的生成方法与系统 | |
Zhu et al. | Generation of hierarchical multi-resolution medial axis for CAD models | |
GB2622914A (en) | Improving 3D modeling user interfaces by introducing improved coordinates for triquad cages | |
CN116702255A (zh) | 基于叠加模型的挖填体积计算方法及装置 | |
CN118171547A (zh) | 自动化网格生成方法、装置、设备及存储介质 | |
CN117197355A (zh) | 虚拟管线模型生成方法、装置、计算机设备和存储介质 | |
CN116644501A (zh) | 建筑测绘图纸的格式转换方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |