如何使用边缘和内部镶嵌因子完成三角形补丁镶嵌?

Posted

技术标签:

【中文标题】如何使用边缘和内部镶嵌因子完成三角形补丁镶嵌?【英文标题】:How triangle patch tessellation is done using edge and inner tessellation factors? 【发布时间】:2016-10-05 10:57:11 【问题描述】:

我只是在学习镶嵌,我遇到了下面的三角形补丁镶嵌示例,但我不确定下面的几何图形是如何生成的。有人可以帮我解决这个问题吗?我基本上不确定边缘镶嵌和内部镶嵌是如何制作这个数字的。

【问题讨论】:

是内部部分让您感到困惑还是外部边缘部分?因为后者看起来相当琐碎且容易理解。 内部基本上4是如何产生这样的环 相关:***.com/questions/24083656/tessellation-shader-opengl 【参考方案1】:

细分级别指定将生成的边数。因此,细分级别为 1 意味着一个边缘。又名:没有镶嵌。

所以这解释了外部层次。根据标准的规定,每条边都在外部细分级别数组中分配了一个索引。您提供了细分级别 1、2 和 3。因此,一条边被“细分”为一条边。第二个被细分为 2 个边缘,第三个被细分为三个。

我想令人困惑的部分是内部细分级别的工作原理。三角形镶嵌是基于在外部三角形内生成同心三角形来定义的。但是生成的同心三角形的数量是内部细分级别的一半,向下舍入。

令 N 为内部细分级别。让 K 从 1 变为 N/2,向下取整。因此,K 代表每个同心内三角形,K = 1 代表最外层内三角形(但不是外三角形)。

内三角形的边总是镶嵌成相同数量的边。内三角形边细分成的边数为N - 2K

因此,如果我们的内部曲面细分级别为 5,则将有 2 个内部三角形。第一个内三角形有 3 条边,第二个有 1 条边。

但是当 N 是偶数时,这个方程会发生一些奇怪的事情。如果你有,就像你的情况一样,N = 4,那么会有2个内三角形。第一个内部三角形将被细分为 4 - 2 * 1 = 2 条边。第二个将被细分为 4 - 2 * 2 = 0 个边。

现在我们有了一个禅宗公案:没有边的三角形是什么样子的?

它看起来像一个顶点。这正是你在中心所拥有的。你有一个顶点,它的边是围绕它的三角形。

至于三角形之间的边缘,它就是将各种镶嵌点转换成一整套三角形。

下图展示了一个由各种内部和统一外部 tessfactors 镶嵌的三角形:

【讨论】:

非常感谢,这让我明白了......顺便说一句,你在哪里找到的?我有一些资源,但没有人解释这个 @BharatAhuja:The OpenGL specification。这不是最容易阅读的东西,但它确实有几个有用的图表可以帮助您了解更难的部分。

以上是关于如何使用边缘和内部镶嵌因子完成三角形补丁镶嵌?的主要内容,如果未能解决你的问题,请参考以下文章

来自 voronoi 镶嵌的 Delaunay 三角剖分

为啥我的三角形在镶嵌后不显示? OpenGL

寻找三角形镶嵌的最近邻

通过平铺三角形来镶嵌任意多边形

gis镶嵌中一个影像有黑底是为啥

Python_函数的镶嵌和作用域链_26