4

我正在寻找为一组随机闭合贝塞尔形状生成斜角/浮雕效果的方法。我遇到了以下似乎符合我要求的帖子。

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

我如何将此移植到 C# ?我可以使用任何可用的算法吗?或者是否有任何 .NET 成像库可供使用或一些代码片段让我开始?

我需要在服务器上运行此代码以生成具有透明度的动态形状。

4

1 回答 1

1
  1. 从封闭的多边形/折线/路径创建“网格”
    • 底座通过斜角/凹陷宽度扩大了基本形状
    • 上面或下面是你的形状
    • 通过围绕中心缩放基本对称形状来完成放大
    • 或通过垂直移位+线/曲线放大/相交切割加入
    • 第二种选择编码复杂,但形状总是正确的
  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 回答