5

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());
4

2 に答える 2

18

代わりにこれを行います:

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

materials各面に 1 つずつ、6 つの three.js マテリアルの配列です。

移行ガイドを参照してください: https://github.com/mrdoob/three.js/wiki/Migration-Guide

編集:CubeGeometryに名前が変更されBoxGeometryTHREE.MeshFaceMaterial非推奨になりました。

three.js r.92

于 2012-12-10T13:32:55.287 に答える
0

THREE.CubeGeometry() はマテリアルのリストをサポートしていません。私もそうだと思っていたのですが、現在のソースコードを確認すると……そうではありません。

于 2012-12-10T05:57:09.880 に答える