OpenGL(シェーダーあり)を使った画面遷移で、そのようなことをしたいです。チュートリアルなどを探していましたが、何の効果もありませんでした。どうすればその効果を達成できますか?
3 に答える
どのように始めることができるかについてのいくつかのアイデア..
- 3D シーンから開始する場合は、たとえば rendertarget を使用してテクスチャにレンダリングします。
- 同じサイズのキャンバスにランダムな多角形を描く*
- ポリゴンごとの平行移動/回転のランダム オフセットを決定する
- 画像を再描画し、元の形状がどの元のポリゴンにあるかを見つけます。そうであれば、新しいランダムに変換されたポリゴンと同じ変換でピクセルを変換します
- すべてのポリゴンの周りに黒いピクセルの境界線で仕上げます *唯一のことは、最初のポリゴンを取得する方法です。ランダムな位置からランダムな方向とランダムな長さで線を描き始め、その線から別の線を描き、ヒットするまでエッジ、次に既存の線の頂点から開始して繰り返します...
ランダムなポリゴンコードのグーグル、または長方形の三角測量 パーリンノイズ、ボロノイ図(前述)など
この種の粉砕効果の最も一般的なアルゴリズムの 1 つにボロノイ図があります。その主題を研究すると、高度に制御可能で同様の効果をもたらすアルゴリズムの詳細が得られます.
ただし、凸多角形はセルとして生成されます。あなたの画像にはいくつかの凹んだ部分がありますが、VD は非常に良い出発点です。たとえば、ボロノイ図から得られたポリゴンの一部をマージすることで、同様の効果を得ることができます。
これは、ポリゴンをいじるのを避け、より多様な効果を可能にする方法です。
単にマスクを使用してください。最初に 1 つの部分について説明します。メインのテクスチャ付きクワッドをランダムな方向に描くだけですが、2 つ目のテクスチャを使用してそのアルファを取得します。その 2 番目のテクスチャ (マスク) は、白い部分が描かれた単なる黒いイメージです。多角形だけでなく、任意の形状を持つことができることに注意してください。現在、異なるマスクを使用してメインのクワッドを数回描画するだけで、必要な効果を得ることができますが、それには多くのテクスチャが必要です。
したがって、すべてのピースに 1 つのマスク テクスチャのみを使用するには、シェーダーを使用し、マスクの値をアルファとして直接使用する代わりに、値 N (または N 付近の範囲) を使用して、ピース N のみが不透明であることを意味します。各ピースをレンダリングする前に N をインクリメントするだけです。マスクを作成するには、黒のジグザグで (イメージ エディターを使用して) ビットマップを描画し、作成したポリゴンをパレットの各グレー シェードで塗りつぶします。たくさんのピースが必要な場合は、複数のチャネルを使用できます。
ところで、ビットマップ関数を使用してそのマスクを生成するのは簡単なはずです。ビットマップを作成し、ランダムな線を描画し、それをスキャンして、空のピクセルごとに塗りつぶしを使用し、毎回色を増やします。少なくとも、ポリゴンの切断を処理するよりも簡単に思えます。
今、私が気に入っているのは、不規則なエッジを無料で作成できることです。2 番目のテクスチャがあるので、それを使用してメインのテクスチャにエフェクトを追加することもできます。たとえば、黒い境界線やさまざまな透明度レベルの粉々 になったガラスのエッジなどです。