有没有办法创build一个SKSpriteNode的CGPath匹配轮廓?

我的目标是创build一个匹配SKSpriteNode轮廓的CGPath。

这对创buildSKSpriteNodes的发光/轮廓以及物理path很有用。

有一个想法,我有,但我没有真正与CIImage很多,所以我不知道是否有一种方法来访问/修改像素级的图像。

那么也许我可以将这样的东西移植到Objective-C:

http://www.sakri.net/blog/2009/05/28/detecting-edge-pixels-with-marching-squares-algorithm/

对于使这个过程自动化的其他方法也非常开放,而不是为我为物理或轮廓/发光效果制作的每个精灵创build形状path。

你在找什么叫做轮廓跟踪algorithm 。 摩尔邻居跟踪是stream行的,对于图像和地图非常适用。 但是请检查替代品,因为它们可能更适合你的目的。

如果不是相同的(类)algorithm,AFAIK游行方块和轮廓跟踪密切相关。

Kobold Kit中包含了一个tilemaps实现(从tile创build物理形状)。 algorithm的主体在KKTilemapLayerContourTracer.m的traceContours方法中 。

它看起来比实际情况要复杂得多,另一方面需要花费一些时间,因为它是一种“步行”algorithm,这意味着在当前步骤中使用先前步骤的结果来做出决定。

KK的实现还包括一些针对tilemaps的小修改(即两个或多个水平或垂直连接的tile成为一条线,而不是将线划分为拼贴大小的片段)。 它也是用一个自定义点arrays结构创build的,当我将它移植到SK时,我决定继续这样做会更容易,只有在最后才将点数组转换为CGPath对象。

如果您可以安全地假定您要跟踪的形状不会触及边界,并且不能有任何仅对angular连接的图块,则可以进行某些优化。 当你为了自己的目的而实际实现algorithm时,所有这一切变得更加清晰。

但是,就现成的,适用于所有目的的解决scheme而言:并非没有。