【问题标题】:Syncing overlay to displacement map filter将叠加层同步到置换贴图过滤器
【发布时间】:2011-12-13 07:57:03
【问题描述】:

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

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

【问题讨论】:

    标签: actionscript-3 filter mapping bitmapdata


    【解决方案1】:

    DisplacementMapFilter参考中有一个公式:

    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 颜色。使用移位运算符(>>)获取颜色分量:

    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...,而不是+。有了它,它工作得很好。
    猜你喜欢
    • 2017-10-12
    • 1970-01-01
    • 2012-03-04
    • 2017-05-10
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    相关资源
    最近更新 更多