CN108776986A - 一种删除网格上冗余三角形的方法 - Google Patents
一种删除网格上冗余三角形的方法 Download PDFInfo
- Publication number
- CN108776986A CN108776986A CN201810436742.7A CN201810436742A CN108776986A CN 108776986 A CN108776986 A CN 108776986A CN 201810436742 A CN201810436742 A CN 201810436742A CN 108776986 A CN108776986 A CN 108776986A
- Authority
- CN
- China
- Prior art keywords
- triangle
- polygon
- redundancy
- grid
- vertex
- 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.)
- Withdrawn
Links
Classifications
-
- 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)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本发明提供的一种删除网格上冗余三角形的方法,包括以下步骤:1)遍历网格上的三角形,将所有三角形合并到不同的多边形中;2)在每个多边形内,进行重叠边的删除,简化多边形;3)对简化后的多边形进行三角化,生成新的网格。本发明通过使用该算法,能够将三角形和顶点数较多的网格变为三角形和顶点数相对较少的网格,并且使得网格外观和主要顶点保持不变。通过对网格(Mesh)上冗余的三角形进行删除,减少网格(Mesh)上三角形和顶点的数量,降低渲染时对图形处理单元(GPU)计算能力和带宽的需求,从而提高渲染效率。
Description
技术领域
本发明涉及计算机图形处理技术领域,特别涉及一种删除网格上冗余三角形的方法。
背景技术
在计算机图形学中,最常使用的是使用网格来拟合物体,目前构成网格的基本图元主要是使用三角形。在图形处理单元(GPU)中对网格进行渲染的时候,也是以网格上的顶点或者三角形作为一个渲染单位来进行计算,而要模拟一个复杂的物体是需要大量的三角形和顶点。网格中三角形数量的多少,直接会影响到顶点的数量,从而影响到渲染的效率。
在目前环境下,虽然图形处理单元(GPU)的运算能力有了很大的提高,但是图形处理单元(GPU)在单位时间内的计算能力以及带宽都是有限的,并且由于玩家对游戏画质追求的提高,所以在当前的环境下,游戏中会有大量的网格(Mesh),由于存在大量的网格(Mesh),图形处理单元(GPU)的渲染仍然是很容易出现瓶颈的一个地方。为了使得在不牺牲画质的前提下,尽可能提高渲染效率,就需要使用尽可能少的三角形去拟合物体。在此背景下,网格(Mesh)中冗余三角形删除的算法就应运而生。目前大多数的删除冗余三角形的算法都比较复杂,而且一般都在离线的环境中使用,比如3dsmax或者Maya中使用较多。但在游戏中,我们有时需要实时地进行网格(Mesh)中冗余三角形的删除。
综上所述,目前亟需一种直接运用到游戏中的相对效率较高的冗余三角形删除算法。
发明内容
为了解决现有技术存在的不足,本发明的目的在于提供一种删除网格上冗余三角形的方法,通过一些手段(比如使用哈希表等进行相邻边的查找)进行加速,从而提高删除三角形的效率,能够在游戏等一些实时性要求较高的产品中使用。
为实现上述目的,本发明提供的一种删除网格上冗余三角形的方法,其特征在于,包括以下步骤:
1)遍历网格上的三角形,将所有三角形合并到不同的多边形中;
2)在每个多边形内,进行重叠边的删除,简化多边形;
3)对简化后的多边形进行三角化,生成新的网格。
进一步地,步骤1)所述将所有三角形合并到不同的多边形中,进一步包括:
取出网格中的第一个三角形,并根据该三角形建立多边形;
检测网格中剩余的三角形,将符合合并规则的三角形与多边形合并,形成新的多边形。
进一步地,所述合并规则由以下条件中的一个或多个组成:三角形与多边形共边且法线相同,纹理坐标连续,贴图相同。
进一步地,步骤1)所述遍历网格上的三角形,是通过使用哈希表数据结构存储三角形的三个顶点数据进行优化,查找到相邻边。
进一步地,所述步骤2)包括:遍历多边形所有的边,查找重叠边;删除所述重叠边中的一条,直至多边形中没有重叠边为止。
进一步地,所述重叠边,是指连续的三个顶点确定的相邻的两条边重合。
进一步地,所述步骤3)进一步包括以下步骤:
合并多边形上的冗余边;
使用耳切法对多边形进行三角形化。
进一步地,所述合并多边形上的冗余边的步骤,是查找并删除所有冗余的顶点。
进一步地,所述使用耳切法对多边形进行三角形化的步骤,进一步包括:
查找并移除多边形的耳尖,直至多边形中剩余三个顶点,形成耳朵三角形;
从多边形中移除所述耳朵三角形,形成新的三角形;
将所述新的三角形加入到形成的网格中。
进一步地,在所述从多边形中移除所述耳朵三角形,形成新的三角形的步骤之后,进一步包括查找并删除所有冗余的顶点的步骤。
本发明提供的一种删除网格上冗余三角形的方法,相对高效的删除网格(Mesh)上冗余三角形。通过使用该算法,能够将三角形和顶点数较多的网格变为三角形和顶点数相对较少的网格,并且使得网格外观和主要顶点保持不变。通过对网格(Mesh)上冗余的三角形进行删除,减少网格(Mesh)上三角形和顶点的数量,降低渲染时对图形处理单元(GPU)计算能力和带宽的需求,从而提高渲染效率。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:
图1为根据本发明的一种删除网格上冗余三角形的方法的工作流程图;
图2为根据本发明的实施方式的合并三角形到多边形的示意图;
图3为根据本发明的实施方式的删除多边形重叠边的示意图;
图4为根据本发明的实施方式的对简化后的多边形进行三角化的流程图;
图5为根据本发明的实施方式的合并冗余顶点的示意图;
图6为根据本发明的实施方式的多边形内部空洞的示意图;
图7为根据本发明的实施方式的查找三角形的示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图1为根据本发明的一种删除网格上冗余三角形的方法的工作流程图。下面将参考图1,对本发明的一种删除网格上冗余三角形的方法进行详细描述。
在步骤101,遍历网格(Mesh)上的三角形,合并所有的三角形到不同的多边形中。
对于一个网格(Mesh)中的三角形,首先要取出网格(Mesh)中的第一个三角形,并把该三角形从网格(Mesh)中删除掉,根据取出的三角形建立多边形,然后检测网格(Mesh)中剩余的三角形,如果发现剩余的三角形中有跟多边形共边的三角形,并且法线相同,则认为当前检测的三角形和检测的多边形可以合并,从网格(Mesh)中去除当前检测的三角形,并且把该三角形的顶点加入到多边形列表中。
图2为根据本发明的实施方式的合并三角形到多边形的示意图,粗线表示当前的多边形,细线表示待测试的三角形。下面结合图2对步骤101进行详细描述。如图2所示,目前正在遍历的三角形为三角形ABC,遍历三角形ABC时候发现,BC边和V1V2边重合,并且三角形ABC和多边形V0-V1-V2-V3-V4-V5法线相同,则根据上述的判断条件,认为三角形ABC可以合并到多边形V0-V1-V2-V3-V4-V5上,从而形成新的多边形V0-V1-A-V2-V3-V4-V5。形成新的多边形之后要对网格(Mesh)中的三角形重新开始遍历,这是由于当前检测的多边形发生了修改,会导致网格(Mesh)中已经检测的三角形有可能能够合并到当前检测的多边形中,所以一旦合并三角形到多边形中后,要重新开始遍历网格(Mesh)中剩余的三角形。正如图2所示,在没有添加三角形ABC到多边形上的时候,三角形DAC是不能够合并到多边形上的,一旦合并三角形ABC到多边形后,就可以合并三角形DAC到新形成的多边形上。
如上所述,由于每经过一次遍历、合并三角形到多边形上之后,网格(Mesh)中剩余的三角形数量都会减少,所以,最终能够把整个网格(Mesh)中的三角形按照不同的多边形进行划分。
在该步骤中,可以通过使用哈希表数据结构存储三角形的三个顶点数据进行优化,加速查找到相邻边。
另外,在本实施例中仅以法线是否相同作为判断三角形是否能合并到多边形中的条件,但对于其他情况,还需要根据实际情况指定合并的规则,检测其它条件,例如:如果顶点带纹理坐标,还要检测纹理坐标是否连续,如果带贴图,则要看使用的贴图是否是相同的。
在步骤102,判断未遍历的多边形个数是否大于0。
在该步骤中,如果未遍历的多边形个数大于0,则说明仍需进行遍历,继续进行下一步骤,即步骤103。如果未遍历的多边形个数不大于0,则说明遍历完成,可以结束。
在步骤103,判断多边形中的顶点数是否等于3。
在该步骤中,如果当前遍历的多边形中的顶点数等于3,则可以进行步骤105。如果当前遍历的多边形中的顶点数不等于3,则需进行步骤104,在多边形内,进行重叠边的删除。
在步骤104,在多边形内,进行重叠边的删除。在步骤101,已经把位于同一个多边形上的所有三角形合并到同一个多边形里边,接着,我们就需要对多边形进行简化。遍历多边形,删除重叠的边。按顺序遍历多边形上所有的边,查看相邻的两条边是否是重叠边,所谓的重叠边就是指连续的三点确定的相邻的两条边重合,这样的两条边即称为重叠边。在该步骤中,如果发现相邻的两条边是重叠边,就要删除其中的一条边。如图3所示,在多边形V0-V1-V2-V3-V4-V5-V6-V7中,V2和V6重合,V3和V5重合,在遍历的过程中发现存在连续的三个顶点V3,V4,V5,使得V3与V5重合,这样,边V3-V4与边V4-V5即为重叠边,要删除重叠边V3-V4,形成新的多边形V0-V1-V2-V5-V6-V7。当删除一条重叠边以后,就要重新重新遍历多边形中的边,因为删除了多边形中的一条重叠边,有可能之前遍历过的边重新变为重叠边,所以要重新对多边形进行遍历。如图3所示,当删除重叠边V3-V4后,我们发现,边V2-V5和边V5-V6重新变为重叠边,所以要再次进行重叠边的删除。按照同样的方式对重叠边进行删减,直到发现该多边形中没有重叠边为止,最终形成多边形V0-V1-V6-V7。
在步骤105,对简化后的多边形进行三角形化,生成新的网格(Mesh)。图4为根据本发明的实施方式的对简化后的多边形进行三角化的流程图。下面结合图4,对步骤105进行详细描述。
当多边形简化完成,需要遍历每一个多边形,把该多边形进行三角形化。
在步骤401,合并多边形上的冗余边。
在三角形化时,首先遍历多边形,查看多边形上是否有可以合并的边,如果发现有可以合并的边,就进行边的合并。图5为根据本发明的实施方式的合并冗余顶点的示意图,如图5所示,边V2-V3和边V3-V4,因为顶点V3在V2-V4上,所以顶点V3就是一个冗余的顶点,要先删除冗余的顶点。图5中删除冗余顶点后的多边形为V0-V1-V2-V4-V5。
其中,删除冗余顶点的时候要注意,每次删除一个冗余顶点后,都要再次重新开始遍历整个多边形上的顶点,直到把多边形上重叠的顶点删除完毕为止。
在步骤101中删除完冗余的顶点后,就开始使用耳切法对多边形进行三角形化。
在步骤402,判断是否为耳朵三角形。
在该步骤中,如果当前判断的三角形为耳朵三角形,则进行步骤403;如果当前判断的三角形不是耳朵三角形,则返回执行步骤401。
多边形的耳朵,是指由三个连续顶点V0、V1和V2组成的内部不包含其他任意顶点的三角形,其中顶点V1称为耳尖。针对由N个顶点组成的多边形,找到其耳尖,移除唯一耳尖上的顶点,此时剩余顶点组成了一个N-1个顶点的简单多边形。我们重复这个操作直到剩余三个顶点。这样的话会产生一个复杂度为O(n3)的算法。使用该算法,遍历多边形,找到耳朵三角形。
在判断是否为耳朵三角形时,需考虑以下几种情况:对于多边形中,如果是内部的空洞地方,是不能产生三角形的。图6为根据本发明的实施方式的多边形内部空洞的示意图,如图6所示,对于顶点V2,V3,V4,由于三角形V2-V3-V4是多边形上内部的空洞,所以不能产生三角形。首先要识别出来哪些是内部的空洞产生的三角形,对于三角形V2-V3-V4,可以使用边向量V2-V3叉乘边向量V2-V4,然后使用叉乘结果点乘三角形的法线,如果点乘结果为负数,则认为是内部空洞产生的三角形,否则是外部的三角形。当测试过后发现不是内部三角形后,要检测是否存在其它的顶点在该测试三角形内部,如果发现有其它的三角形在该测试三角形的内部,那么该三角形也不能成为耳朵三角形,并且如果发现有顶点在测试三角形的边上时候,要查找该三角形顶点的邻接顶点,它们要位于该边的同一侧,也就是不能有穿过该三角形的边,否则也不能成为耳朵三角形。图7为根据本发明的实施方式的查找三角形的示意图,其中多边形是V0-V1-V2-V3-V4-V5-V6-V7-V8,使用粗线表示,V0-V1-V2是当前正在检测的三角形,使用细线表示。如图7所示,由于顶点V3在三角形V0-V1-V2内部,所以三角形V0-V1-V2不能形成耳朵三角形。
当这些条件都满足的情况下,该三角形即为要找的耳朵三角形,把耳朵三角形从该多边形中移除,成为一个新的三角形加入最终形成的网格(Mesh)中。之后进行步骤404。
在步骤404中,判断多边形剩余的边数是否大于3。
在该步骤中,如果多边形剩余的边数大于3,则重复步骤401-404;如果多边形剩余的边数不大于3,即直到多边形中剩余三个顶点,直接把这三个顶点加入到最终Mesh中。
至此,把多边形三角形化,形成了最终的网格(Mesh)。
在这一步需要注意的是,每次找到耳朵三角形,从多边形中移除耳朵三角形后,都要重新进行一次完全的冗余顶点的移除,以保证使用耳切法之前,相邻的边上没有冗余的顶点。
本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种删除网格上冗余三角形的方法,其特征在于,包括以下步骤:
1)遍历网格上的三角形,将所有三角形合并到不同的多边形中;
2)在每个多边形内,进行重叠边的删除,简化多边形;
3)对简化后的多边形进行三角化,生成新的网格。
2.根据权利要求1所述的一种删除网格上冗余三角形的方法,其特征在于,步骤1)所述将所有三角形合并到不同的多边形中,进一步包括:
取出网格中的第一个三角形,并根据该三角形建立多边形;
检测网格中剩余的三角形,将符合合并规则的三角形与多边形合并,形成新的多边形。
3.根据权利要求2所述的一种删除网格上冗余三角形的方法,其特征在于,所述合并规则由以下条件中的一个或多个组成:三角形与多边形共边且法线相同,纹理坐标连续,贴图相同。
4.根据权利要求1所述的一种删除网格上冗余三角形的方法,其特征在于,步骤1)所述遍历网格上的三角形,是通过使用哈希表数据结构存储三角形的三个顶点数据进行优化,查找到相邻边。
5.根据权利要求1所述的一种删除网格上冗余三角形的方法,其特征在于,所述步骤2)包括:遍历多边形所有的边,查找重叠边;删除所述重叠边中的一条,直至多边形中没有重叠边为止。
6.根据权利要求5所述的一种删除网格上冗余三角形的方法,其特征在于,所述重叠边,是指连续的三个顶点确定的相邻的两条边重合。
7.根据权利要求1所述的一种删除网格上冗余三角形的方法,其特征在于,所述步骤3)进一步包括以下步骤:
合并多边形上的冗余边;
使用耳切法对多边形进行三角形化。
8.根据权利要求7所述的一种删除网格上冗余三角形的方法,其特征在于,所述合并多边形上的冗余边的步骤,是查找并删除所有冗余的顶点。
9.根据权利要求7所述的一种删除网格上冗余三角形的方法,其特征在于,所述使用耳切法对多边形进行三角形化的步骤,进一步包括:
查找并移除多边形的耳尖,直至多边形中剩余三个顶点,形成耳朵三角形;
从多边形中移除所述耳朵三角形,形成新的三角形;
将所述新的三角形加入到形成的网格中。
10.根据权利要求9所述的一种删除网格上冗余三角形的方法,其特征在于,在所述从多边形中移除所述耳朵三角形,形成新的三角形的步骤之后,进一步包括查找并删除所有冗余的顶点的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810436742.7A CN108776986A (zh) | 2018-05-09 | 2018-05-09 | 一种删除网格上冗余三角形的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810436742.7A CN108776986A (zh) | 2018-05-09 | 2018-05-09 | 一种删除网格上冗余三角形的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108776986A true CN108776986A (zh) | 2018-11-09 |
Family
ID=64027028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810436742.7A Withdrawn CN108776986A (zh) | 2018-05-09 | 2018-05-09 | 一种删除网格上冗余三角形的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108776986A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109816776A (zh) * | 2019-01-25 | 2019-05-28 | 网易(杭州)网络有限公司 | 多边图形绘制方法及装置、计算机存储介质、电子设备 |
CN111681317A (zh) * | 2020-03-31 | 2020-09-18 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101241602A (zh) * | 2008-03-05 | 2008-08-13 | 罗笑南 | 一种计算机三维网格图形的简化方法 |
WO2014001694A1 (fr) * | 2012-06-29 | 2014-01-03 | Real Fusio France | Procédé et système de simplification d'un maillage d'une scène en trois dimensions |
CN103714577A (zh) * | 2014-01-23 | 2014-04-09 | 焦点科技股份有限公司 | 一种适用于带纹理模型的三维模型简化方法 |
CN106408665A (zh) * | 2016-10-25 | 2017-02-15 | 合肥东上多媒体科技有限公司 | 一种新的渐进网格生成方法 |
-
2018
- 2018-05-09 CN CN201810436742.7A patent/CN108776986A/zh not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101241602A (zh) * | 2008-03-05 | 2008-08-13 | 罗笑南 | 一种计算机三维网格图形的简化方法 |
WO2014001694A1 (fr) * | 2012-06-29 | 2014-01-03 | Real Fusio France | Procédé et système de simplification d'un maillage d'une scène en trois dimensions |
CN103714577A (zh) * | 2014-01-23 | 2014-04-09 | 焦点科技股份有限公司 | 一种适用于带纹理模型的三维模型简化方法 |
CN106408665A (zh) * | 2016-10-25 | 2017-02-15 | 合肥东上多媒体科技有限公司 | 一种新的渐进网格生成方法 |
Non-Patent Citations (4)
Title |
---|
FENG: "耳切法处理多边形三角划分", 《HTTPS://GAMEINSTITUTE.QQ.COM/COMMUNITY/DETAIL/118191》 * |
严京旗等: "面聚类网格简化新算法", 《电子学报》 * |
杨姣 等: "基于近平面合并的三角网格简化算法", 《HTTP://WWW.PAPER.EDU.CN》 * |
段黎明等: "高效率的三角网格模型保特征简化方法", 《光学精密工程》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109816776A (zh) * | 2019-01-25 | 2019-05-28 | 网易(杭州)网络有限公司 | 多边图形绘制方法及装置、计算机存储介质、电子设备 |
CN111681317A (zh) * | 2020-03-31 | 2020-09-18 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11657565B2 (en) | Hidden culling in tile-based computer generated images | |
US8970580B2 (en) | Method, apparatus and computer-readable medium rendering three-dimensional (3D) graphics | |
US9218686B2 (en) | Image processing device | |
CN105389850B (zh) | 一种大规模三维场景的可见性生成方法 | |
JP5005090B2 (ja) | 切削加工シミュレーション表示装置、切削加工シミュレーション表示方法、および切削加工シミュレーション表示プログラム | |
CN104737208B (zh) | 曲面细分单元中的顶点次序 | |
CN109745704B (zh) | 一种体素地形的管理方法 | |
CN105894551B (zh) | 图像绘制方法及装置 | |
CN108776986A (zh) | 一种删除网格上冗余三角形的方法 | |
CN111145356A (zh) | 一种基于Unity3D模型的切割方法 | |
TWI235341B (en) | 3D graphics rendering engine for processing an invisible fragment and a method therefor | |
WO2012140361A1 (fr) | Procédé et système de rendu d'une scène virtuelle en trois dimensions | |
WO2012140360A1 (fr) | Procede et systeme de rendu d'une scene virtuelle en trois dimensions | |
US11113878B2 (en) | Screen tile pair-based binocular rendering pipeline process and method | |
CN104966313B (zh) | 三角形重建的几何阴影图方法 | |
US20170140569A1 (en) | System and method for optimized sparse volume rendering | |
CN117541457B (zh) | 一种曲面细分顶点的缓存方法、电子设备及存储介质 | |
CN116152039B (zh) | 图像渲染的方法 | |
JP2019530070A (ja) | 優先プリミティブバッチのビニング及びソートを用いたハイブリッドレンダリング | |
CN116912395B (zh) | 基于OpenGL的图形混合渲染方法、装置及存储介质 | |
KR20000068191A (ko) | 영상 프리미티브의 고속 처리 | |
Tian et al. | Roaming of large urban scenes based on Unity 3D | |
KR930003811B1 (ko) | 3차원도형 처리방법 및 그 장치 | |
CN118351258A (zh) | 一种三角网格面法向一致性检查处理方法及系统 | |
CN117496071A (zh) | 面向Web端应用的三维模型多尺度数据重组织、渐进式传输与渲染方法 |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20181109 |