当前位置:   article > 正文

Threejs显示中文字体

threejs宋体文字在那

在Threejs的场景中用的不是英文字体会显示乱码,显示中文字体的解决办法如下:

threejs版本更新了。

  1. 用这个网站生成中文ttf的json文件。
    https://gero3.github.io/facetype.js/
  1. 代码中加入字体、用几何体和材质生成文字
  1. // 加载文字
  2. function loadTextFamily () {
  3. var textLoader = new THREE.FontLoader()
  4. textLoader.load(
  5. 'fonts/chinese1.json',
  6. function (font) {
  7. fontFamily = font;
  8. console.log(font);
  9. }
  10. );
  11. }
  12. function createText (text, pos) {
  13. var options = {
  14. size: 10,
  15. height: 0,
  16. font: fontFamily, // “引用js字体必须换成英文”
  17. bevelThickness: 1,
  18. bevelSize: 1,
  19. bevelSegments: 1,
  20. curveSegments: 50,
  21. steps: 1
  22. }
  23. var textGeo = new THREE.TextGeometry(text, options);
  24. var textMesh = new THREE.Mesh(textGeo, new THREE.MeshBasicMaterial())
  25. ... 省略设置文字position的代码。很简单 textMesh.positon.x ...明白了吗 ...
  26. scene.add(textMesh);
  27. }

clipboard.png


以下是 旧版本的threejs中文解决方案

思路:将ttf 字体格式 转换成 js 文件格式,再将js引入,便能显示了~

所用工具:facetype.js-gh-pages (百度云下载

工具使用方法:将“facetype.js-gh-pages”这个放在本地服务器上跑起来,用浏览器打开页面,选择ttf文件上传,它自动转成js并下载到本地浏览器默认下载路径中。

注意事项:将生成的js文字库打开,搜索“name”,将中文替换成英文全小写“helvetiker”(名字自拟)

引用js字体<script type="text/javascript" src="js/helvetiker_regular.typeface.js"></script>

给字体附上属性

  1. var options = {
  2. size: 10,
  3. height: 0,
  4. weight: 'normal',
  5. font: 'helvetiker',“引用js字体必须换成英文”
  6. style: 'normal',
  7. bevelThickness: 1,
  8. bevelSize: 1,
  9. bevelSegments: 1,
  10. curveSegments: 50,
  11. steps: 1
  12. };
  13. scene.add(new THREE.Mesh(
  14. new THREE.TextGeometry("hello",options),
  15. new THREE.MeshBasicMaterial({color:0xcccccc})
  16. ))

这样就能引入中文字体了 ^_^

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/520560
推荐阅读
相关标签
  

闽ICP备14008679号