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

输出

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

原因:

  在官方提供的字库里没有中文的

解决方法:

  在 C:\Windows\Fonts 下找打一个有中文字符的字库,文件格式为TTF

  去 facetype.js 转换成json

  加载文件换成刚转换的

  我选择的

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

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

 修改加载的字体

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

结果

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

 

 

 

 

 

 

 

  

相关文章:

  • 2022-01-13
  • 2022-12-23
  • 2022-01-17
  • 2022-12-23
  • 2021-10-29
  • 2022-02-10
  • 2022-01-12
猜你喜欢
  • 2022-02-01
  • 2022-12-23
  • 2021-08-06
  • 2022-01-19
  • 2021-11-17
  • 2021-09-17
  • 2022-12-23
相关资源
相似解决方案