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

发布于 2022-09-11 20:02:10 字数 1630 浏览 13 评论 0

问题描述

  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);
      });
    });

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

池木 2022-09-18 20:02:10

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文