如何在Three.js中制作3D文本

17

我参考了这个文档这个文档编写了一个脚本,我的代码如下:

<script src="https://raw.github.com/mrdoob/three.js/master/build/three.js"></script>
   <script> 
   var text = "my text",

            height = 20,
            size = 70,
            hover = 30,

            curveSegments = 4,

            bevelThickness = 2,
            bevelSize = 1.5,
            bevelSegments = 3,
            bevelEnabled = true,

            font = "optimer", // helvetiker, optimer, gentilis, droid sans, droid serif
            weight = "bold", // normal bold
            style = "normal"; // normal italic
   var scene = new THREE.Scene();
   var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);
   var renderer = new THREE.WebGLRenderer(); 
   renderer.setSize(window.innerWidth, window.innerHeight);
   document.body.appendChild(renderer.domElement);
   var textGeo = new THREE.TextGeometry( text, {

                size: size,
                height: height,
                curveSegments: curveSegments,

                font: font,
                weight: weight,
                style: style,

                bevelThickness: bevelThickness,
                bevelSize: bevelSize,
                bevelEnabled: bevelEnabled,


            });


//  var geometry = new THREE.CubeGeometry(10,10,1);
  var material = new THREE.MeshBasicMaterial({color: 0x11ff00});
  var textGeo = new THREE.Mesh(textGeo, material); 
  scene.add(textGeo);
  camera.position.z = 10;
  function render() { 
      requestAnimationFrame(render);
      textGeo.rotation.x += 0.01;
      textGeo.rotation.y += 0.01;
      renderer.render(scene, camera); 
 } 


 render();


</script>

我可以通过略微更改代码来制作立方体和其他几何图形。但是我无法使用此脚本制作3D文本。这段代码有什么问题?控制台中我的错误是请帮助我。


这是错误 类型错误:this.faces[this.face]未定义 [在此错误上中断]返回this.faces[this.face][this.weight][this.style]; - crynaldo madrid
2个回答

22
你需要使用类似以下的模式加载字体文件:

你需要使用类似以下的模式加载字体文件:

var loader = new THREE.FontLoader();

loader.load( 'fonts/helvetiker_regular.typeface.json', function ( font ) {

    // your code here

} );

比如,可以参考这个 three.js 的例子:

https://threejs.org/examples/webgl_geometry_text.html

此外,我建议不要将几何体和网格分配给相同的变量名称。

three.js r.128


1
注意现在的标准是JSON:loader.load('fonts/helvetiker_regular.typeface.json', .. - bebbi
1
@bebbi 谢谢。已更新答案。 - WestLangley

10

我还写了这篇教程,介绍如何创建3D字体,因为我遇到了一些麻烦,觉得值得记录下来。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接