这是一个生成字体形状的例子
TextGeometry
之前在学习几何形状时提到过一种字体形状,但是没有详细学习,现在我们边学习,边做一个例子
TextGeometry(text : String, parameters : Object)
text — 将要显示的文本。
parameters — 包含有下列参数的对象:
font — THREE.Font的实例。
size — Float。字体大小,默认值为100。
height — Float。挤出文本的厚度。默认值为50。
curveSegments — Integer。(表示文本的)曲线上点的数量。默认值为12。
bevelEnabled — Boolean。是否开启斜角,默认为false。
bevelThickness — Float。文本上斜角的深度,默认值为20。
bevelSize — Float。斜角与原始文本轮廓之间的延伸距离。默认值为8。
bevelSegments — Integer。斜角的分段数。默认值为3。
这个构造函数生成一个字体形状的几何体,其中有一个最重要的参数为THREE.Font
Font
以JSON格式,创建一系列的Shape(形状)来表示一个字体。
Font( data )
data – 表示字体的JSON数据。
这一构造函数创建一个新的Font,它是一个Shapes数组。
使用层面来说,实际上我们创建一个Font,需要表示字体的json数据,用其绘制字体形状。threejs项目examples/fonts下有很多字体json文件。
FontLoader
怎么提供一个Font?这时候就需要之前学过的字体加载器FontLoader了
FontLoader:使用JSON格式中加载字体的一个类。返回Font, 返回值是表示字体的Shape类型的数组。 其内部使用FileLoader来加载文件。
一个完整的例子
1 | // 字体加载器加载字体后创建文本几何体 |
上面的代码创建了一个LOVE的文本几何体,但是当我们尝试创建中文字体时却不如预期所想。因为examples中提供的字体文件都不支持中文。
创建中文字体几何形状
为了支持中文,我们需要支持中文的字体文件。
- 下载支持中文的ttf字体文件。
- 到 https://gero3.github.io/facetype.js/ 这个网站将其转换为json文件格式。
- 加载字体时使用该json文件即可。
中文字体文件一般都比较大,动辄好几兆,需要优化时,据说可以对其中的glyphs对象进行删减,只保留使用到的字符即可,但本人没有亲自尝试过。
加一点点光源特效的文本示例
1 |
|
总结
学会这个就可以创建一些简单的文本几何形状了