问题标签 [tesselation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
352 浏览

c++ - API 类似于 GLUTesselator?

我正在寻找一个开源的 API,它可以将顶点的轮廓作为输入并返回三角形的顶点。我也希望它支持不同的缠绕规则。谢谢

0 投票
1 回答
1755 浏览

c++ - 用于实时细分的 GLUTesselator?

我正在尝试使用 OpenGL 制作一个矢量绘图应用程序,这将允许用户实时查看结果。我设置它的方式是使用边缘标志回调,因此 glu tesselator 只输出三角形,然后我将其传递给 VBO。我试图让我所有的算法尽可能快,这不是我的问题所在。根据一些代码分析器,我在调用 GLUTessEndPolygon() 时出现了大幅减速,这是制作多边形的函数。我发现当形状超过 100 个输入顶点时,它会变得非常缓慢,并且基本上破坏了我为优化其他所有内容所做的所有努力。我能做些什么?我提供(0,0,1)的法线。我还尝试了 GL 红皮书中的所有提示。有没有办法让镶嵌器镶嵌得更快但精度更低?

谢谢

0 投票
1 回答
1063 浏览

c++ - GLU Tesselator 说:“需要组合回调”但我定义了一个回调

我使用以下方法注册了 CALLBACK:

scbCombine直接在同一个.cpp文件中的函数在哪里:

当我使用测试它时,它"scbCombine \n"会打印在控制台中!!!然后在调用 CALLBACK 函数后,tesselator 调用错误回调并显示消息:“需要组合回调”(!!)

我的应用程序中已经有另外两个镶嵌器,它们工作正常。但最后一个没有。我尽可能将这一个的代码与另一个的代码进行比较。但我不明白为什么它不起作用。

cbCombine方法(开头没有“s”)是这样的:

但是设置outData为零不可能是问题:我已经用其他镶嵌器之一做到了这一点......

我快疯了......我已经花了几个小时来解决这个问题

谢谢

0 投票
3 回答
2597 浏览

algorithm - 我有一个 OpenGL 镶嵌球体,我想在其中切一个圆柱形孔

我正在开发一个软件,它生成一个多边形网格来表示一个球体,我想在球体上切一个洞。这个多边形网格只是球体表面的覆盖。我很清楚如何确定哪些多边形会与我的洞相交,我可以将它们从我的收藏中删除,但在那之后我有点困惑。我想知道是否有人可以帮助我了解高级概念?

基本上,我设想了三种情况:

对于#1,我可以对此进行测试(不删除多边形)并采取相应的行动(什么也不做)。对于#2 和#3,我不确定如何重新镶嵌我的球体以解决这个洞。对于#3,我有一个想法,基本上是以下几行:

这个极其简化的算法有一些我想填补的“洞”。例如,我实际上并不希望我的洞有 4 个边——它应该是一个圆柱体,或者至少是一个圆柱体的镶嵌表示。我也不确定如何制作这些新的多边形以使我的球体在镶嵌表面上留有一个洞。

我不知道如何处理场景 #2。

0 投票
2 回答
2719 浏览

r - 在不规则网格上绘制和着色数据

我有 (x, y, z) 形式的数据,其中 x 和 y 不在常规网格上。我希望显示这些数据的 2D 颜色图,其中强度(例如灰度)映射到 z 变量。一个明显的解决方案是在规则网格上插值(见下文),

在此处输入图像描述

但是,这会丢失初始网格的信息(具有实际数据的点的位置),这些信息在某些位置可能非常精细或非常粗糙。我更喜欢使用三角形的 delaunay 平铺,它准确地代表了原始数据点的实际位置和密度。

理想情况下,解决方案将

  • 在绘图函数之外计算曲面细分,以便可以使用 、 或 基本图形来绘制生成ggplot2lattice多边形

  • 快点。在我的真实示例中(约 1e5 分),曲面细分的计算deldir可能非常缓慢。

“镶嵌”是指 Delaunay 三角形或 Voronoi 图,尽管我更喜欢前者。然而,它带来了基于原始数据点对每个三角形的颜色进行插值的额外复杂性。

0 投票
1 回答
794 浏览

opengl - 为什么 gluTess 在第一次通话时不工作?

我正在使用 gluTess* 函数来绘制非凸多边形。为了避免在每一步都重新进行镶嵌,我将结果存储在一个数组中,并使用 OpenGL 的顶点数组功能进行绘制。

我的问题是,由于某种原因,我第一次使用 gluTess* 时只绘制了部分三角形。如果我强制重新创建 gluTess*,那么一切都很好。

请注意,为了重新创建 gluTess*,我完全销毁包含顶点数组的对象并重新创建它(这会强制重新计算顶点数组对象)。

知道为什么会这样吗?

一些随机的想法:

  • 可能是因为对于第一个 OpenGL 调用,窗口还没有达到完整大小吗?
  • 我是否需要设置一些 OpenGL 状态,这将在稍后完成,但不是在第一次调用时完成?

谢谢。

编辑:作为测试,我刚刚创建、销毁并重新创建了顶点数组。它解决了问题。这意味着:在 OpenGL 状态没有任何变化的情况下,第一次调用 gluTess* 无法正确细分多边形。但是第二个成功了。以前有人注意到吗?

编辑(2):这是代码:

随着第二次调用成功,我怀疑 beginVA、endVA 和 vertexVA 工作正常(正如我所说,第二次调用是通过破坏主要保存顶点数组的数据结构 VA 进行的)。

编辑(3):这是缺少的代码:

编辑(4):最后,错误出现在其他地方。我一定是累了,我使用了一个 std::vector 来存储 combine 函数的结果。我不知道为什么后来它起作用了,但是它肯定是正常的,它第一次不起作用!对不起,我现在关闭这个话题。

0 投票
2 回答
1709 浏览

opengl - 有没有办法强制 GLUtessellator 只使用 GL_TRIANGLES?

我正在尝试使用 GLUtesselator 在 OpenGL 中生成 3D 挤压文本。以下是相关代码:

如果我相信第 11 章中的红皮书,

...如果有一个与启用边缘标志的 GLU_TESS_EDGE_FLAG 关联的回调,则仅使用 GL_TRIANGLES 调用 GLU_TESS_BEGIN 回调。

那么我相信我应该只使用GL_TRIANGLES.

但是,我可以看到在我的自定义 tessellator 回调中调用的类型可以是或中GL_TRIANGLE_FAN的任何一个。我只问是否有办法强制执行此操作,因为我太忙于创建一个可以处理除or之外的任何其他内容的 VBO 。GL_TRIANGLE_STRIPGL_TRIANGLESGL_QUADSGL_TRIANGLES

0 投票
2 回答
949 浏览

c - 使用不同颜色的三角形镶嵌球体

我正在编写一个函数来生成一个使用三角形来细分它的球体,但我想要的是三角形都有不同的颜色。但是,当我运行代码时,它会创建一个球体,但颜色范围从浅蓝色到黑色,根本没有绿色或红色,并且颜色重复,这不是我想要的。

这是一段代码。整个代码可以生成一个球体,但我真正坚持的是颜色。

triangles是一个vector<vector<Vertex3>>包含构成这个球体的所有三角形顶点的集合。

在此处输入图像描述

0 投票
2 回答
514 浏览

directx - 哪个更快:在执行或镶嵌之前创建详细的网格?

为简单起见,让我们考虑球体。假设我有一个球体,在执行之前我知道半径、位置和三角形计数。假设三角形数量足够大(例如~50k 三角形)。

事先创建这个球体网格并将所有 50k 三角形流式传输到显卡会更快,还是发送单个点(表示球体的中心)并使用曲面细分和几何着色器构建球体会更快在 GPU 上?

如果我在不同的位置有 100 个这样的球体,它还会更快吗?我可以使用船体/几何着色器来创建可以与实例化结合的东西吗?

0 投票
0 回答
320 浏览

opengl - GLUtesselator:零面积三角形和 T 形交点的问题

当我尝试使用 GLUtesselator 对文本实体进行三角测量时遇到了这个问题。但是,它可以在使用 GLUtesselator 对任何多边形进行三角剖分期间发生。问题是有时 GLUtesselator 会生成面积为零的三角形。大多数时候您可以忽略它们,但在某些情况下它们不能被忽略。我试图找到一个解决方案,以便给定多边形的最终三角剖分没有任何零面积三角形或 T 形交点。据我所知,GLUtesselator 是可用的最强大和最稳定的 tesselator 之一,所以我想坚持下去,不介意做一些后处理来修复三角剖分,而不是自己编写一个新的 tesselator。

我将尝试演示字符“H”的镶嵌问题。请注意,我是 stackflow 的新用户,所以我还不能发布图片,没有图片就不可能解释这个问题,所以我只是将 URL 发布到我描述问题的博客上。您也可以在 GLUtesselator 上查看它:零面积三角形和 T 形交点的问题http://www.dixittech.com/blog

我认为这是一个非常基本的问题,它的解决方案将使许多在类似领域工作的开发人员受益。我相信我不是第一个偶然发现它的人。有什么建议可以做到吗?任何替代方法也非常受欢迎。