three.js怎么获取模型的物理信息

问题描述

  1. 如图,输入文字之后,想把文字渲染到这个笑脸的嘴巴上面凹陷的位置,就像印在上面一样,并且自适应间距。但是要怎么获取文字的间距、坐标、大小、厚度、还有字体弯曲的弧等等。

图片描述

相关代码

    // 从stl文件读取模型
    var stlLoader = new THREE.STLLoader();
    stlLoader.load('1.stl', function(geometry){
      // 创建材料
      var material = new THREE.MeshPhongMaterial({
        color: 0xc9caca,
        specular: 0xc9caca
      });
      // 创建网孔
      var stlCube = new THREE.Mesh(geometry, material);
      // 缩放
      stlCube.scale.set(3, 3, 3);
      // 居中显示
      geometry.center();
      stl = stlCube;

      // 创建字体loader
      var fontLoader = new THREE.FontLoader();
      fontLoader.load('node_modules/three/examples/fonts/helvetiker_regular.typeface.json', function(font){
        stlCube.geometry.computeBoundingBox();
        // 文字的厚度,这里的厚度是整个笑脸的厚度,我需要的,是嘴巴凸起的厚度
        var fontHeight = stlCube.geometry.boundingBox.max.z - stlCube.geometry.boundingBox.min.z;

        var text = new THREE.TextGeometry(txt, {
          font: font,
          size: 7,
          height: fontHeight
        });
        text.translate(0, 0, -fontHeight / 2);
        var textMaterial = new THREE.MeshPhongMaterial({
          color: 0xaabbcc,
          specular: 0xaabbcc
        });
        var cube = new THREE.Mesh(text, textMaterial);
        // 把字体添加为子对象
        stlCube.add(cube);
        // 创建boxHelper
        var box = new THREE.BoxHelper(stlCube, 0xff0000);
        boxHelper = box;
        stl = stlCube;
        scene.add(box);
        scene.add(stlCube);
      });
    });
阅读 3.5k
1 个回答

咋获取?获取不到,不然怎么会有物理引擎这个东西

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进