threejs使用TextGeometry中文出现乱码问题解决

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

  加载文件换成刚转换的

  我选择的

扫描二维码关注公众号,回复: 8582510 查看本文章

      

  

 修改加载的字体

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);
     });

结果

  

猜你喜欢

转载自www.cnblogs.com/baby123/p/12190342.html