Aframe:glTF大小调整和重新定心多个网格模型

时间:2018-09-04 07:50:18

标签: three.js aframe

我正在导入使用两个网格的glTF模型

<a-entity gltf='#sofa'>

假设沙发是指向资源的asset-item。我正在尝试编写一个组件,该组件将根据需要调整模型的大小并重新居中。我已经能够成功使用

  this.el.addEventListener("model-loaded", function(e) {
  var model = e.detail.model;
  model.traverse(function(o) {
    if (o instanceof THREE.Mesh) {
        o.geometry.center();
        o.geometry.computeBoundingBox();
        var bBox = o.geometry.boundingBox;
        d = bBox.max.z - bBox.min.z;
        w = bBox.max.x - bBox.min.x;
        h = bBox.max.y - bBox.min.y;
        switch(axis) {
          case 'x':
          scale = sizeto / w;
          break;
          case 'y':
          scale = sizeto / h;
          break;
          case 'z':
          scale = sizeto / d;
          break;
          default:
          break;
        }
      }
    }
    el.setAttribute('scale', scale + ' ' + scale + ' ' + scale);
  });

组件的属性包括指定要调整大小的axis即x,y或z以及sizeto的值。这适用于单网格模型。

对于多个网格模型,我什至尝试指定主网格(假设其中一个很重要),并给定axissizeto并将其应用于整个元素。那也可行。

我无法处理的情况是当我希望整个模型重新居中或原点更改为结果模型的中心或原点为0 0 0时。

除了geometry.center()之外,还有其他方法可用于重新定位整个模型吗?谢谢

0 个答案:

没有答案