2016-04-21 5 views
2

three.jsのプレーンに2つのキャンバスをテクスチャとしてレンダリングしたいと思います。私は私が私の実際の問題を表示するには、このjsfiddle exampleを作成した2つのMeshBasicMaterialで配列を作成し、以下のthree.jsのplaneのテクスチャとして2つのキャンバス

texture2 = new THREE.Texture(c1); 
texture3 = new THREE.Texture(c3); 
var mat1 = new THREE.MeshBasicMaterial({ map: texture2 }); 
var mat2 = new THREE.MeshBasicMaterial({ map: texture3 });  

materials.push(mat1); 
materials.push(mat2); 

mesh2 = new THREE.Mesh(geometry2, new THREE.MeshFaceMaterial(materials)); 
scene2.add(mesh2); 

renderer2 = new THREE.WebGLRenderer({canvas:c2}); 
renderer2.setSize(c2.width, c2.height); 

document.body.appendChild(renderer2.domElement); 

をしました。 2番目のテクスチャはcanvas2にレンダリングされませんが、両方のテクスチャを表示したいと思います。それはへの第一又は第二の材料を割り当てるには向いている知っていないため、デフォルトでは、それはそれらのすべてに第一の材料を与えるよう

答えて

4

理由

二テクスチャが描画されていない理由は、あります。

ソリューション

  • 最新のビルド(R76)にアップデートしThree.js。あなたは今の代わりにTHREE.MeshFaceMaterialの使用THREE.MultiMaterialすべての面を通じてR54
  • ループを実行し、それらにmaterialIndexFace3
  • を割り当てているだ:

    mesh2 = new THREE.Mesh(geometry2, new THREE.MultiMaterial(materials)); 
    
+0

ありがとう@leota、これは本当に私を支援しています。これは私の最新のアプローチです:http://jsbin.com/fufokunave/1/edit?js,outputしかし、私は1つのテクスチャを重ね合わせるように、テクスチャを「スタック」したいと思います。あなたのソリューションを編集できますか? – alexanderkrause

+0

@Sincostan - 他のテクスチャも見ることができるように、上のものを透明にしますか? – leota

+0

正確に。 1つのキャンバスをもう一方の透明なものでオーバーレイします。 – alexanderkrause

関連する問題