2017-05-05 105 views
2

我一直在尝试使用webgl在CAD模型上渲染轮廓。最接近我达到预期的结果是fwidth和法线和眼睛向量之间的点。我发现很难控制宽度。使用webgl/opengl进行轮廓渲染

我看到了另一个基于Web浏览器和它能够做这样的事情的:

sillhouettes

我开始通过着色器挖,而最让我能想出的是,这是分析 - 实际线实体被绘制并且宽度通过呈现四边形而不是默认webgl线来实现。着色器中有一堆逻辑,我最好的猜测是顶点位置只是在每个渲染上更新。 这是一个程序模型,所以我猜测对于锥体和圆柱体,总是可以分配两条线,计算轮廓点并更新线条。

如果是这样的话,在着色器中尝试做这样的事情是否是一个好主意(也许它已经发生,我不明白它)。我可以看到一个圆柱被写入属性或制服,并计算点数。

有没有像这样的方法已经记录在某处?

编辑17年8月15日

我还没有发现任何文件或记录这个技术。但它得到了几个选票。

鉴于我确实有关于圆柱体和圆锥体的信息,我的想法是从顶点采样该参数曲面的法线,将表面推出一些可覆盖屏幕空间中一定数量像素的因子, ,并绘制粗线,从而将其与表面的实际形状剪切在一起。

回答

1

传统的基于着色器的方法是Gooch着色。原来的纸是在这里:

http://artis.imag.fr/~Cyril.Soler/DEA/NonPhotoRealisticRendering/Papers/p447-gooch.pdf

+0

我遇到了这一点,但找不到,看起来就像它的边缘它主要是关于颜色谈判的任何代码?无论哪种方式,上图中具体发生的事情是,有线条计算出线段应该是轮廓线。这与纸张中的屏幕截图不符,这不适用于螺旋弹簧?更进一步的含义,如果这个观众正在使用类似的东西,任意形状的促销,它绝对是用线条来增强它。 – pailhead