Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将位图字符转换为三角形_Javascript_Character_Html5 Canvas_Webgl - Fatal编程技术网

Javascript 将位图字符转换为三角形

Javascript 将位图字符转换为三角形,javascript,character,html5-canvas,webgl,Javascript,Character,Html5 Canvas,Webgl,我试图使用html画布元素将字体文件中可用的每个字符绘制到画布上。为了使这个问题尽可能简单,假设画布上只画了一个角色。从这里开始,我想使用Javascript分析画布,并创建构成整个角色的画布三角形区域。我之所以需要三角形,是为了以后可以将数据发送到WebGL,以便在放大或缩小文本大小时可以呈现文本,并且数据不会丢失 我正在寻找某种算法来实现这一点,或者至少是一些知识来让我朝着正确的方向前进。如果您认为我应该使用不同的方法,请告诉我原因,但我认为这将是提供一种以多种方式修改文本以及创建3d块文本

我试图使用html画布元素将字体文件中可用的每个字符绘制到画布上。为了使这个问题尽可能简单,假设画布上只画了一个角色。从这里开始,我想使用Javascript分析画布,并创建构成整个角色的画布三角形区域。我之所以需要三角形,是为了以后可以将数据发送到WebGL,以便在放大或缩小文本大小时可以呈现文本,并且数据不会丢失


我正在寻找某种算法来实现这一点,或者至少是一些知识来让我朝着正确的方向前进。如果您认为我应该使用不同的方法,请告诉我原因,但我认为这将是提供一种以多种方式修改文本以及创建3d块文本的最佳方法。

我建议您从关键字开始

使用此方法,可以将n个多边形拆分为如下三角形:


这些方法可能只适用于具有真实(而非圆形)边缘的图形。

那么,您正在尝试将光栅图像转换为矢量数据吗? 放大后,将产生非常参差不齐的几何图形。 因为每个像素都被视为几何体的方形边缘部分

难道你不能为你正在绘制的每一个字形获得原始向量(贝塞尔曲线)几何体吗


将其转换为三角形条带和扇形将看起来更平滑。

这里有一篇文章介绍如何使用着色器绘制与分辨率无关的曲线


我的理解是,不要将形状分解为三角形,而是将它们分解为四边形,并在顶点中排序足够的信息,以便在每个四边形内绘制一部分曲线。换句话说,当着色器绘制每个四边形时,每个像素都有一个公式可以计算该像素是在曲线内还是在曲线外。

在3D图形中,文本使用类型渲染库渲染到纹理,并在矩形曲面上呈现给用户,而不是呈现给3D对象。此外,将渲染类型减少为三角形的任务也很重要(因为字体不是简单的顶点/边结构,而是微型程序本身,并且使用平滑曲线,如贝塞尔曲线)。