创建字体模型,需要通过THREE.FontLoader()
方法,来加载json
格式的字体格式类型,然后在加载成功的回调函数中,通过THREE.TextBufferGeometry()
或者THREE.TextGeometry()
,将 需要展现的文本 以及设置好的字体格式对象传递到方法中 来创建Mesh对象,需要注意的是,THREE.TextBufferGeometry()
,不能用作BSP 布尔操作,THREE.TextGeometry()
可以进行几何体布尔运算。
浏览地址:https://ithanmang.gitee.io/threejs/home/201806/20180629/02-textGeometry.html
主要代码
此处加载的字体模型是英文字体json文件,若想加载中文字,还需要下载相应的ttf
文件,然后通过这个网址[http://gero3.github.io/facetype.js/]把ttf
文件转换为json
文件,再通过FontLoader
加载即可。
这里提供微软雅黑的ttf
文件,欢迎下载:
链接:https://pan.baidu.com/s/1zZiog3YoPZSHCzMoxVLbQw 密码:5w47
var text = 'three.js';
// 使用FontLoader加载字体
var loader = new THREE.FontLoader();
loader.load('../../libs/examples/fonts/gentilis_regular.typeface.json', function (response) {
// 文字配置
var fontCfg = {
font : response,
size : 80,
height: 5,
curveSegments: 12,
bevelEnabled: true,
bevelThickness: 10,
bevelSize: 8,
bevelSegments: 5
};
// TextGeometry文本几何对象
var fontGeometry = new THREE.TextGeometry(text,fontCfg);
fontGeometry.computeBoundingBox();//绑定盒子模型
// 文字的材质
var fontMaterial = new THREE.MeshNormalMaterial();
var font = new THREE.Mesh(fontGeometry, fontMaterial);
// 计算出整个模型宽度的一半, 不然模型就会绕着x = 0,中心旋转
font.position.x = -(fontGeometry.boundingBox.max.x - fontGeometry.boundingBox.min.x) / 2;
scene.add(font);
});
需要注意的是,对让几何文本绑定盒子模型,这样好对它的位置进行操作。
效果
完整代码
<!DOCTYPE html>
<html lang="en"