5

有人可以验证three.js r53的以下代码吗?

取自这个问题:How to use multiple materials in a Three.js cube?

我尝试了这段代码和一些变体,但没有看到可见的立方体。我的纹理图像按应有的名称命名。

var materials = [];

for (var i=0; i<6; i++) {
  var img = new Image();
  img.src = i + '.png';
  var tex = new THREE.Texture(img);
  img.tex = tex;

  img.onload = function() {
      this.tex.needsUpdate = true;
  };

  var mat = new THREE.MeshBasicMaterial({color: 0xffffff, map: tex});
  materials.push(mat);
}

var cubeGeo = new THREE.CubeGeometry(400, 400, 400, 1, 1, 1, materials);
var cube = new THREE.Mesh(cubeGeo, new THREE.MeshFaceMaterial());
4

2 回答 2

18

改为这样做:

var cubeGeo = new THREE.BoxGeometry( 400, 400, 400, 1, 1, 1 );
var cube = new THREE.Mesh( cubeGeo, materials );

materials是一个包含 6 个three.js 材质的数组,每个面一个。

请参阅迁移指南:https ://github.com/mrdoob/three.js/wiki/Migration-Guide 。

编辑:CubeGeometry已重命名BoxGeometryTHREE.MeshFaceMaterial已弃用。

三.js r.92

于 2012-12-10T13:32:55.287 回答
0

THREE.CubeGeometry() 不支持材质列表。我也认为它是,但如果你检查当前的源代码......它没有

于 2012-12-10T05:57:09.880 回答