Actionscript 3 同步覆盖到置换贴图过滤器

Actionscript 3 同步覆盖到置换贴图过滤器,actionscript-3,filter,mapping,bitmapdata,Actionscript 3,Filter,Mapping,Bitmapdata,我正在使用置换贴图过滤器在平面贴图上创建一个类似球体的效果。我的问题是,我还想将一些标签同步到此地图。我在平面地图上有它们位置的x/y坐标,但我需要将它们映射到现在被置换的图像 我希望能够使用包含置换贴图的BitmapData来执行此操作,以便更改位图会同时更改置换过滤器和标签位置。此外,标签不会是静态的,准确度相当重要。参考中有一个公式: dstPixel[x, y] = srcPixel[ x + ((componentX(x, y) - 128) * scaleX) / 256

我正在使用
置换贴图过滤器
在平面贴图上创建一个类似球体的效果。我的问题是,我还想将一些标签同步到此地图。我在平面地图上有它们位置的x/y坐标,但我需要将它们映射到现在被置换的图像

我希望能够使用包含置换贴图的BitmapData来执行此操作,以便更改位图会同时更改置换过滤器和标签位置。此外,标签不会是静态的,准确度相当重要。

参考中有一个公式:

dstPixel[x, y] =
  srcPixel[
    x + ((componentX(x, y) - 128) * scaleX) / 256,
    y + ((componentY(x, y) - 128) *scaleY) / 256)
  ]
componentX/Y
是位图中的颜色通道(您可以将任何通道绑定到坐标)。
据我所知,您需要像过滤器一样移动地图标签。只需获取标签坐标(x,y),使用
getPixel32(x,y)
对源位图进行采样。然后你需要找出x,y的字节-我猜默认情况下,分别是R,G分量。然后使用公式获得替换的标签坐标。
注意:getPixel32以ARGB格式返回uint颜色。使用shift运算符(
>
)获取颜色分量:

uint ARGB = bitmap.getPixel32(x, y);
int B = ARGB & 0xFF;
int G = (ARGB >> 8) & 0xFF;
int R = (ARGB >> 16) & 0xFF;

谢谢,但是我发现这个算法是个谎言。它是
x-((componentX(x,…
y-)((componentY(x…
,而不是
+
)这样,它工作得很好。