我正在使用 DisplacementMapFilter
在平面 map 上创建类似地球的效果。我的问题是,我还想将一些标签同步到这张 map 。我在平面 map 上有它们位置的 x/y 坐标,但我需要将它们映射到现在位移的图像上。
我希望能够使用包含置换贴图的 BitmapData 来执行此操作,以便更改位图会同时更改置换过滤器和标签位置。此外,标签不会是静态的,准确性非常重要。
最佳答案
DisplacementMapFilter 引用中有一个公式:
dstPixel[x, y] =
srcPixel[
x + ((componentX(x, y) - 128) * scaleX) / 256,
y + ((componentY(x, y) - 128) *scaleY) / 256)
]
componentX/Y
是位图中的颜色 channel (您可以将任何 channel 绑定(bind)到坐标)。据我了解,您需要像过滤器一样移动 map 标签。只需获取标签坐标 (x, y),使用
getPixel32(x, y)
示例源位图。然后你需要弄清楚 x, y 取哪些字节 - 我猜默认情况下它分别是 R, G 组件。然后使用公式获取位移标签坐标。注意:getPixel32 以 ARGB 格式返回 uint 颜色。使用移位运算符 (
>>
) 获取颜色分量:uint ARGB = bitmap.getPixel32(x, y);
int B = ARGB & 0xFF;
int G = (ARGB >> 8) & 0xFF;
int R = (ARGB >> 16) & 0xFF;
关于actionscript-3 - 同步叠加到置换贴图过滤器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8485930/