使用单通道线框渲染进行边缘检测

时间:2016-09-04 22:50:56

标签: opengl edge-detection

我想实现典型的CAD软件,因此需要边缘检测算法来绘制各种网格的轮廓。剪影包括各种物体的轮廓,脊和折痕。以下是在Blender中创建的立方体示例,其中轮廓由粗橙线组成:

enter image description here

我想使用几何方法,其中线框被绘制在对象的顶部,而内部线条(如对角线)被省略。线框渲染描述为here。在本文中,几何着色器用于绘制线框。 还解释了必须设置每顶点属性以决定是否应该省略一行。

我的问题是:我怎么能决定省略哪些行?顺便说一句,我使用OpenGL作为渲染API。

编辑:为了澄清,我真的想画出构成轮廓的边缘,而不是任何对角线。这是我想要实现的一个例子:

enter image description here

2 个答案:

答案 0 :(得分:1)

从您的示例图片中我推断出您想要增强

  • 轮廓边缘,即那些属于投影轮廓的边缘,
  • 显着边缘,即连接两个倾斜面的那些边缘。

前者是通过观察面部的方向来确定的:面部是"面对"当观察者在半空间之外时,它会划界,反之亦然。轮廓边缘是属于面对面和非面对面的轮廓边缘。请注意,这是一个依赖于查看器的属性。

凸出边缘使得它连接两个面,形成足够大的角度,使得连接被认为是不光滑的。 (角度阈值取决于您。)这是与查看者无关的属性。

答案 1 :(得分:0)

考虑自由泳 https://www.blender.org/manual/en/render/freestyle/index.html

  

Freestyle是一种基于边缘和线条的非真实感(NPR)渲染>引擎。它依赖于网格数据和z深度信息来在>选定的边缘类型上绘制线条。可以添加各种线条样式以生成艺术(“手绘”,“绘画”等)或技术(硬线)外观。

我还没有使用它,但我打算尝试从3d模型创建线条图。