THREE.js 使用 TextGeometry 类可以很容易地生成三维文字
但是换成中文后
var textLoad = new THREE.FontLoader().load('fonts/helvetiker_regular.typeface.json',function(font){
var txtGeo = new THREE.TextGeometry('你好',{
font: font,
size: 0.8,
height: 0.1,
curveSegments: 12,
bevelEnabled: true,
bevelThickness: 0.1,
bevelSize: 0.05,
bevelSegments: 3
});
var txtMater = new THREE.MeshNormalMaterial({
flatShading: THREE.FlatShading,
transparent: true,
opacity: 0.9
});
var txtMesh = new THREE.Mesh(txtGeo,txtMater);
txtMesh.position.set(-2,2.3,-0.4);
scene.add(txtMesh);
});
输出

原因:
在官方提供的字库里没有中文的
解决方法:
在 C:\Windows\Fonts 下找打一个有中文字符的字库,文件格式为TTF
去 facetype.js 转换成json
加载文件换成刚转换的
我选择的


修改加载的字体
var textLoad = new THREE.FontLoader().load('fonts/FZYaoTi_Regular.json',function(font){
var txtGeo = new THREE.TextGeometry('你好',{
font: font,
size: 0.8,
height: 0.1,
curveSegments: 12,
bevelEnabled: true,
bevelThickness: 0.1,
bevelSize: 0.05,
bevelSegments: 3
});
var txtMater = new THREE.MeshNormalMaterial({
flatShading: THREE.FlatShading,
transparent: true,
opacity: 0.9
});
var txtMesh = new THREE.Mesh(txtGeo,txtMater);
txtMesh.position.set(-2,2.3,-0.4);
scene.add(txtMesh);
});
结果

|