在libgdx中填充2D弯曲凹面形状
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在libgdx中填充2D弯曲凹面形状相关的知识,希望对你有一定的参考价值。
在libgdx中填充弯曲凹面形状的方法有哪些?
让我们假设:
1)要渲染的形状是由彼此接近的顶点阵列构建的。
2)顶点之间的边缘是已知的。
3)顶点的位置可能随时间动态变化。我们保证不会发生自交叉(并且形状不会是空心的)。
最右边的图片是我试图在libgdx中渲染的(有或没有轮廓)。
从我所读到的,三角测量是一种非弯曲形状的流行方法,但为了使它看起来对于具有曲率的形状有任何好处,我想我们需要大量的顶点(以便多条线“缩小” “类似于平滑的曲线”。
答案
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)
是你的凹面边界,你应该通过它分割你的形状 - 填充折线 您可以使用与三角形或凸多边形相同的方法,请参阅: how to rasterize rotated rectangle Algorithm to fill triangle
- 渲染折线轮廓
如果您没有快速像素访问或水平线渲染可用,这是不是很好的方法。有一个简单但不那么快的选择:
- 渲染轮廓
- 洪水填补里面 这一步很慢,可能会导致更大的分辨率出现问题。
以上是关于在libgdx中填充2D弯曲凹面形状的主要内容,如果未能解决你的问题,请参考以下文章