首页 > 解决方案 > 单个网格上的多个材质不会更新

问题描述

我正在尝试在不同的面上创建一个具有不同材料的网格(这样我就可以解构和“干扰”一些加载的几何图形)。

出于某种原因,我看不到任何变化,我想知道three.js 中是否发生了一些变化。我确定这曾经可以工作,但是已经有一段时间了,现在我没有收到任何错误,但没有任何更新。

我正在看这种例子:https ://dustinpfister.github.io/2018/05/14/threejs-mesh-material-index/

所以像:

function makeTestShape() {
  // An array of Materials
  var materialArray = [
      new THREE.MeshBasicMaterial({
          color: 0xff0000
      }),
      new THREE.MeshBasicMaterial({
          color: 0x00ff00
      }),
      new THREE.MeshBasicMaterial({
          color: 0x0000ff
      })
  ];

  // Sphere
  var geometry = new THREE.SphereGeometry(1, 15, 15);

  // looping over all faces and setting the material index property
  geometry.faces.forEach(function (face, i) {
      face.materialIndex = Math.floor(i % materialArray.length);
  });

  var sphere = new THREE.Mesh(geometry,materialArray);

  scene.add(sphere);
}

当我运行这段代码时,我看不到几何图形,但也没有错误。什么都没发生。这仍然是正确的方法吗?我错过了什么?我也尝试了需求更新的所有配置,这似乎也没有做任何事情......

谢谢!

标签: javascriptthree.js

解决方案


推荐阅读