- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试以线框样式渲染 openGL (3.3) 中的对象,但仅渲染其锐利边缘(即,如果相邻的面法线具有特定的增量角)及其轮廓/轮廓/边界。我的数据结构是一个三角形网格,只存储了三角形及其顶点。我调查了"Hardware Determined Edge Features" by Morgan McGuire and John F. Hughes和 "Hardware Generated Object Silhouettes" by Michal Valient两者都在线计算边缘/面法线/轮廓,这就是为什么它们都必须实现一些“解决方法”才能使用 GPU 进行边缘确定。
我认为最好在离线时确定锐边,并以某种方式存储此信息以供以后渲染,并根据视点在线确定对象的轮廓/轮廓/边界。
在搜索过程中,我偶然发现了 CGAL、half-edges、OpenMesh,但没有任何使用经验。
我的问题是:
如何确定锐边?或者遍历网格,创建邻接表并测试所有边? (叉积得到面法线和点积得到它们之间的角度)
如何以一种好的方式存储它,以便以后能够轻松渲染它?为钝边创建退化三角形?这样会丢失太多信息吗?使用存储线条并绘制它们的格式?然后如何渲染它们?
如何在线确定轮廓/剪影?
这是一个宽泛的问题,但我希望有人能指导我一个方向,或者甚至可能以前用提到的库之一(CGAL、OpenMesh)做过这个。
最佳答案
如果我没记错的话,锋利的边缘总是取决于观点。您必须有一个“观点”来决定法线是指向前面还是后面。
这就是它经常在几何着色器中完成的,而不是只在 CPU 上完成一次(如果你想移动相机就无法工作)。
对于几何着色器技术,您需要发送三角形 + 它们的邻接关系。这可以使用 halfedges 结构(快速简单的方法)只计算一次,或者你可以有一个像
这样的循环for each triangle t1
for each triangle t2
if t2 has 2 indices common with t1 then
add t2 to t1 adjacency list
endif
endfor
endfor
然后您使用此信息构建您的索引列表(您将发送给 GPU),它可能看起来像
for each triangle t1
indexList.append(t1.a, t1.b, t1.c)
for each triangle t2 in t1 adjacency
idx = find the index not common with t1
indexList.append(idx)
endfor
endfor
关于c++ - 从三角形网格及其轮廓中提取锐边并使用 openGL 进行渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36179911/
我有一个不规则形状的元素(比方说图标)。 我想要围绕它的某种轮廓,以符合特定颜色的形状。此轮廓的颜色必须均匀地围绕形状,即与形状各处的距离相同,并且没有颜色渐变。 我发现使用的是 css 选项 fil
这部分代码我总是出错 &contours = ((contours.h_next) -> h_next); contours.h_next = ((contours.h_next) -> h_next
我通过 css (:after) 创建了 3 个圆圈,使用一些背景颜色,边框看起来不规则。有什么解决办法吗? 在这里您可以看到问题:https://flowersliving.com/cpt_01/a
使用这个: background: -moz-linear-gradient(315deg, transparent 10px, black 10px); 如何在不使用 border 的情况下围绕它创
我想计算二元 NxM 矩阵中某个形状周围的凸包。凸包算法需要一个坐标列表,所以我采用 numpy.argwhere(im) 来获得所有形状点坐标。然而,这些点中的大多数对凸包没有贡献(它们位于形状的内
如何删除从下拉菜单中选择元素时显示的虚线边框/轮廓? 您可以看到显示了虚线边框/轮廓,我想删除它(在 Firefox 中截取的屏幕截图)。 尝试下面的解决方案并没有删除它: select:focus,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我正在使用 Qt4 GraphicsView 框架绘制一些多边形,并且允许用户放大和缩小绘图。我希望多边形随着用户在 View 中更改缩放级别(比例)而变得越来越小,但是有没有办法使轮廓厚度始终保持不
我在 C# 中有一个 Vector3 点列表,我需要计算这些点的凹轮廓。确实有很多引用资料,尤其是 -convex- 分辨率(我已经成功实现了,多亏了 graham 的算法), 但是,由于我现在需要有
注: r 中的解决方案, python , java ,或者如果需要,c++或 c#是需要的。 我正在尝试根据运输时间绘制轮廓。更清楚地说,我想将具有相似旅行时间(比如说 10 分钟间隔)的点聚集到特
假设我在图像上找到了轮廓。在图像 2 上找到此轮廓位置的最佳方法是什么? 我看到两个选项:要么我用白线绘制轮廓并匹配图像 2 上的图像,要么我以某种方式(这甚至可能吗?)直接匹配图像 2 上的轮廓。
我一直在研究细菌的图像,希望从图像中获取细菌的数量,还需要根据特定的形状和大小对细菌进行分类。 我正在使用opencv python。现在,我使用轮廓法。 contours,hierarchy
我无法区分以下两个轮廓。 cv2.contourArea两者的值相同。在Python中有什么功能可以区分它们吗? 最佳答案 要区分填充轮廓和未填充轮廓,可以在使用 cv2.findContours 查
是否可以根据 Activity 配置文件的某些表达式来注册bean前任。 @Profile(!prod) @Profile(name!="test") 我有一种情况,我需要根据许多不同的条件配
我有一个由多个 CAShapeLayer 组成的 3D 相似图形对象。必须抚摸所有形状(天花板和墙壁)。有些形状共享一条边 - 这似乎是问题的根源。 然而,轮廓似乎是围绕另一个形状的现有轮廓绘制的。所
有谁知道,是否可以在用户使用顺序导航(TAB 按钮)时在输入元素周围显示轮廓,并在用户用鼠标单击此输入元素时隐藏轮廓?有没有人实现过这种行为? 我在 CSS 文件中的 :focus 选择器上使用这个属
这是我在 StackOverflow 上的第一个问题,所以我会尝试以正确的方式格式化它。 基本上,我有一个带有边框和轮廓的 div。悬停时,div 也会有一个阴影,当然,它应该在轮廓之外。这适用于所有
我在 Opencv 2.9 (C++) 中使用 findContours。我得到的是一个 vector> contours,它描述了我的轮廓。假设我有一个矩形,其轮廓存储在 vector 中。接下来我
我有一个 div,它有附加的子 div,定位在父 div 之外。 我希望父 div 有一个轮廓 onclick,但轮廓延伸到子 div 周围。 有没有办法让轮廓完全围绕父 div。 我不能使用边框,因
我正在尝试在彩色图标周围设置实线边框。 应该足够直截了当,显然它适用于字形,但我无法让它适用于 我试过... // like this fiddle: http://jsfiddle.net/9s
我是一名优秀的程序员,十分优秀!