8

私は、OpenGL ES 2.0で画像をワープするiOSアプリケーションを開発しています。OpenGL ES 2.0頂点変換アルゴリズム

私は設定やパイプラインなどをよく把握しており、現在は数学に沿って移動しています。

私の画像ワーピングの経験が無かったので、私はいくつかのアルゴリズム提案に手を差し伸べています。

現在、画像を四角形に均等に分割するグリッドタイプの方法で、ポイントの初期頂点を設定しています。次に、これらの四角形のそれぞれの中央に追加の頂点を配置します。私はインデックスを描くと、それぞれの正方形は、Xの形で4つの三角形は下の画像を参照してください含まれています。フォトショップで少し遊ん後

opengl es image vertex map

を、私はAdobeが彼らのために少し複雑なアルゴリズムを使用して気づきました人形ワープですが、標準ワープのはるかに単純化されたアルゴリズムです。あなたがここで/個人的な好みを適用するために私が最善であると思いますか?

第2に、私は頂点を動かすと、他のすべての頂点に加重変換を適用して、(選択した頂点だけが変換される以下のものではなく)エッジを滑らかにしたいと思います。ここでどのような種類のアルゴリズムを適用する必要がありますか?

opengl es image warping

+0

im facine同じ問題を解決しました。解決策を取得しますか?あなたはどうしましたか?助けてください –

+1

申し訳ありませんが、私はコードを渡すことができないように雇用主のための仕事でした。 touchesmovedメソッド内の頂点構造体を操作します。頂点を操作するときは、「アンカー」として設定した特定の点と画面の壁からの距離に基づいてウェイトを割り当てます。アンカーはどこにでも配置できます。たとえば、私は目を動かさないように瞳孔を固定しました。ウェイトが0の場合、頂点は影響を受けません。ウェイトが1の場合、完全変換が適用されます。新しいx =(水平変換*ウェイト)、new y =(垂直変換*ウェイト)。 –

+1

ありがとうございました............. –

答えて

4

各頂点は、頂点シェーダによって独立して処理されるので、頂点がそれぞれのポジションに影響を与える持つことは容易ではありません。しかし、多くの頂点がないので、CPU上で作業を行い、フレームごとに頂点属性を動的に更新するのがよいはずです。

あなたが探しているのは、サーフェスがゴムシートのように機能するようになっているからです。ゴムシートの動的シミュレーションを実行するとどうなりますか? Jeff Lander'sのように、完全な3Dで布シミュレーションに良い記事がたくさんあります。あなたのアプリケーションは、これらの技術を単純化することができます。私は以前にimplemented a simulation like thisを3Dで持っています。生成された頂点を元のグリッド位置に引き付ける力が必要でした。シミュレーションが開始される前に、生成されたピクセルに頂点を引き付ける同様の力を与えることができます。これは、単独で放置すると元の状態に戻り、より遠い頂点でのドラッグの影響を徐々に減らします。

関連する問題