问题标签 [tessellation]

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 回答
333 浏览

opengl - 曲面细分后的 Z-fighting

奇怪的文物

我正在做opengl tessellation,这是我得到的图纸。如果我剔除背面,那些较暗的斑点往往会消失。这看起来像 Z-fighting,但我不知道应该在哪里解决这个问题(我尝试增加模型大小但未成功)

0 投票
1 回答
1544 浏览

directx - HLSL 修改 Tessellation 着色器以制作等边三角形?

细节:

我正处于程序行星生成的过程中;到目前为止,我已经完成了动态 LOD 工作,但我目前的软件算法非常慢。我决定改用 DX11 的新曲面细分功能。目前我的球体是一个细分的二十面体。(20条边都是等边三角形)

回到当我使用我的软件算法进行细分时,一个三角形会被分成四个孩子,穿过父母的中点,每次形成 Hyrule 符号......就像这样: http: //puu.sh/1xFIx

如您所见,每个细分的三角形都创建了越来越多的等边三角形,即每个三角形的形状完全相同。

但是现在我使用 GPU 在 HLSL 中进行镶嵌,结果肯定不是我想要的: http: //puu.sh/1xFx7

问题:

我可以在 Hull 和 Domain 着色器中做些什么来更改曲面细分,使其像第一张图像一样细分为一组等边三角形?

我应该使用几何着色器来做这样的事情吗?如果是这样,它会比 tessellator 慢吗?

0 投票
3 回答
1806 浏览

parameters - 使用 Tessellation 在 HLSL 中传递参数

我的问题希望非常简单,但我似乎无法正确处理数据流。问题是如何将纹理坐标和法线数据从顶点着色器通过曲面细分阶段(外壳和域着色器)传递到像素着色器进行渲染。

我遇到的问题是,在使用镶嵌之前,数据可以简单地从顶点传递到像素着色器。现在这两个着色器之间有多个步骤,一个补丁常量函数是外壳着色器,然后是域着色器。

如果有人能给我一些关于如何通过这些部分传递数据的见解,如果可能的话,也许可以用一些快速的伪代码来演示它,我将非常感激。如果您需要更多信息或我当前的代码(即使它不起作用),请告诉我。

额外信息:该程序是使用 C++ 编写的,使用 DirectX 11 api 使用 HLSL。

0 投票
3 回答
1411 浏览

c++ - OpenGL 将纹理应用于曲面细分

我正在尝试采用凹多边形并将图像作为纹理应用到它。多边形可以有多个轮廓,包括内部孔和外部“岛”。它可以是任何形状,但会比图像小并适合其中。它不一定会触及图像的边缘。

我已经成功地显示了镶嵌多边形,并纹理了一个简单的正方形,但不能让两者一起工作。

这是我加载纹理的方式:

这是曲面细分功能:

这是镶嵌顶点回调函数:

这是显示回调:

结果是一个正确绘制的多边形,没有应用纹理。

0 投票
1 回答
633 浏览

c++ - OpenGL Tessellation 回调未执行

我使用此处的示例将我的镶嵌回调移动到不同的类。

代码编译,但回调代码永远不会执行。

回调类:

回调:

我正在注册它们的镶嵌功能:

注册回调的方式有什么问题?

0 投票
1 回答
647 浏览

sql-server - 如何将 wgs84 坐标映射到 sql server b-tree 索引(不使用内置空间索引)

我希望能够将来自 WGS84 的地理点映射到为 ms sql server 格式化的单元格集,如果将相同的坐标对镶嵌到具有 4 个层次网格的 sql server 空间索引中,它将接触到的单元格集每个 256 个单元格。

sql server 2008 空间索引并不理想地满足我们的需求,因为它不支持在同一索引中同时使用地理和非地理数据。

如果我们自己知道如何进行翻译,那似乎可以让我们绕过上述限制。

此页面直观地展示了如何将地理点映射到平面单元,这些平面单元可以单独编码为 1 到最多 4 个正整数的序列。有关编号单元格的示例,请参阅链接页面中的“最深单元格规则”部分。

我基本上是在寻找关于如何做到这一点的伪代码。

任何帮助将不胜感激,如果您知道算法细节,将不胜感激。

先感谢您。

0 投票
1 回答
1742 浏览

r - 基于R中非度量距离的Voronoi图

我想在 R 中绘制 voronoi 图。我在 N 维中有一组点(比如 10)。我不想使用多维缩放(MDS)。我希望使用非度量度量来绘制 voronoi 图。有没有这个实现的包?如果没有,那么您能否建议我使用这些 N 维坐标绘制镶嵌的合适方法。

0 投票
2 回答
544 浏览

r - r中绘图区域内的子图

上表给出了我想要绘制的绘图的 x(第 1 列)和 y(第 2 列)坐标。

我希望将我的下一个细分绘制在上述细分的一个区域中。我可以使用 dd$dirsgs 获得形成镶嵌的线条。在此,镶嵌中的每条线都给出了它们的端点。前四列分别给出 x1,y1 和 x2,y2 坐标。这些坐标是线的端点。使用此数据,我可以在上述细分中的这一区域内绘制下一个子细分。

对于下一个子细分,您可以生成您选择的坐标。但我只希望它们位于上面绘制的曲面细分的一个区域中。

dd$dirsgs 中的 ind 1 和 ind2 给出了 'd' 中的点,它们由 dd$dirsgs 的前 4 列表示的线分隔。

例如,如果我们要在包含 d 中的第一个点的图中绘制子细分,那么第 1、2、9、12、17 行是形成 d 中第一个点的边界的行。使用这些信息,我们可以绘制该区域内的子细分吗?——</p>

我想我已经涵盖了理解我的问题所需的所有内容。如果还有我没有包含的更多数据,请告诉我。我会提供资料。

0 投票
1 回答
764 浏览

javascript - 二维多边形边中的矩形镶嵌,不重叠

我正在为个人项目实现一个类似地图的界面,使用带有 HTML5 画布的 Javascript,我主要是在寻找关于如何正确细分所有 2D 多边形边的想法,每边具有等长的矩形。在进一步解释之前,这里是现有界面的两个实际截图:

截屏
(来源:mavrosxristoforos.com

如您所见,每个多边形边上有“n”个矩形,长度等于“边的长度”除以“n”,宽度等于它们的长度除以 2。矩形的数量是用户设置的。我拥有的实际数据是:多边形角坐标和矩形数量。侧面始终按顺时针方向填充。

目前,如何绘制它们的伪代码如下所示:

从代码中可以很明显地看出,除了多边形边坡之外,它没有考虑任何其他内容,它是与水平轴的角度,以 -π (pi) 到 +π 为单位,由两个角坐标计算得出. 这些截图主要存在三个外观问题:

  1. 在上面的屏幕截图中,左侧的大矩形超出了多边形的一侧。
  2. 在上面的屏幕截图中,在右下角,矩形重叠(也在其他角上,但那个特定的看起来完全不自然)。
  3. 在下面的屏幕截图中,在上角,两边的矩形都脱离了原始多边形。

作为一种解决方案,我认为我可以搜索当前绘制的线和多边形边以及前一个矩形之间的线段交点,但这感觉不对,而且执行起来会很慢。

如前所述,欢迎任何想法。我不是以英语为母语的人,所以请随时纠正我的英语。

感谢您的时间!

编辑:如果最后一个矩形变成梯形,我不介意,只是为了完全覆盖多边形边。

0 投票
2 回答
760 浏览

directx - DX11 Tessellation LOD,直径不正确的细分值

我从以下withpaper NVidia TerrainTessellation WhitePaper实现了具有直径的 LoD 。在章节“船体着色器:镶嵌 LOD”第 7 页中,有一个很好的 LoD 与直径的解释。这里有一个很好的报价:

对于每个面片边缘,着色器计算边缘长度,然后在概念上拟合围绕它的球体。球体投影到屏幕空间中,其屏幕空间直径用于计算边缘的镶嵌因子。

这是我的 HullShader:

代码的一些图形解释:首先找到两个顶点之间的中心 从“圆” 项目上​​的相机sUp和sDown在Projection空间中 在此处输入图像描述 找到正交基(与相机方向成直角), 用于计算长度以计算镶嵌因子。在此处输入图像描述在此处输入图像描述

问题

镶嵌效果很好。但出于某些测试原因,我让对象旋转,因此我可以查看曲面细分是否也随着旋转而进行。有些我认为它不是100%正确的。看看平面,这个平面旋转了(1.0f,2.0f,0.0f),与深红色相比,浅红色显示出更高的镶嵌因子。绿色是 1.0 的因数。平面顶部应该比底部更详细。 带旋转的 TessellationFactor

我错过了什么?

一些测试用例

如果我删除旋转的东西,它看起来像这样: 在此处输入图像描述

如果我删除旋转并且包含这个简单版本的正交基计算:

它看起来像这样: 在此处输入图像描述

如果我不使用查找向量,这可能是个问题吗?你的 LoD 怎么样?我愿意尝试别的东西...