Javascript 将位图字符转换为三角形
我试图使用html画布元素将字体文件中可用的每个字符绘制到画布上。为了使这个问题尽可能简单,假设画布上只画了一个角色。从这里开始,我想使用Javascript分析画布,并创建构成整个角色的画布三角形区域。我之所以需要三角形,是为了以后可以将数据发送到WebGL,以便在放大或缩小文本大小时可以呈现文本,并且数据不会丢失Javascript 将位图字符转换为三角形,javascript,character,html5-canvas,webgl,Javascript,Character,Html5 Canvas,Webgl,我试图使用html画布元素将字体文件中可用的每个字符绘制到画布上。为了使这个问题尽可能简单,假设画布上只画了一个角色。从这里开始,我想使用Javascript分析画布,并创建构成整个角色的画布三角形区域。我之所以需要三角形,是为了以后可以将数据发送到WebGL,以便在放大或缩小文本大小时可以呈现文本,并且数据不会丢失 我正在寻找某种算法来实现这一点,或者至少是一些知识来让我朝着正确的方向前进。如果您认为我应该使用不同的方法,请告诉我原因,但我认为这将是提供一种以多种方式修改文本以及创建3d块文本
我正在寻找某种算法来实现这一点,或者至少是一些知识来让我朝着正确的方向前进。如果您认为我应该使用不同的方法,请告诉我原因,但我认为这将是提供一种以多种方式修改文本以及创建3d块文本的最佳方法。我建议您从关键字开始 使用此方法,可以将n个多边形拆分为如下三角形:
这些方法可能只适用于具有真实(而非圆形)边缘的图形。那么,您正在尝试将光栅图像转换为矢量数据吗? 放大后,将产生非常参差不齐的几何图形。 因为每个像素都被视为几何体的方形边缘部分 难道你不能为你正在绘制的每一个字形获得原始向量(贝塞尔曲线)几何体吗
将其转换为三角形条带和扇形将看起来更平滑。这里有一篇文章介绍如何使用着色器绘制与分辨率无关的曲线
我的理解是,不要将形状分解为三角形,而是将它们分解为四边形,并在顶点中排序足够的信息,以便在每个四边形内绘制一部分曲线。换句话说,当着色器绘制每个四边形时,每个像素都有一个公式可以计算该像素是在曲线内还是在曲线外。在3D图形中,文本使用类型渲染库渲染到纹理,并在矩形曲面上呈现给用户,而不是呈现给3D对象。此外,将渲染类型减少为三角形的任务也很重要(因为字体不是简单的顶点/边结构,而是微型程序本身,并且使用平滑曲线,如贝塞尔曲线)。