3

我需要具有映射功能的 Action Script3 / Pixel Bender 模糊滤镜。

我们有这样的图像,我们想应用这样的模糊贴图来获得这样的结果

替代文字 http://livedocs.adobe.com/en_US/AfterEffects/8.0/images/ef_182.png

它也被称为复合模糊效果。

有人看到用 AS3/Pixel Bender 完成了吗?

有谁知道在哪里下载这种效果的源代码?

4

3 回答 3

3

您可以在其原始图像上绘制一个模糊图像(将 alpha 通道更改为模糊值图)来模拟效果。

因为 Flash 中的像素弯曲器不支持循环,所以很难创建一个好的模糊滤镜。

于 2009-11-15T11:27:34.443 回答
3

我在这里有一个非常古老的预像素弯曲器版本:http ://www.quasimondo.com/archives/000564.php(包括 as2 源)

它的工作原理是创建几个模糊半径从 0(或您选择的最小半径)增加到最大半径的模糊位图。你做的模糊步骤越多,质量就越好。使用paletteMap 过滤器,您可以为每个模糊层创建蒙版,从而在每个连续层之间存在渐变重叠。然后你使用它的蒙版在下一个模糊层上绘制每个模糊层。

这第二个混合阶段我现在可能更愿意使用像素弯曲器。

于 2010-06-23T15:42:28.813 回答
2

以下 .pbk 应该几乎可以做到。您可以查看评论以了解如何加深模糊效果。

<languageVersion : 1.0;>
kernel NewFilter
<   namespace : "Your Namespace";
    vendor : "Your Vendor";
    version : 1;
    description : "your description";
>
{
    input image4 src1;
    input image4 src2;
    output pixel4 dst;

    void
    evaluatePixel()
    {
        float2 pos = outCoord();

        // based on the current whiteness of pixel in src2 blur by a percentage.
        float4 val = sampleNearest(src2,pos);
        float percent = val[0];

        // this takes into account only the closest level of pixels to make the blur more in depth 
        // you can add the next 16 or even the 24 after that. 
        float4 pix = sampleNearest(src1,pos);
        float4 pixNE = sampleNearest(src1,float2(pos.x+1.0, pos.y+1.0));
        float4 pixE = sampleNearest(src1,float2(pos.x+1.0, pos.y));
        float4 pixSE = sampleNearest(src1,float2(pos.x+1.0, pos.y-1.0));
        float4 pixS = sampleNearest(src1,float2(pos.x, pos.y-1.0));
        float4 pixSW = sampleNearest(src1,float2(pos.x-1.0, pos.y-1.0));
        float4 pixW = sampleNearest(src1,float2(pos.x-1.0, pos.y));
        float4 pixNW = sampleNearest(src1,float2(pos.x-1.0, pos.y+1.0));
        float4 pixN = sampleNearest(src1,float2(pos.x, pos.y+1.0));

        float4 result;
        // the result is the whiteness percentage of the original pixel averaged with the surrounding pixels.
        // if you added more of the surrounding pixels you can consider them in the weighted average also and get a deeper blur.
        result[0] = percent*pix[0]+(1.0-percent)*(pixNE[0]+pixE[0]+pixSE[0]+pixS[0]+pixSW[0]+pixW[0]+pixNW[0]+pixN[0])/8.0;
        result[1] = percent*pix[1]+(1.0-percent)*(pixNE[1]+pixE[1]+pixSE[1]+pixS[1]+pixSW[1]+pixW[1]+pixNW[1]+pixN[1])/8.0;
        result[2] = percent*pix[2]+(1.0-percent)*(pixNE[2]+pixE[2]+pixSE[2]+pixS[2]+pixSW[2]+pixW[2]+pixNW[2]+pixN[2])/8.0;
        result[3] = pix[3];

        dst = result;
    }
}
于 2009-11-23T22:52:46.860 回答