ThreeJS字体无法加载

时间:2014-07-30 17:03:45

标签: fonts three.js

我最近开始与ThreeJS合作,我无法解决这个问题。 我想加载我自己的字体以在场景中显示3D文本对象,我跟着this example并且一切顺利,但现在当我只更改"字体:" TextGeometry对象中的选项,一切都崩溃了,没有显示任何内容(错误是字体未定义)

我使用typeFace来创建字体,包括脚本似乎很好, 我个人觉得有一些字体的名字,我输错了,因为我读到某处.typeface.js之间的所有内容都是threeJS正在寻找的实际字体名称,应该包括在内(小写),但在示例中,没有_regular。 或者font-name和font-family之间的区别......不知道!

谢谢。

    <script type="text/javascript" src="mrdoob-three.js-1769fbf/examples/fonts/helvetiker_regular.typeface.js"></script>
    <script type="text/javascript" src="trebuchet_ms.typeface.js"></script>


        var textGeo = new THREE.TextGeometry( "THREE.JS", {
            size: 50,
            height: 10,
            curveSegments: 50,
    //        font: "helvetiker",  works fine 
            font: "trebuchet_ms",
    //        weight: "bold",
    //        style: "normal",
            bevelThickness: 11,
            bevelSize: 0,
            bevelEnabled: true
        });
        textGeo.computeBoundingBox();
        var textMaterial = new THREE.MeshPhongMaterial( { color: 0xff0000} );
        var mesh = new THREE.Mesh( textGeo, textMaterial );
        mesh.position.set(0,0,0) ;
        mesh.castShadow = true;
        mesh.receiveShadow = true;
        scene.add( mesh );
  

Uncaught正常重量和正常风格的字体投石机是   丢失。

1 个答案:

答案 0 :(得分:9)

以下是如何找到要使用的字体名称:

  1. 打开typeface.js文件
  2. 查找font_family属性:"font_family_name":"Trebuchet MS"
  3. 将其更改为全部小写。空间很好。
  4. 所以在你的特定例子中:

    var textGeo = new THREE.TextGeometry( "THREE.JS", {
    
        size: 200,
        height: 50,
        curveSegments: 12,
    
        font: "trebuchet ms",
        // weight: "normal",
        // style: "normal",
    
        bevelThickness: 2,
        bevelSize: 5,
        bevelEnabled: true
    
    });
    

    提示:如有疑问,请在出现错误时在浏览器控制台中评估THREE.FontUtils.faces。这将为您提供所有当前注册字体的名称。