私は私のSVGに魚眼レンズ風のフィルタを実装しようと、このcodepenを発見された: http://codepen.io/johanberonius/pen/RopjYWSVG変位マップフィルタ
私はこの効果はわずか「困難」になりたい除いそれは完全に正常に動作しますが、私は「couldn jsで生成された変位マップを変更します。
var canvas = document.getElementById('canvas'),
barrel = document.getElementById('filter-image'),
width = canvas.width,
height = canvas.height,
ctx = canvas.getContext('2d');
for (var y = 0; y < height; y++) {
for (var x = 0; x < width; x++) {
var dx = x - 128,
dy = y - 128,
l = Math.sqrt(dx * dx + dy * dy),
a = l < 128 ? Math.asin(l/128) : 0,
z = l < 128 ? 255 - Math.cos(a) * 255 : 0,
r = l < 128 ? 128 + (dx/128) * (z/255) * 128 : 0,
g = l < 128 ? 128 + (dy/128) * (z/255) * 128 : 0,
o = l >= 124 ? Math.max(0, 1 - (l-124)/4) : 1;
ctx.fillStyle = 'rgba('+Math.floor(r)+','+Math.floor(g)+',0,'+o+')';
ctx.fillRect(x,y,1,1);
}
}
barrel.setAttribute('xlink:href', canvas.toDataURL());
var tx = 0,
ty = 0;
requestAnimationFrame(function updateAnimationFrame() {
tx += 0.027;
ty += 0.031;
barrel.setAttribute('x', 128 + Math.sin(tx) * 120);
barrel.setAttribute('y', 128 + Math.cos(ty) * 120);
requestAnimationFrame(updateAnimationFrame);
});
フォーミュラが私にハックするにはあまりにも進んでいます。 私はこれらのタイプのマップを生成する方法があるか、誰かが数式で私を助けることができるかどうか疑問に思っていました。
ありがとうございました!私は欲しかったフィルターをほとんど作成しましたが、このボリュームに「音量」を追加する方法は不思議です。 After EffectsのCC Sphereと同様の効果が欲しい。さて、あなたのおかげで、私は効果をよりシャープにする方法を考え出しましたが、それでも何が「音量」に関係しているのか理解できませんでした。 – Fedaikin
私は境界を逆にした値があることがわかったので、今編集しました。私は 'feColorMatrix'の値で遊ぶことは、全体の"パンチ "に最も顕著な効果があることを知っています。 – ccprog
球をエミュレートすることはできません。基本的な数学はガウス曲線です。 – ccprog