在libgdx中填充2D弯曲凹面形状

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在libgdx中填充2D弯曲凹面形状相关的知识,希望对你有一定的参考价值。

在libgdx中填充弯曲凹面形状的方法有哪些?

让我们假设:

1)要渲染的形状是由彼此接近的顶点阵列构建的。

2)顶点之间的边缘是已知的。

3)顶点的位置可能随时间动态变化。我们保证不会发生自交叉(并且形状不会是空心的)。

enter image description here

最右边的图片是我试图在libgdx中渲染的(有或没有轮廓)。

从我所读到的,三角测量是一种非弯曲形状的流行方法,但为了使它看起来对于具有曲率的形状有任何好处,我想我们需要大量的顶点(以便多条线“缩小” “类似于平滑的曲线”。

答案

Triangulatin并不是唯一可以解决这个问题的方法。我不熟悉你的gfx lib但我会在低级别做这个:

  1. 将折线细分为凸的一组 您需要知道哪个线段是线,哪个线是曲线,对于曲线,您还需要知道相邻贴片的控制点,以便连接平滑。凹角边界可以通过角度变化交换符号的事实来检测,所以如果你得到了后续点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)是你的凹面边界,你应该通过它分割你的形状
  2. 填充折线 您可以使用与三角形或凸多边形相同的方法,请参阅: how to rasterize rotated rectangle Algorithm to fill triangle
  3. 渲染折线轮廓

如果您没有快速像素访问或水平线渲染可用,这是不是很好的方法。有一个简单但不那么快的选择:

  1. 渲染轮廓
  2. 洪水填补里面 这一步很慢,可能会导致更大的分辨率出现问题。

以上是关于在libgdx中填充2D弯曲凹面形状的主要内容,如果未能解决你的问题,请参考以下文章

2.Libgdx扩展学习之Box2D_刚体和形状

2.Libgdx扩展学习之Box2D_刚体和形状

2.Libgdx扩展学习之Box2D_刚体和形状

3.Libgdx扩展学习之Box2D_夹具

3.Libgdx扩展学习之Box2D_夹具

3.Libgdx扩展学习之Box2D_夹具