CN109410332B - 基于点线面的三维空间几何虚拟模型细节层次裁剪方法 - Google Patents
基于点线面的三维空间几何虚拟模型细节层次裁剪方法 Download PDFInfo
- Publication number
- CN109410332B CN109410332B CN201811083741.5A CN201811083741A CN109410332B CN 109410332 B CN109410332 B CN 109410332B CN 201811083741 A CN201811083741 A CN 201811083741A CN 109410332 B CN109410332 B CN 109410332B
- Authority
- CN
- China
- Prior art keywords
- vertex
- triangle
- weight
- array
- new
- 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.)
- Active
Links
Images
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
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
Abstract
本发明公开了一种基于点线面的空间三维几何虚拟模型裁剪方法。首先将三维空间几何虚拟模型的属性从整体结构中分离出来,查找模型中具有共享性质的顶点、线和面的结构,从位置共享到纹理共享,将它们在数据处理中进行标记,当所有顶点完成关联三角形的映射处理之后,通过周围与之接壤的三角形获取到一个模型的相邻三角网格信息;借助模型全局网格信息,计算出各权重指数,得到该区域的点线面在全局网格模型中的重要性。删除或者简化重要性较低的区域,保留重要性较高的区域。该方法能够限定裁剪的层次数和复杂度,即不影响视觉观测效果,同时能够保证***对模型的构建功能正常进行,兼顾了模型渲染过程的有效性和稳定性。
Description
技术领域
本发明属于三维空间建模技术领域,更具体地,涉及一种基于点线面的三维空间几何虚拟模型细节层次裁剪方法。
背景技术
三维空间模型渲染,并不是按照实体本身从内到外在机器上进行一模一样的设计,一般来说我们都是设计出物体的同形线框,在其表面进行纹理、材质和贴图的附着,不管是颜色、光照还是花纹图案都是通过这种方式在模型上展现。纹理、材质和贴图其实本质上与图片并无本质区别,但是它们是专门针对三维模型而设计的,其中像素可以投影到屏幕空间中的像素,使得就像把图像贴上去一样具有真实感。
从三维建模技术诞生的那一刻开始,如何更快绘制和渲染的问题便随之而来。从底层硬件的中央处理器(Central Processing Unit,CPU)与图形处理器(GraphicsProcessing Unit,GPU)的高效计算,到中层图形程序的图形绘制算法,再到顶层应用软件的多样渲染技术,都有极大的性能优化空间,能够适应于不同计算机配置,适应于不同的绘制算法,以及适应于不同的场景渲染。
除了上述计算机图形层面的纵向优化因素外,项目研发时间轴的横向优化也是重要的因素之一。性能优化不能在三维空间几何虚拟模型建模及动画效果完成之后再进行,因为这样会导致大量的工作积压在优化程序上,另一方面就是无法精确定位导致模型资源运行效率低下的位置,这样排查起来就会消耗太多的时间。必须提出跟进项目每一步的小型优化方案,以及能够进行最后场景综合处理的大型优化方案。
目前,常用的三维空间几何虚拟模型裁剪算法有边收缩细节层次算法,二次误差度量算法,CPU+GPU协作裁剪算法等。
边收缩细节层次算法使用顶点权重来表示顶点的重要程度,顶点权重按照对模型外观影响由大到小的程度进行排序,将裁剪控制在一个影响较小的范围内;顶点的权重存储在一个有序数组中,数组顺序既是裁剪顶点顺序,优点在于算法易于实现,执行速度快。边收缩细节层次算法的局限性在于,只考虑了顶点这一个因素,模型整体是由点线面构成,只考虑顶点来进行裁剪只能较好的保留模型的边缘特征,对于模型整体的可观性受到较大影响。
二次误差度量算法是基于边收缩细节层次算法的改进,在顶点合并的过程中考虑了误差评价,该评价主要基于边界约束和面法向量的机制,利用误差矩阵来存储误差值,优点在于考虑的模型属性诸多方面,能达到较好的运行效果。二次误差度量算法的局限性在于,计算误差矩阵消耗的时间非常大,要进行多次高维的矩阵相乘,矩阵取反等高时间复杂度的操作,对于模型渲染的时间较长。
CPU+GPU协作裁剪算法是CPU与GPU共同协作完成的,调整CPU与GPU的数据处理量来达到负载平衡,可以使得两者效用发挥到最大。实现CPU+GPU的异构并行,需要协调两者时钟周期,计算能力,存储能力,线程管理等。优点是拥有集群级并行支持以及统一计算设备架构(CUDA,Compute Unified Device Architecture)提供节点级的并行支持,***整体计算性能得到极大的提高,同时又能保证运行的效果良好。CPU+GPU协作裁剪算法的局限性在于,需要对CPU和GPU架构进行编写,算法逻辑非常复杂,不易于实现;同时由于该算法涉及底层硬件计算,往往收到平台硬件类型的影响,不具有广泛支持性。
发明内容
上述方法都没能很好的协调三维空间模型渲染中速度、效果、跨平台和易实现的问题。为了克服上述现有技术的不足,本发明提供了基于点线面的三维空间几何虚拟模型细节层次裁剪方法,该方法基于三维空间中几何模型的固有点线面性质来进行裁剪,不需要进行中间的转换,结合改进之后的细节层次裁剪方法,成功应用于三维空间几何虚拟模型的细节层次裁剪问题。
细节层次算法描述了在物体远离摄像机的时候,可以使用分辨率较低的模型,即复杂度比原型要低,但是由于距离较远,差别就显得细微而不可见了。如何在不影响视觉效果情况下降低三维模型复杂度一直是细节层次算法的重点。由于模型得到了简化,在一定程度上会提高模型的渲染速度,降低渲染的顶点数和三角形数。
本发明基于点线面的三维空间几何虚拟模型细节层次裁剪方法,具体方法如下:
(1)网格属性拆分并建立有序索引列表
通过分离原始网格顶点属性、顶点中法线属性、格面贴图属性、格面颜色属性以及三角形,获取不同材质所对应的三角形数组,将各个三角形数组合并成不同的子网格数组。为了在后面的双顶点查找能够快速有效的进行,需要建立一个有序的索引列表,有序顶点索引列表最终以xyz由小到大顺序进行排列。有序顶点索引列表最终以顶点的三维坐标值,按照x,y,z坐标的优先级顺序,从小到大进行排列;例如a(2,5,7)和b(2,8,4)则a的坐标值小于b,因为a.y<b.y。
(2)查找位置共享属性顶点以及纹理共享属性顶点
该***简化顶点主要依据就是:去除相似顶点,保留独立顶点或者重要顶点,如果能存在多个子网格中的共同顶点,说明该顶点具有多种材质共享,属于重要顶点,要把它们找出来,通过遍历三角形数组每个顶点,找出子网格共存顶点;通过将需要查找的顶点坐标传入有序索引列表进行遍历,找出相同的顶点索引。这里的子网格共存顶点和有序列表中的共同索引就是位置共享属性顶点和纹理共享属性顶点。
(3)建立关联三角形数组和相邻三角形数组
每个顶点都有许多三角形共享,获取这些三角形对后面的算法起到关键作用,三角形数组值就是顶点的索引,把相同的索引合并即可。
由于每一个三角形的三个角都有许多个相邻三角形,上一方法只是将每个顶点与有关三角形下标对应起来,但并没有根据顶点提取具体的三角形数组,本方法是对上一方法的补充,针对每一顶点,通过比较x,y,z坐标值,当两个三角形的某一顶点坐标值相等时说明两者为相邻三角形;所以可以通过获取该顶点具有所有相同值的三角形数组来得到所有的相邻三角形,在后面计算顶点角度和以及贴图的拉伸时候就需要用到相邻三角形。
拆分当前三角形的三个顶点,获取第一顶点所关联的三角形组,将该组添加进空的相邻三角形数组,然后将该组添加进已遍历三角形组,对该组相邻三角形组设置唯一组号,获取第二和第三顶点所关联的三角形组,如果该三角形数组已经遍历,则丢弃当前获取的三角形,如果没有,则添加进相邻三角形数组,将该组添加进已遍历三角形组,对该组相邻三角形组设置唯一组号。
(4)计算顶点角度和权重
网格中每个顶点其实都被许多相邻三角形共享着,这些共享顶点角度的和决定了该顶点位于网格中独特的位置。如果和为0度,则属于简化顶点;如果和为180度,该顶点处于网格边上;如果和为360度,则该顶点处于网格内部。邻边的创建使用两个顶点的向量差。利用前面相邻三角形,把所有角度求和即可得总度数,可以通过以下公式来计算权重:
Vertex_Weight=Sub_Vertex_Weight+1
Side_Weight+=Vertex_Weight*Area
Side_Weight+=Angle*Side_Length
Side_Weight+=Total_Angle*Area
Side_Weight+=(New–Old)*Total_Angle*Area
其中Vertex_Weight表示该坐标值权重,Sub_Vertex_Weight表示子顶点权重,Side_Weight表示边权重,Area表示该边对应三角形面积,Angle表示该边上顶点的角度,Side_Length表示该边长度,Total_Angle表示该边对应三角形角度和,New和Old表示边折叠前后的三角形变化(指三角形三个点坐标值的变化,引起三角形角度和和面积以及其他如贴图的变化)。
(5)计算三角形中心距权重
顶点中心距是指该顶点与网格边界框的中心的距离,通常我们用它来判定网格表面是否产生了偏移,三角形中心距等于三个顶点到中心的距离,为了方便比较边折叠前后的中心距差值,不会由于某一被折叠顶点导致的比较为空的现象,本***采取以计算顶点相关三角形的平均中心距来代替顶点本身的中心距值,可以通过以下公式来计算权重:
Weight1=(New–Old)*Normal
Weight2=(New–Old)*Total_Center_Distance
Side_Weight+=Weight1*Weight2
其中Weight1表示法线权重,Normal表示三角形法线值,Weight2表示中心距权重,Total_Center_Distance表示中心距值,其他同名参数含义与之前所述相同。
(6)基于贴图与面积变化计算权重
在网格中拆分出的贴图数组下标就是顶点的索引,当我们简化网格的时候,会不可避免的造成贴图的变形,但是要把变形降到最低,获取三角形的三个顶点,读取UV数组获取三个顶点的贴图坐标,求三角形面积以及贴图面积,循环检测三个顶点两两合并时,三角形面积的变化和贴图面积的变化,记录下前后的各个面积值,可以通过以下公式来计算权重:
Side_Weight+=Weight+(New–Old)*Area
Side_Weight+=Weight+(New–Old)*UV_Area
其中Weight表示折叠边原有权重,UV_Area表示贴图面积,其他同名参数含义与之前所述相同。
(7)裁剪重要性选取
首先是边折叠处理,边折叠是在一个三角形中选取重要程度最低的边进行折叠,会造成两个顶点的合并,为了简化计算,最终会合并到其中的一个顶点,而不是重新计算新的顶点的坐标。按照三角形三条边以及正向反向来定义,一共有六种折叠方法,也就是∠1→∠2(第一个角折叠向第二个角)、∠2→∠1、∠1→∠3、∠3→∠1、∠2→∠3、∠3→∠2。
完成边折叠之后,要重新创建新的网格,同时创建新网格所有属性数据,创建新的顶点数组以及顶点属性中法线、贴图和颜色等数据,并将新顶点记录下来,如果循环遍历判断每个顶点是否被折叠,将折叠完成后的顶点数组添加到新网格的顶点数组,将折叠完成后的贴图坐标添加到新网格的贴图坐标,将折叠完成后的顶点颜色数组添加到新网格的顶点颜色数组,记录下添加进新网格的顶点。
按照旧网格中三角形与顶点关系,将其对应到新网格中,三维空间几何模型网格三角形承载着顶点与顶点之间的联系,如果不创建三角形,则模型贴图纹理等元素就无法正常的附加在顶点之上,会造成网格的混乱,将旧三角形数组的每个三角形提取出来,并更改其对应的子网格下标,判断三个顶点是否都已经添加进新的网格(边折叠),如果为真,则将该三角形添加进新三角形数组,同时设置新组号并将该组号添加进新三角形组号列表,将子网格最后部分进行填充,形成一个完整的子网格数组。
将折叠后面积为0的三角形进行移除,简化网格复杂度,同时将其对应的网格下标也进行移除,记录下移除的三角形,将其对应的顶点、贴图坐标、顶点颜色数据一并移除,更新新三角形数组所对应的顶点索引。
在裁剪较高的层次时,摄像机离模型本身已经非常远了,对网格细微之处的变化无法察觉,但是在网格中面积较小部分往往占有很大的比例,移除对渲染三角形数量将会降低许多。移除过多往往会影响视觉效果,所以没有和移除空三角形方法进行合并,在简化之前需要单独设置该值的参数,根据传入值,计算出高层次权重,对新三角形数组进行遍历,对取出的每个三角形求面积,三角形组总面积,三角形数量,根据传入值,确定移除的最大面积,对新三角形数组进行遍历,移除小于最大面积的所有三角形,移除该三角形所对应的子网格下标。
创建新网格:将前面所生成的新数据统一进行网格绘制,新顶点数组覆盖模型顶点数组,新法线数组覆盖模型法线数组,新顶点颜色数组覆盖模型顶点颜色数组新子网格下标数组覆盖模型子网格下标数组。
本发明针对三维空间几何虚拟模型渲染特点,基于点线面三个不同层次解决了三维空间几何虚拟模型渲染问题。与传统的几何模型渲染优化方法相比,该发明所提出的方法达到了易实现性和高效性的统一,所有计算仅仅是对模型本身的距离、面积以及长度的基本属性进行简单计算,便能达到逼真的效果,所裁剪出来的简化几何模型更逼近原始模型的外观。本发明方法基于三维空间几何最基本的点线面属性进行权重计算,计算简单,易于实现且执行效率高,同时与原始模型外观相似程度接近,裁剪比例大且不损失造型,同时该方法不涉及底层硬件计算,可以进行跨平台使用而无需修改。
附图说明
图1为本发明基于点线面的三维空间几何虚拟模型细节层次裁剪方法流程图;
图2为本发明的三维空间几何虚拟模型原型;
图3为本发明的三维空间几何虚拟模型网格原型;
图4为本发明的三维空间几何虚拟模型纹理共享标记示例;
图5为本发明的三维空间几何虚拟模型位置共享标记示例;
图6为本发明的三维空间几何虚拟模型第一层裁剪效果图;
图7为本发明的三维空间几何虚拟模型第二层裁剪效果图;
图8为本发明的三维空间几何虚拟模型第三层裁剪效果图;
图9为本发明的三维空间几何虚拟模型第四层裁剪效果图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明基于点线面的三维空间几何虚拟模型细节层次裁剪方法,该方法流程图如图1所示,其具体实现步骤如下:
第一步:将几何模型的原始网格顶点属性、顶点中法线属性、格面贴图属性、格面颜色属性和原始三角形集合分离出来;对提取出来的顶点集合建立一个排序数组,同时建立有序索引列表;
第二步:通过第一步中的三角形集合,查找模型原始网格中的具有纹理共享属性顶点,并进行标记;通过第二步中的有序索引列表,查找模型原始网格中的具有位置共享属性顶点,并进行标记;
第三步:通过第二步中的含有标记的三角形集合,根据原始顶点坐标,建立模型网格关联三角形数组;通过前面的关联三角形数组,根据共享顶点或边,建立模型网格相邻三角形数组;
第四步:通过第三步中相邻三角形数组,根据(4)中计算公式,计算每个顶点的角度和并且计算权重;
第五步:通过第三步中相邻三角形数组,根据(5)中计算公式,计算每个三角形的中心距并且计算权重;
第六步:通过判断折叠前后的贴图及三角形面积变化,根据(6)中计算公式,计算相关边权重;
第七步:将以上所有权重以向量形式进行相加,若完成整个模型计算则循环结束,否则跳转到第四步;结束循环后,通过权值高低进行区域重要性比较,对重要性高的区域进行保留,非重要或者不重要的区域进行裁剪,完成对整个复杂模型的简化操作。
下面结合附图和实施例对本发明做进一步说明。
为了使裁剪方法效果具有代表性,选取的三维空间几何虚拟模型顶点数在万级以上,同时具有多个子网格,原始模型如图2所示。
第一步:通过原始模型的网格化操作,如图3所示,可以将几何模型的原始网格顶点属性,顶点中法线属性、格面贴图属性、格面颜色属性和原始三角形集合提取并分离出来;
第二步:通过第一步中的三角形集合,查找模型原始网格中的具有纹理共享属性顶点,如图4所示,并进行标记;通过第二步中的有序索引列表,查找模型原始网格中的具有位置共享属性顶点,如图5所示,并进行标记;
第三步:通过第二步中的含有标记的三角形集合,根据原始顶点坐标,建立模型网格关联三角形数组;通过前面的关联三角形数组,根据共享顶点或边,建立模型网格相邻三角形数组;
第四步:通过第三步中相邻三角形数组,计算每个顶点的角度和并且计算权重。由于该模型具有24222个顶点,19712个三角形,6个子网格,Vertex_Weight,Angle和Total_Angle为具有24222长度的数列;Sub_Vertex_Weight具有6个长度的数列;Side_Weight和Area为与之相匹配的三角形个数长度的数列:
Vertex_Weight[24222]=Sub_Vertex_Weight[6]+1
Side_Weight[19712*3]+=Vertex_Weight[24222]*Area[19712]
Side_Weight[19712*3]+=Angle[24222]*Side_Length[19712*3]
Side_Weight[19712*3]+=Total_Angle[24222]*Area[19712]
Side_Weight[19712*3]+=(New–Old)*Total_Angle[24222]*Area[19712]
第五步:通过第三步中相邻三角形数组,计算每个三角形的中心距并且计算权重,Normal和Total_Center_Distance都是与三角形总数相关:
Weight1=(New–Old)*Normal[19712]
Weight2=(New–Old)*Total_Center_Distance[19712]
Side_Weight[19712*3]+=Weight1*Weight2
第六步:判断折叠前后的贴图及三角形面积变化,计算相关边权重,UV_Area也是与三角形总数相关:
Side_Weight[19712*3]+=Weight+(New–Old)*Area[19712]
Side_Weight[19712*3]+=Weight+(New–Old)*UV_Area[19712]
第七步:将以上所有权重以向量形式进行相加,若完成整个模型计算则循环结束,否则跳转到第四步;结束循环后,通过权值高低进行区域重要性比较,对重要性高的区域进行保留,非重要或者不重要的区域进行裁剪。
通过观察模型的距离,可以把模型简化程度划分为4个层次,即存在4个观测模型的距离,随着距离越来越远,渲染模型的复杂度相应的降低,一般来说4个层次是一个比较合适的值,最后得到效果如图6~9所示,完成对整个复杂模型的简化操作。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种基于点线面的三维空间几何虚拟模型细节层次裁剪方法,其特征在于,包括:
第一步:将几何模型的原始网格顶点属性、顶点中法线属性、格面贴图属性、格面颜色属性与原始三角形集合分离出来,对提取出来的顶点集合建立一个排序数组,同时建立有序索引列表;
第二步:通过所述分离出来的三角形集合,查找模型原始网格中的具有纹理共享属性顶点,并进行标记;并通过所述有序索引列表,查找模型原始网格中的具有位置共享属性顶点,并进行标记;
第三步:通过所述含有标记的三角形集合,根据原始顶点坐标,建立模型网格关联三角形数组;通过所述关联三角形数组,根据共享顶点或边,建立模型网格相邻三角形数组;
第四步:通过所述相邻三角形数组,计算每个顶点的角度和并且计算权重;
第五步:通过第三步中相邻三角形数组,计算每个三角形的中心距并且计算权重;
第六步:通过判断折叠前后的贴图及三角形面积变化,计算相关边权重;
第七步:将以上所有权重以向量形式进行相加,通过权值高低进行区域重要性比较,对重要性高的区域进行保留,非重要或者不重要的区域进行裁剪,完成对整个模型的简化操作。
2.如权利要求1所述的基于点线面的三维空间几何虚拟模型细节层次裁剪方法,其特征在于,所述第四步中计算每个顶点的角度和并且计算权重具体为:利用所述相邻三角形,把所有角度求和即可得总度数,并通过以下公式来计算权重:
Vertex_Weight=Sub_Vertex_Weight+1
Side_Weight+=Vertex_Weight*Area
Side_Weight+=Angle*Side_Length
Side_Weight+=Total_Angle*Area
Side_Weight+=(New–Old)*Total_Angle*Area
其中Vertex_Weight表示该坐标值权重,Sub_Vertex_Weight表示子顶点权重,Side_Weight表示边权重,Area表示该边对应三角形面积,Angle表示该边上顶点的角度,Side_Length表示该边长度,Total_Angle表示该边对应三角形角度和,New和Old表示边折叠前后的三角形变化。
3.如权利要求2所述的基于点线面的三维空间几何虚拟模型细节层次裁剪方法,其特征在于,所述第五步中计算每个三角形的中心距并且计算权重具体为:以计算顶点相关三角形的平均中心距来代替顶点本身的中心距值,并通过以下公式来计算权重:
Weight1=(New–Old)*Normal
Weight2=(New–Old)*Total_Center_Distance
Side_Weight+=Weight1*Weight2
其中Weight1表示法线权重,Normal表示三角形法线值,Weight2表示中心距权重,Total_Center_Distance表示中心距值。
4.如权利要求3所述的基于点线面的三维空间几何虚拟模型细节层次裁剪方法,其特征在于,所述第六步中计算相关边权重具体为:获取三角形的三个顶点,读取贴图数组获取三个顶点的贴图坐标,求三角形面积以及贴图面积,循环检测三个顶点两两合并时,三角形面积的变化和贴图面积的变化,记录下前后的各个面积值,并通过以下公式来计算权重:
Side_Weight+=Weight+(New–Old)*Area
Side_Weight+=Weight+(New–Old)*UV_Area
其中Weight表示折叠边原有权重,UV_Area表示贴图面积。
5.如权利要求1或2所述的基于点线面的三维空间几何虚拟模型细节层次裁剪方法,其特征在于,所述第一步具体为:
通过分离顶点、法线、贴图、顶点颜色以及三角形,获取不同材质所对应的三角形数组,将各个三角形数组合并成不同的子网格数组,为了在后面的双顶点查找能够快速有效的进行,需要建立一个有序的索引列表,有序顶点索引列表最终以顶点的三维坐标值,按照x,y,z坐标的优先级顺序,从小到大进行排列。
6.如权利要求1或2所述的基于点线面的三维空间几何虚拟模型细节层次裁剪方法,其特征在于,所述第二步具体为:
去除相似顶点,保留独立顶点或者重要顶点,如果能存在多个子网格中的共同顶点,则说明该顶点具有多种材质共享,属于重要顶点,要把它们找出来,通过遍历三角形数组每个顶点,找出子网格共存顶点;通过将需要查找的顶点坐标传入有序索引列表进行遍历,找出相同的顶点索引,上述子网格共存顶点和有序列表中的共同索引就是位置共享属性顶点和纹理共享属性顶点。
7.如权利要求1或2所述的基于点线面的三维空间几何虚拟模型细节层次裁剪方法,其特征在于,所述第三步具体为:
拆分当前三角形的三个顶点,获取第一顶点所关联的三角形组,将该组添加进空的相邻三角形数组,然后将该组添加进已遍历三角形组,对该组相邻三角形组设置唯一组号,获取第二和第三顶点所关联的三角形组,如果该三角形数组已经遍历,则丢弃当前获取的三角形,如果没有,则添加进相邻三角形数组,将该组添加进已遍历三角形组,对该组相邻三角形组设置唯一组号。
8.如权利要求1或2所述的基于点线面的三维空间几何虚拟模型细节层次裁剪方法,其特征在于,所述第七步对模型进行裁剪具体为:
首先进行边折叠处理,边折叠是在一个三角形中选取重要程度最低的边进行折叠,会造成两个顶点的合并,为了简化计算,最终会合并到其中的一个顶点,而不是重新计算新的顶点的坐标;
完成边折叠之后,要重新创建新的网格,同时创建新网格所有属性数据,创建新的顶点数组以及顶点属性中法线、贴图和颜色数据,并将新顶点记录下来,循环遍历判断每个顶点是否被折叠,将折叠完成后的顶点数组添加到新网格的顶点数组,将折叠完成后的贴图坐标添加到新网格的贴图坐标,将折叠完成后的顶点颜色数组添加到新网格的顶点颜色数组,记录下添加进新网格的顶点;
按照旧网格中三角形与顶点关系,将其对应到新网格中,三维空间几何模型网格三角形承载着顶点与顶点之间的联系,将旧三角形数组的每个三角形提取出来,并更改其对应的子网格下标,判断三个顶点是否都已经添加进新的网格,如果为真,则将该三角形添加进新三角形数组,同时设置新组号并将该组号添加进新三角形组号列表,将子网格最后部分进行填充,形成一个完整的子网格数组;
将折叠后面积为0的三角形进行移除,简化网格复杂度,同时将其对应的网格下标也进行移除,记录下移除的三角形,将其对应的顶点、贴图坐标、顶点颜色数据一并移除,更新新三角形数组所对应的顶点索引;
对网格中面积较小部分,在简化之前单独设置该值的参数,根据传入值,计算出高层次权重,对新三角形数组进行遍历,对取出的每个三角形求面积、三角形组总面积和三角形数量,根据传入值,确定移除的最大面积,对新三角形数组进行遍历,移除小于最大面积的所有三角形,移除该三角形所对应的子网格下标;
创建新网格:将前面所生成的新数据统一进行网格绘制,新顶点数组覆盖模型顶点数组,新法线数组覆盖模型法线数组,新顶点颜色数组覆盖模型顶点颜色数组新子网格下标数组覆盖模型子网格下标数组。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811083741.5A CN109410332B (zh) | 2018-09-17 | 2018-09-17 | 基于点线面的三维空间几何虚拟模型细节层次裁剪方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811083741.5A CN109410332B (zh) | 2018-09-17 | 2018-09-17 | 基于点线面的三维空间几何虚拟模型细节层次裁剪方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109410332A CN109410332A (zh) | 2019-03-01 |
CN109410332B true CN109410332B (zh) | 2022-12-23 |
Family
ID=65465003
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811083741.5A Active CN109410332B (zh) | 2018-09-17 | 2018-09-17 | 基于点线面的三维空间几何虚拟模型细节层次裁剪方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109410332B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109903366B (zh) * | 2019-03-13 | 2023-07-14 | 网易(杭州)网络有限公司 | 虚拟模型的渲染方法及装置、存储介质及电子设备 |
CN110442925B (zh) * | 2019-07-16 | 2020-05-15 | 中南大学 | 一种基于实时动态分割重构的三维可视化方法及*** |
CN110363845A (zh) * | 2019-07-22 | 2019-10-22 | 南京聚润工程科技有限公司 | 一种bim三维模型分减面存储并重构的方法及*** |
CN111145329B (zh) * | 2019-12-25 | 2024-03-22 | 北京像素软件科技股份有限公司 | 模型渲染方法、***及电子装置 |
CN112419430B (zh) * | 2020-05-28 | 2022-10-28 | 上海哔哩哔哩科技有限公司 | 动画播放方法、装置及计算机设备 |
CN111627105B (zh) * | 2020-05-28 | 2023-04-28 | 北京字节跳动网络技术有限公司 | 人脸特效***方法、装置、介质和设备 |
CN112859745B (zh) * | 2021-01-07 | 2021-12-14 | 广东三姆森科技股份有限公司 | 用于三轴激光打标工艺的工件加工区域自动划分方法 |
CN112802161B (zh) * | 2021-01-27 | 2022-11-15 | 青岛联合创智科技有限公司 | 一种三维虚拟角色智能蒙皮方法 |
CN112967400B (zh) * | 2021-04-13 | 2022-07-15 | 成都四方伟业软件股份有限公司 | 一种基于Unity3D的三维图表动态创建方法及装置 |
CN113391598B (zh) * | 2021-06-28 | 2022-09-20 | 哈尔滨工业大学 | 一种虚拟装配仿真方法及*** |
CN113421337A (zh) * | 2021-07-21 | 2021-09-21 | 北京臻观数智科技有限公司 | 一种提升模型渲染效率的方法 |
CN114756555B (zh) * | 2022-06-14 | 2022-08-26 | 浙江华东工程数字技术有限公司 | 一种多源异构三维模型数据处理方法及*** |
CN116402988B (zh) * | 2023-05-11 | 2023-12-19 | 北京冰河起源科技有限公司 | 三维模型处理方法、装置及存储介质 |
CN117494289B (zh) * | 2023-12-27 | 2024-03-19 | 中建三局集团有限公司 | 特征边几何体生成方法及装置、测量吸附方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6348921B1 (en) * | 1996-04-12 | 2002-02-19 | Ze Hong Zhao | System and method for displaying different portions of an object in different levels of detail |
CN102360515A (zh) * | 2011-10-19 | 2012-02-22 | 武汉大学 | 一种三维模型渐进网格数据组织方法 |
CN102663800A (zh) * | 2012-04-26 | 2012-09-12 | 北京师范大学 | 一种顾及城市意象的城市建筑综合与渲染的方法 |
CN103221993A (zh) * | 2010-09-13 | 2013-07-24 | 巴里·林恩·詹金斯 | 传输和控制包括渲染的几何、纹理和光照数据的流交互媒体 |
CN103324783A (zh) * | 2013-05-30 | 2013-09-25 | 国家电网公司 | 基于边折叠的lod模型实时生成方法 |
CN103646415A (zh) * | 2013-12-24 | 2014-03-19 | 秦皇岛数据产业研究院有限公司 | 基于双重约束的三维场景lod模型的选择调用方法 |
CN104574501A (zh) * | 2014-12-19 | 2015-04-29 | 浙江大学 | 一种针对复杂三维场景的高质量纹理映射方法 |
-
2018
- 2018-09-17 CN CN201811083741.5A patent/CN109410332B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6348921B1 (en) * | 1996-04-12 | 2002-02-19 | Ze Hong Zhao | System and method for displaying different portions of an object in different levels of detail |
CN103221993A (zh) * | 2010-09-13 | 2013-07-24 | 巴里·林恩·詹金斯 | 传输和控制包括渲染的几何、纹理和光照数据的流交互媒体 |
CN102360515A (zh) * | 2011-10-19 | 2012-02-22 | 武汉大学 | 一种三维模型渐进网格数据组织方法 |
CN102663800A (zh) * | 2012-04-26 | 2012-09-12 | 北京师范大学 | 一种顾及城市意象的城市建筑综合与渲染的方法 |
CN103324783A (zh) * | 2013-05-30 | 2013-09-25 | 国家电网公司 | 基于边折叠的lod模型实时生成方法 |
CN103646415A (zh) * | 2013-12-24 | 2014-03-19 | 秦皇岛数据产业研究院有限公司 | 基于双重约束的三维场景lod模型的选择调用方法 |
CN104574501A (zh) * | 2014-12-19 | 2015-04-29 | 浙江大学 | 一种针对复杂三维场景的高质量纹理映射方法 |
Non-Patent Citations (2)
Title |
---|
Android平台的多尺度地理信息三维显示技术;罗安平 等;《测绘科学技术学报》;20140228;第31卷(第1期);第107-110页 * |
基于层次细节模型的遮挡裁剪算法;许云杰 等;《中国图象图形学报》;20020930;第7卷(第9期);第962-967页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109410332A (zh) | 2019-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109410332B (zh) | 基于点线面的三维空间几何虚拟模型细节层次裁剪方法 | |
US8570322B2 (en) | Method, system, and computer program product for efficient ray tracing of micropolygon geometry | |
CN105336003B (zh) | 结合gpu技术实时流畅绘制出三维地形模型的方法 | |
CN107025685B (zh) | 拓扑感知下的机载建筑屋顶点云建模方法 | |
US20190088002A1 (en) | Reduced Acceleration Structures for Ray Tracing Systems | |
KR101148613B1 (ko) | 지형 생성 시스템, 지형 생성 방법 및 프로그램 저장 장치 | |
CN103679807B (zh) | 一种带边界约束的散乱点云重构方法 | |
CN108022273B (zh) | 一种图数可拆合制图方法 | |
CN108961411A (zh) | 一种保持外观特征的复杂三维建筑物模型简化方法 | |
CN109118588B (zh) | 一种基于块分解的彩色lod模型自动生成方法 | |
KR20100136604A (ko) | 3차원 지형 영상 실시간 가시화 시스템 및 이의 방법 | |
Strugar | Continuous distance-dependent level of detail for rendering heightmaps | |
CN107918957B (zh) | 一种保持结构和纹理特征的三维建筑模型化简方法 | |
CN107220372B (zh) | 一种三维地图线要素注记自动放置方法 | |
CN111784840B (zh) | 基于矢量数据自动分割lod层级三维数据单体化方法及*** | |
CN108053483A (zh) | 一种基于gpu加速的维诺图三维网格重构方法 | |
CN1936962A (zh) | 一种基于pc平台的三维游戏中大型地形生成方法 | |
CN105261066A (zh) | 一种三维地理信息***实时绘制多线程分配与控制方法 | |
CN109636889B (zh) | 一种基于动态缝合带的大规模三维地形模型渲染方法 | |
CN113421338A (zh) | 一种将二维矢量进行三维渲染的方法 | |
CN115937461B (zh) | 多源融合模型构建及纹理生成方法、装置、介质及设备 | |
CN112102467B (zh) | 一种基于gpu的并行八叉树生成、装置及电子设备 | |
CN109872390A (zh) | 一种海量三维模型的组织方法 | |
Zhang et al. | A geometry and texture coupled flexible generalization of urban building models | |
He et al. | All range and heterogeneous multi-scale 3D city models |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |