You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

THREE.js使用FontLoader加载字体出现404错误无法渲染文本问题求助

问题根因

FontLoader.load() 要求第一个入参为字体文件的URL字符串,你代码中传入的是通过import引入的字体JSON对象,对象转字符串后得到[object Object],导致请求路径错误触发404。

修复方案

有两种可选方案:

  • 方案1:使用FontLoader.parse()直接解析已导入的JSON对象
    无需再调用异步load方法,直接替换字体加载部分的代码即可,同时修正拼写错误:
    const fontLoader = new FontLoader();
    // 直接解析已经import的字体json对象
    const font = fontLoader.parse(typefaceFont);
    
    const textMaterial = new THREE.MeshBasicMaterial({ color: 0xff0000 }); // 明确设置颜色避免和背景同色看不见
    const textGeometry = new TextGeometry("Hello Three.js",
     {
          font: font,
          size: 0.5,
          height: 0.2,
          curveSegments: 12,
          bevelEnabled: true,
          bevelThickness: 0.03,
          bevelSize: 0.02,
          bevelOffset: 0, // 修正原来的拼写错误:beveloffset改为驼峰写法
          bevelSegments: 5
      }
    );
    const text = new THREE.Mesh(textGeometry, textMaterial);
    scene.add(text);
    
  • 方案2:传入字体路径调用load方法
    删掉导入字体的import语句,直接给load方法传字体文件的公开访问路径:
    // 删除 import typefaceFont from "./fonts/helvetiker_regular.typeface.json" 这行
    const fontLoader = new FontLoader();
    fontLoader.load('./fonts/helvetiker_regular.typeface.json', (font) => {
      const textMaterial = new THREE.MeshBasicMaterial({ color: 0xff0000 });
      const textGeometry = new TextGeometry("Hello Three.js",
      {
            font: font,
            size: 0.5,
            height: 0.2,
            curveSegments: 12,
            bevelEnabled: true,
            bevelThickness: 0.03,
            bevelSize: 0.02,
            bevelOffset: 0,
            bevelSegments: 5
        }
      );
      const text = new THREE.Mesh(textGeometry, textMaterial);
      scene.add(text);
    });
    
额外注意点

你原代码中beveloffset属性拼写错误,正确为驼峰格式bevelOffset,拼写错误会导致倒角配置不生效。

内容的提问来源于stack exchange,提问作者Azr.em

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 00:54:05