ベジェサーフェスに歪みを適用する


8

Adobe Photoshopで使用されている画像ワープ効果をシミュレートしようとしています。

長方形の画像は、3次ベジエ曲面に従って歪められます(2Dでは、すべてのZ成分は0です)。ベジエ曲面があれば、垂直歪み をそれに適用できます。d[01]

:入力ベジェサーフェス、、:出力サーフェス、 d=0d=0.8

ここに画像の説明を入力してください ここに画像の説明を入力してください

左側のバージョンから右側の出力に変換するときに、ベジェサーフェス(16ポイント)に対して何が行われますか?

回答:


5

編集:新しい画像と説明に従って回答を変更しました。

for every control point p(k, n)
   p'(k, n) = ( p(k, n) - p(k) ) * d * l(k) + p(k, n)

ここkで、は行インデックスで、nは制御点の列インデックスです。l高度係数であり、{-1、-1/3、1/3、1}と等しい。p(k)k番目の行の中心です。

根拠:

新しい画像から、赤と青の線が線の中心(基本的に(k、0)であるp(k))からその点まで描画されます。最初の線では、グラフ上のもの(赤い線)を含むすべての制御点が、その線上の同じ点に移動します。p(k、n)-p(k)は、ポイントをp(k)からp(k、n)に移動するベクトルを提供します。これは、他の方法に適用する必要があり、ポイントを目的の位置に移動します。グラフでは、d = 1なので、最初の線のすべての点が中心に移動します。これを確認するために方程式を簡単に解くことができます。d * l(0)は-1なので-p(k, n) + p(k) + p(k, n)、p(k)を与えるのはどちらかです。

2番目の線では、青い線が点から中心に向かっていますが、今回は到達する前に停止しました。それが本当に1/3からカットされているかどうかはわかりませんが、それは良い出発点になるでしょう。したがって、同じ式が適用されます。lは-1/3 dは1なので、ポイントは1/3の方法で移動します。3番目は2番目と同じですが、外側に移動するため、lは1/3になります。

最後の線では、すべての制御点がその線の中心点から移動します。あなたの線がその中心で集まるので、これは非常に明確です。

この式で発生する可能性のある唯一の問題は、1/3の仮定ですが、それが失敗する理由はわかりません。

注:インデックス付けには行、列を使用したため、x、yを使用している場合は、それらの位置を切り替える必要があります。


これは、垂直線を保護します。しかし、私はウィットベジエ曲面を働いています(平面内の16点)と私はそれだけでこれらの16個のポイントを移動することでなんとかでなければならないと信じて、ここでベジェ曲線などにポイントを計算することなく、あなたは、ベジエ曲面がどのように機能するかを、見ることができます。philipandrews.org/をsandbox / BezierSurface / bin / BezierSurface.swf
Ivan Kuckir 2016

私が正しく理解していれば、その問題の解決策を見つけたと思います。dパラメータを0.8にしてベジェサーフェスAをベジェサーフェスBまたはCからDに変形する方法を尋ねていますが、正しいですか?
Cem Kalyoncu 16

まあそれは正確な式ではありませんが、かなり近いようです。これについてもう少し考えます。数式は、少なくとも曲線上の点については正しいです。
Cem Kalyoncu 16

近づいています:)しかし、2番目の例では、Y座標も変化します。先に述べたように、すべてのポイントは線に沿って移動するため、各ポイントのd = 1の新しい位置を見つけるだけで十分であり、線形補間を行うことができます。
Ivan Kuckir 16

私は別の写真を追加しました、それはあなたを助けるかもしれません。
Ivan Kuckir 16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.