49 Three.js使用THREE.TextGeometry创建三维文本解决中文乱码的问题

这里写图片描述

案例查看地址:http://www.wjceo.com/blog/threejs/2018-02-12/51.html

解决方案

如果写汉字发现出来的只是一堆????的话,证明当前引入的字体不支持汉字。我们的解决方案就是引入可以支持汉字json文件。那么问题来了,这种json文件我们怎么获得?
- 我们可以使用ttf格式的文件进行转换即可,有一个地址,可以进行在线转换http://gero3.github.io/facetype.js/,在当前地址可以转换出来json格式的文件。
- 然后再按照上一节的方法,异步引入文件即可

                //创建loader进行字体加载,供后面的模型使用
                var loader = new THREE.FontLoader();
                loader.load( 'assets/fonts/MicrosoftYaHei_Regular.json', function ( response ) {
                    gui.font = response;
                    gui.asGeom();
                } );

然后书写汉字,就不会出现乱码情况了

            asGeom: function () {
                // 删除掉原来的旧模型
                scene.remove(text1);
                scene.remove(text2);
                // 重新创建模型
                var options = {
                    size: gui.size,
                    height: gui.height,
                    weight: gui.weight,
                    font: gui.font,
                    bevelThickness: gui.bevelThickness,
                    bevelSize: gui.bevelSize,
                    bevelSegments: gui.bevelSegments,
                    bevelEnabled: gui.bevelEnabled,
                    curveSegments: gui.curveSegments,
                    steps: gui.steps
                };

                text1 = createMesh(new THREE.TextGeometry("测试汉字", options));
                text1.position.z = -100;
                text1.position.y = 100;
                scene.add(text1);

                text2 = createMesh(new THREE.TextGeometry("Three.js", options));
                scene.add(text2);
            }
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值