当前位置: 首页 > Web前端 > JavaScript

ThreeJS学习记录(四)中文TextGeometry、FontLoader

时间:2023-03-27 01:17:58 JavaScript

我在Vue项目中引入了threeJS,需要在视图中显示文字。一开始没在意,直接照着例子写了:import*asTHREEfrom'three'import{FontLoader}from'three/examples/jsm/loaders/FontLoader.js'import{TextGeometry}来自'three/examples/jsm/geometries/TextGeometry.js'constloader=newFontLoader()loader.load('./static/helvetiker_regular.typeface.json',function(font){consttextGeo=newTextGeometry("xxx",{font:font,size:0.8,height:0})constmesh=newTHREE.Mesh(textGeo,newTHREE.MeshBasicMaterial({color:0x333333}))mesh.position.set(1,1,1)//网格模型添加到场景中t.scene.add(mesh)})这个fontjson是从node_modules/three/examples/fonts/helvetiker_regular.typeface.json中作为静态文件复制到static文件夹中的。但是渲染的时候发现全是问号,才发现这个字体包不满足中文。解决方法在本机(C:\Windows\Fonts)中找到ttf字体包,输入网址http://gero3.github.io/facetype.js/,将ttf转成json即可使用。为了优化,我用了电脑中的黑体,一共36955KB,非常大。可以看看里面的结构,"glyphs":{},可以写一个请求,把所有显示的请求接口返回给这个对象。这避免了不必要的单词加载!