使用three.js创建立方体时如何验证使用多个纹理?

6

请有人验证一下这段代码是否适用于three.js r53?

这段代码来自于这个问题:如何在Three.js立方体中使用多种材料?

我尝试了这段代码和几个变形,但是看不到立方体,我的纹理图片已经按照应该的命名。

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());
2个回答

20

改为这样做:

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已被弃用。

three.js版本号为r.92


同时,CubeGeometry 在 r66 版本中更名为 BoxGeometry。 - imcg
@imcg 谢谢。已更新答案。 - WestLangley

0

THREE.CubeGeometry() 不支持材质列表。我也以为它支持,但如果你查看当前的源代码……它不支持


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接