在libgdx中对弯曲凹面形状进行颜色填充的方法有哪些?
让我们假设:
1)要渲染的形状是由一组彼此靠近的顶点构建的。
2)顶点之间的边缘是已知的。
3)顶点的位置可能会随着时间的推移而动态变化。我们保证不会发生自我交叉(并且形状不会是空心的)。
最正确的图片是我在libgdx中渲染的内容(带或不带轮廓)。
从我读过的文章来看,三角测量是一种非弯曲形状的流行方法,但是为了使它看起来对于有曲率的形状有任何好处,我想我们需要大量的顶点(这样很多行“缩小”类似于平滑的曲线。)
答案 0 :(得分:1)
Triangulatin并不是唯一可以解决这个问题的方法。我不熟悉你的gfx lib,但我会在低级别做这个:
将折线细分为凸面
您需要知道哪个线段是线,哪个线是曲线,对于曲线,您还需要知道相邻贴片的控制点,以便连接平滑。凹角边界可以通过角度变化交换符号来检测,因此如果你得到具有一致宽度规则的后续点p(0)...p(n)
那么
d(i ) = p(i+1)-p(i )
d(i-1) = p(i )-p(i-1)
n(i) = cross( d(i) , d(i-1) )
n(i).z * n(i-1).z < 0.0
所以十字产品会给你正常,如果正常交换的方向意味着绕组改变了...等式假设点位于xy
平面或平行于它。如果不是这样的话,最后一行应该是
dot( n(i) , n(i-1) ) < 0.0
如果真的p(i)
是你的凹边界,你应该用它来分割你的形状
填充折线
您可以使用与三角形或凸多边形相同的方法,参见:
渲染折线轮廓
如果您没有快速像素访问或水平线渲染可用,这是不好的方法。有一个简单但不那么快的选择:
呈现大纲
洪水填充
此步骤很慢,可能会导致更大分辨率的问题。