【分享】简单分析编辑器中 Regenerate Points 的算法实现

Cocos Creator 编辑中,多边形碰撞组件中有一个 Regenerate Points 的功能,这个功能可以根据组件依附的节点上的 Sprite 组件的贴图的像素点来自动生成相应轮廓的顶点。Threshold 指明生成贴图轮廓顶点间的最小距离,值越大则生成的点越少。

03-01

白玉无冰源于兴趣,对其中的实现做一些研究。总结性的来说编辑器是分以下几步实现的。

  • 读取图片所有的像素点数据(编辑器中用的是sharp

  • 计算围成轮廓的像素点(【逆时针:箭头方向的左侧必须有像素,箭头方向的右侧必须不能有像素】,算法应该是叫做Marching_squares,也可以参考cocos2d-x中的代码CCAutoPolygon.cpp
    )

  • 计算顶点(处理Threshold, 【找最远距离,如果最大距离都小于阈值,就把中间的点全忽略】 )

  • 对结果进行坐标转换

废话偏直接见这篇推文吧

4赞

无冰大佬好久没更了,好怀恋以前一天一更的日子

666,好多人都想知道这个是怎么实现了。