我正在使用 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/

10-12 05:43