【发布时间】:2012-09-16 12:58:13
【问题描述】:
我在使用混合模式时加入两条抗锯齿线时遇到问题,我在它们加入的点处有所下降。通过混合模式,我的意思是我通过计算线条颜色与背景颜色的比率来绘制抗锯齿线条,因此当像素的比率为例如 70% 时,新像素为 0.7*线条颜色 + 0.3*背景颜色。我的线条抗锯齿功能基本上是由错误函数制成的(尽管我认为大多数抗锯齿功能都会出现同样的问题),如下所示:
所以当两条线相遇时,一条接一条地绘制,你会得到一个下降,两条线的连接处下降到它应该处于的强度的 75%,因为在那个点上,50% 的背景被保留为第一行,然后在绘制第二行后剩下 50% 的 50%,此时应该留下 0%:
我只能假设这是绘制带有连接线的抗锯齿光栅图形的常见问题,因此它必须有一个通用的解决方案,但我不知道这是什么。谢谢!
另外:为了清楚线条是如何绘制的,线条的宽度是使用高斯函数 (e^-x*x) 绘制的,并且两端使用凸起的误差进行四舍五入职能。您可以通过在 WolframAlpha 中输入 '0.5erfc(-x-5) * 0.5erfc(x-5) * e^(-y*y)' 来查看 10 px 长水平线的示例。
【问题讨论】:
-
通常的方法是有一个绘制折线的算法,这样线之间的连接就不会像端点一样被绘制。
-
好的,那么绘制折线的算法与单线算法有何不同?我考虑过从一条线到另一条线的尖锐截止点,主要问题是关节会是有角度的,这与我的高斯抗锯齿应该产生的结果不一致(关节应该是圆形的)。
-
抱歉,我没有更多详细信息,否则我会留下答案而不是评论。多年前遇到同样的问题时,我只是使用过采样和过滤。
-
折线算法有关于如何绘制关节和端点的特定规则(您通常可以选择样式——例如,圆形或方形)。您实际上最终得到了某种明确定义的边界 - 这就是您的抗锯齿然后模糊的内容。
-
您是否查看了预组合的 Alpha 版和这个? lukepalmer.wordpress.com/2010/02/05/associative-alpha-blending
标签: algorithm graphics drawing antialiasing raster-graphics