帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:TEX  字段  Signed  文本  构建  Distance  Builder  Texturing  
Signed Distance Field Builder for Contour Texturing

  • 源代码名称:SDF
  • 源代码网址:http://www.github.com/memononen/SDF
  • SDF源代码文档
  • SDF源代码下载
  • Git URL:
    git://www.github.com/memononen/SDF.git
  • Git Clone代码到本地:
    git clone http://www.github.com/memononen/SDF
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/memononen/SDF
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
  • SDF

    轮廓纹理图像的Sweep-and-update欧氏距离变换。

    代码基于 Stefan,并在内存使用和执行时间方面改进了原代码。

    算法首先遍历图像,利用edtaa3的梯度方向和边缘函数,在输入图像的轮廓上找到一个近似点;。 经过这个距离,边缘像素的距离是已知的,并且代码将使用sweep-and-update更新距离字段的其余部分,直到收敛到( 或者max通过)。

    代码需要的额外内存是 3浮点( px,py,距离) 每个像素,与 5倍( 或者浮动)的edtaa3相比。 使用平方距离完成 sweep-and-update,轮廓点仅在第一次传递时计算。 这大大减少了( 特别是suqare根) 每次距离更新的计算量。

    代码procudes可比,但可能不像原始代码那样精确的距离字段。

    代码旨在用于计算距离场的轮廓纹理纹理。

    用法

    intsdfBuildDistanceField(unsignedchar* out, int outstride, float radius,
     constunsignedchar* img, int width, int height, int stride);

    输出距离字段编码为字节,其中 0 = radius ( 外部) 和 255 = -radius ( 内部)。 输入和输出可以是相同的缓冲区。

    • 输出距离转换的输出,每个像素一个字节。
    • outstride 输出图像中的每行字节。
    • 半径 - 距离域的半径narrow像素。
    • img输入图像,每个像素一个字节。
    • 宽度如果图像的宽度。
    • 高度如果图像高度。
    • 在输入图像中每行stride字节。

    白色( 255 ) 像素被视为对象像素,零像素被视为背景。 试图正确处理抗锯齿边缘。 输入图像必须在 [0,255] 范围内具有像素,而抗锯齿图像应该是理想的。清晰边缘的长方体过滤器采样。 如果antialias区域大于 1像素宽,则这里转换的结果将不准确。 图像边界处的像素不计算,并设置为 0. ( 从原始 eedtaa3func.c 中借用的解释)

    voidsdfBuildDistanceFieldNoAlloc(unsignedchar* out, int outstride, float radius,
     constunsignedchar* img, int width, int height, int stride,
     unsignedchar* temp);

    distXform相同,但不分配任何内存。 temp array 应该足够适合 width * height * sizeof(float) * 3 字节。

    voidsdfCoverageToDistanceField(unsignedchar* out, int outstride,
     constunsignedchar* img, int width, int height, int stride);

    输出距离字段编码为字节,其中 0 = sqrt(2) ( 外部) 和 255 = -sqrt(2) ( 内部)。 输入和输出必须是不同的缓冲区。

    • 输出距离转换的输出,每个像素一个字节。
    • outstride 输出图像中的每行字节。
    • 半径 - 距离域的半径narrow像素。
    • img输入图像,每个像素一个字节。
    • 宽度如果图像的宽度。
    • 高度如果图像高度。
    • 在输入图像中每行stride字节。

    这个函数转换去除图像,每个像素代表覆盖率( 理想边缘的盒过滤采样) 到一个距离窄带半径 sqrt(2)的距离场。 这是( 通常比 sdfBuildDistanceField 快 10x ) 将antialised图像转换为轮廓纹理的最快方法。 如果不需要距离的距离字段,则这里函数是好的( 例如。 fat轮廓或者 dropshadow )。

    代码仅为单个头文件。 在项目中使用下列代码来编译实现。

    #defineSDF_IMPLEMENTATION#include"sdf.h"

    许可证

    MIT许可证



    文章标签:构建  文本  TEX  字段  Builder  Distance  Signed  Contour  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语