【问题标题】:For Loop - Circle instead of LinearFor Loop - 圆形而不是线性
【发布时间】:2015-12-08 14:48:10
【问题描述】:

我有一个从 Unity 中的 Texture2D (512 x 512) 获取的像素数据数组。

目前,我正在通过使用 for 循环并将外部像素设置为 Color.black 来在此纹理周围添加边框。

但有些 Texture2Ds 实际上是圆形的(就图像/照片本身而言)。我想在这些图像周围添加一个圆形边框。

典型的 for 循环(r++ 和 c++)给出了一个线性(左下角,右上角)值,这对圆不起作用,对吧?是否有某种算法可以用来使 for 循环循环(根据 r 和 c 值)?

这有意义吗?

谢谢。

【问题讨论】:

  • 不,我不这么认为。
  • 没有必要让 for 循环循环迭代(即使可能,这也远不是解决这个问题的最简单方法)。只需将rc 值与循环内的圆的方程一起使用,您就可以确定坐标是否位于给定圆内/外。有了这个逻辑,您就可以为稍微小一点的圆圈之外的像素着色,但在一个稍微大一点的圆圈内。

标签: for-loop unity3d textures geometry


【解决方案1】:

有趣的问题:)

我想不出使 for 循环“循环”的解决方案,因为 x 和 y 相互依赖,而简单的 x++ y++ 是不可能的。

一个简单的解决方案是在某个循环内计算 x 和 y。就像使用 x = r*cos(t); y = r*sin(t); 和迭代 t

我制作了一个fiddle,它使用for-loop 在html 画布上绘制圆圈:D

【讨论】:

    【解决方案2】:

    根据您希望最终结果的样子,您最好通过着色器进行修改以进行某种形式的边缘检测(不过,这确实取决于您的纹理)。

    另一种可能更简单的解决方案是在原始纹理的顶部添加第二个纹理,其中第二个纹理只是边框,其余的 alpha'd out。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      • 2017-06-28
      • 2013-12-10
      相关资源
      最近更新 更多