gpt4 book ai didi

java - 获取图像的顶点?

转载 作者:行者123 更新时间:2023-12-01 04:47:29 24 4
gpt4 key购买 nike

我正在使用 Sprite 艺术,我需要为碰撞检测器生成一个多边形(顶点数组)。

我有一个 getPixel(x, y) 方法,可以用来获取像素的颜色。我不需要任何花哨的颜色检测或任何东西,只需要实心像素和透明像素。这是我在我的大脑开始融化之前开始做的事情:

boolean[] hasColor = new boolean[size];

for (int i = 0; i < size; i++) {
int row;
row = i % width;
if ((pixmap.getPixel(i, row) != 0) || (pixmap.getPixel(row, i) != -256)) {
hasColor[i] = true;
} else {
hasColor[i] = false;
}
}

这应该跟踪哪些像素是空的,哪些不是。但我不知道我应该去哪里。

有什么算法或东西可以帮助我吗?有人可以提供意见吗?

最佳答案

您拥有的是光栅图稿。

您需要的是 vector 轮廓。

从 vector 转换为栅格很容易,从栅格转换为 vector 则不然。

这是一种可能的工作流程:

  1. 将您的图稿转换为黑白图像(如像素颜色存在/不存在矩阵)。
  2. 使用 Adob​​e Illustrator 的“实时跟踪”功能对此图像进行矢量化。
  3. 将轮廓多边形导出为您可以轻松读取的格式。
  4. 将此用作碰撞检测的输入。

这是另一种方法:

A) 假设轮廓看起来像六边形,如下所示:

       *****
* *
* *
* *
* *
* *
*****

B) 将“拟合”定义为轮廓的优度,通过检查六边形内部的像素百分比来计算(不一定是上面显示的规则形状的图形)。C) 更改顶点的位置,直到找到最佳拟合(或直到您感到疲倦)。

步骤 (C) 当然​​是最难的一步。另外,如果您的 Sprite 需要更多顶点,您可能需要从八边形/正边形开始。

关于java - 获取图像的顶点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15595762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com