2017-02-03 22 views
0

この質問に対する最新の回答を見つけるのは難しいです。多くの解決策がたくさんあるようです.3つの.jsから遠くにあるMeshFaceMaterialを使用しているようです(バージョン53の周りは現在84です)Three.js:2つのテクスチャをキューブにマッピング

私が行った研究から、球に変換してからマッピングを実行します。

を私はVARS t1t2

var geometry = new THREE.BoxGeometry(1,1,1); 

for (var i in geometry.vertices) { 
    var vertex = geometry.vertices[i]; 
    vertex.normalize().multiplyScalar(1); 
} 

var mat1 = new THREE.MeshLambertMaterial({ map: t1 }); 
var mat2 = new THREE.MeshLambertMaterial({ map: t2 }); 

var materials = [mat1, mat2]; 
var mats = new THREE.MultiMaterial(materials); 

var cube = new THREE.Mesh(geometry, mats); 

scene.add(cube); 

問題で読み込ま質感があります:

  • これは私のコンソール
  • Uncaught TypeError: Cannot read property 'visible' of undefinedが得られているがここで

    は、私が持っているものですシェーディングの理由から、私はMeshLamberの代わりにMeshPhongMaterialを使用したいtMaterial

任意のヒントは非常に高く評価されるだろう!

答えて

0

は、ジオメトリの顔内部materialIndex値を見てみましょう。これらの値はmaterials配列のインデックスです。

例では、0から5(ボックスの辺に対応)の値が表示されますが、2つのマテリアルしか提供されないため、エラーが表示されます。彼らはちょうどあなたの二つの材料を参照するように、あなただけのジオメトリ面上materialIndex値を変更することができますあなたの問題を解決するために

。例えば

for (var i = 0; i < geometry.faces.length; i += 1) { 
    var face = geometry.faces[i]; 
    face.materialIndex = face.materialIndex % 2; 
} 
関連する問題