4

OpenGLでAdobePhotoshopのドロップシャドウレイヤースタイルを実装しようとしています。Photoshopの「サイズ」プロパティで制御されるシャドウのエッジにぼかしを追加する必要があります。最初は、典型的なガウスぼかしアルゴリズムを実行するのが良いと思いました。しかし、効果を詳しく見ると、それは明らかです。ガウスぼかしは、ラスターのすべてのフラグメントを均一に処理するのと同じ効果はありません。Photoshopでは、ぼかし領域は常にシャドウシェイプのエッジに沿っており、シェイプの中心に向かって広くなります。誰でもポイントできます。 Photoshopのように、サイズパラメータに基づいてエッジの形状をぼかすアルゴリズムまたはGLSLの例に?

更新:これは、Euclidian Distanceフィールドと、 このValveペーパー+最近の「OpenGLInsights」で概説されている手法を使用した最終結果です。 ここに画像の説明を入力してください

4

1 に答える 1

5

オープンソースプロジェクトでPhotoshopレイヤースタイルを複製しようとしているので、この回答にも非常に興味があります。

https://github.com/vinniefalco/LayerEffects

これは私が知っていることです:

  • ドロップシャドウとインナーシャドウは互いに二重です。レイヤーにドロップシャドウを追加することは、逆マスクを使用してレイヤーに内部シャドウを追加することと同じです。

  • テクニックを「正確」に設定した外部グローは、面取りメトリックを使用してユークリッド距離変換(EDT)を計算します。

  • ストロークをグラデーションに設定すると、「シェイプバースト」は同じEDTを使用します。

  • テクニックを「ソフト」に設定したアウターグローは、ドロップシャドウに使用されるものと同じ未知の変換を使用します。

距離変換はほとんどすべてのPhotoshopレイヤースタイルで重要な役割を果たしているため、ドロップシャドウの未知の変換はEDTのバリエーションであると想定するのが妥当かもしれません。私が見つけた他の唯一のバリエーションは、「ガウス距離変換」(GDT)と呼ばれています。残念ながら、「医療、リモートセンシング、および産業用アプリケーション向けの2Dおよび3D画像レジストレーション」という本にはその説明が1つしかありません。PDFが利用可能です:

http://read.pudn.com/downloads85/ebook/327739/Wiley%5B1%5D.Interscience.2-D.and.3-D.Image.Registration.for.Medical.Remote.Sensing.and.Industrial。 Applications.pdf

GDTの説明は次のとおりです。

単調に増加する放射関数で画像を畳み込むと、距離変換画像のように機能する画像が得られます。ガウス関数の逆関数は、単調に増加する放射関数として使用できます。したがって、画像の距離変換を取得するには、画像をガウス分布で畳み込み、畳み込み画像の強度を反転させます。この方法で距離変換を計算すると、取得した距離のノイズに対する感度が低くなります。これは、図4.6の例で示されています。図4.6aと4.6bは、ガウス畳み込みによって計算された画像4.5aと4.5bの距離変換をそれぞれ示しています。ユークリッド距離変換と比較して、ガウス畳み込みによって計算された距離変換は、ノイズの影響を受けにくくなっています。

この画像を考えると:

前
(ソース:imgfsr.com

署名されたユークリッド距離変換と署名されたガウス距離変換は次のとおりです。

EDT
(ソース:imgfsr.com
GDT

http://www.imgfsr.com/ifsr_dtg.htmlからの画像)

于 2012-08-22T15:15:32.533 に答える