2012-04-17 4 views
4

ランダムクローズドベイズシェイプシェイプのベベル/エンボスエフェクトを生成する方法を探しています。私は私の要求に合っていると思われる次の投稿に出くわしました。ベベルまたは沈んだエフェクトアルゴリズムのC#

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

どのように私はC#に、これが移植され得るのですか?利用可能なアルゴリズムはありますか?または、.NETのイメージングライブラリを使用するか、一部のコードスニペットを使用して開始することができますか?

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

+3

あなたがOpenCVの中に書かれている参照先の記事で例3Dである必要がありますすることができ、OpenCVののAC#.NETのラッパーがすでにEmgucv – elasticrash

+0

が呼ばれ@elasticrash ..感謝します君は。私はさらに検索を行いました。このリンクは参考になりますhttp://stackoverflow.com/questions/85569/net-dotnet-wrappers-for-opencv – user3526

答えて

0
  1. あなたの閉じたポリゴン/ポリライン/パスから
    • ベースがその上または下に
    • トップがあなたの形状
    • 拡大が行われているベベル/沈没幅によって基本的な形状を拡大している「メッシュ」を作成
    • または垂直シフト+ライン/カーブ拡大/交差結合による結合の基本的な対称形の中心をスケーリングすることによって
    • 第2の選択肢は複雑になりますが、常に形状です正しい
  2. は法線GREEN(すべてのエッジは、領域「メッシュ」で
      光源の法線
    • RED(通常光左上にある)
    • と表面法線を作成しますまたはピクセル)
    • 光の法線は、方向の光(遠光源の場合は 太陽光など)の全領域で一定です。
    • またはcomputed fo r点光源(点光源)のすべての点
    • すべての通常の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) 
      
    • 場合等スカラーベクトル乗算でレンダリング、Bは単位ベクトルであり、結果は< -1、+ 1>

    • 0は、Bは、
    • +/- 1は、それらが
    • -1は、それらが逆の方向を有する手段平行であることを意味垂直であることを意味
より明確にするために

参照画像

enter image description here

PS。 「メッシュ」はまだ2Dのみ法線が

関連する問題