有没有办法创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而言:并非没有。
- iOS – 无法使用CIFilter处理图像
- iOS:如何高效地模糊图像?
- CoreImage的内存泄漏
- “执行昂贵的无压印操作!” – 这是什么,以及如何解决它?
- 将核心图像滤镜(CIBumpDistortion)应用于图像的一个部分+改变CIFilter的select和强度的半径
- UIGraphicsBeginImageContext必须是视网膜感知?
- CIDetector不会释放内存 – swift
- 使用iOS 5 AV Foundation和core-image实时确定一张纸的边angular
- CGImageDestinationFinalize或UIImageJPEGRepresentation – 在IOS 10上保存大文件时发生崩溃