4

ランダムな閉じたベジェ形状のセットに対してベベル/エンボス効果を生成する方法を探しています。私の要件に一致すると思われる次の投稿に出くわしました。

https://dsp.stackexchange.com/questions/530/bitmap-alpha-bevel-algorithm

これを C# に移植するにはどうすればよいですか? 使用できるアルゴリズムはありますか? あるいは、使用する .NET イメージング ライブラリや、開始するためのコード スニペットはありますか?

サーバー上でこのコードを実行して、周囲が透明な動的形状を生成する必要があります。

4

1 に答える 1

1
  1. 閉じたポリゴン/ポリライン/パスから「メッシュ」を作成します
    • ベースはベベル/沈み幅によって拡大された基本形状
    • 上または下はあなたの形です
    • 拡大は、基本的な対称形状の中心を中心にスケーリングすることによって行われます
    • または垂直シフト + 線/曲線拡大/交差カットで結合
    • 2 番目の選択肢はコードが複雑ですが、常に形状が正しい
  2. 法線を作成する
    • 光源REDに垂直(通常、光は左上隅にあります)
    • 「メッシュ」緑の表面法線(すべてのエッジ、領域、またはピクセル用)
    • ライト法線は、ディレクション ライト (太陽光のような遠光源) の領域全体で一定にすることができます。
    • またはポイントライトのすべてのポイントに対して計算されます(光源が近い)
    • すべての法線は単位 3D ベクトルでなければなりません!!!
  3. 光で「メッシュ」をレンダリングします(単純な通常の照明で十分です)

    lighted color = base color * dot_product(light normal,surface normal)
    
    • ドット積は、このようなスカラー ベクトル乗算です。

      (A.B) 
      = dot_product(A(x1,y1,z1),B(x2,y2,z2))
      = (x1*x2)+(y1*y2)+(z1*z2)
      
    • A,B が単位ベクトルの場合、結果は <-1,+1> です

    • 0 は A、B が垂直であることを意味します
    • +/- 1 はそれらが平行であることを意味します
    • -1 は反対方向であることを意味します

より明確にするために画像を参照してください

ここに画像の説明を入力

PS。「メッシュ」は 2D にすることができますが法線は 3D にする必要があります

于 2013-10-21T11:20:00.403 に答える