WebGL - 使用块构建对象

时间:2012-05-22 15:50:49

标签: webgl three.js

我试图使用块构建一些文本,我打算稍后自定义。附图是我打算做的模型。

我正在考虑使用WebGL,因为我想用3D做它而且我不能做任何闪光,但我不知道如何用字母构造立方体的结构。任何人都可以给我一个建议或技巧来将文本映射到一系列点,以便从远处看到它们绘制相同的文本吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

  1. 首先,您需要一种字体 - 字符形状表 - 以您可以从代码中读取的格式。你有一个吗?如果它只是几个字母,您可以手动为每个字符创建多边形。

  2. 然后,使用光栅化算法将字符形状转换为现有或不存在的点/多维数据集的数组。如果你有完全平坦的文字,那么使用2D数组;如果您的“自定义”将创建深度效果,那么您将需要一个3D数组(通过将其相同地写入阵列的多个平面来“挤出”形状)。

    如果文本在运行时没有变化,前两个步骤的替代方法是首先创建一个包含所需文本的图像,然后使用图像的像素作为上述2D数组。在浏览器中,您可以使用2D画布功能将图像绘制到画布上,然后从中读取像素。

  3. 然后,要从此体素数组生成3D形状,请为阵列中“当前”点与“缺席”点匹配的每个位置构建多边形面。如果你根据邻居对做到这一点,你会得到一个粗糙的像素外观(如Minecraft)。如果你想要平滑的斜率(比如你的示例图像),那么你需要一种更复杂的技术;产生光滑表面的传统方法是marching cubes(但只是行进立方体会使所有角落变圆)。