我知道有几种技术可以实现此目的,但是似乎没有一种是足够的。

  • 使用sobel/laplace滤镜无法找到所有正确的边缘(并找到不需要的边缘),速度很慢,并且无法控制轮廓宽度。
  • 我现在要解决的是先以纯色渲染对象的背面,并且比实际对象大一点。结果的确看起来不错,但我确实希望轮廓具有恒定的宽度。
  • 我已经尝试使用粗线框线渲染对象的背面。给我恒定的轮廓线宽度,但是如果轮廓线突然改变方向(例如在立方体上),则不建议使用线宽,产生渲染伪像并留下间隙。由于该技术的其他问题,我尚未尝试使用第三次渲染过程为每个顶点绘制线框线大小的点。

  • 有任何想法吗?

    编辑我什至看着自己用几何着色器找到边缘,如http://prideout.net/blog/?p=54中所述,但它与线框技术有同样的差距。

    编辑通过在绘制轮廓时禁用GL_DEPTH_TEST,我能够使用线框技术摆脱了渲染假象。不幸的是,我也丢失了重叠物体的轮廓。

    我的目标是获得与Dragons Lair 3游戏中的角色相同的效果。有人知道他们是怎么做到的吗?

    最佳答案

    如果您要进行真正的边缘检测,Ive发现使用卷积LoG(高斯上的拉普拉斯算子)5x5内核,将其应用于深度缓冲区并在渲染的对象上混合(可能使用体面的FSAA)可以获得很好的效果。您需要在片段着色器中进行一些调整以夹住混合轮廓,但是效果很好。 (顺便说一句,这取决于您真正想要的是什么)

    注意:

    1)拉普拉斯过滤和对数过滤是不同的东西,并产生不同的结果

    2)如果在深度缓冲区上应用卷积而不是渲染的图像,则最终会得到完全不同的结果,此外,如果需要轮廓宽度控制,则可以使用膨胀滤镜和选择性腐 eclipse 通过应用后,您将最终获得一个与标记绘制的手绘草图非常匹配的渲染,并且可以很好地控制 Nib 的大小,但要花2遍额外的时间

    关于opengl - 使用OpenGL进行轮廓/轮廓渲染,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8835453/

    10-12 00:17
    查看更多