2016-05-07 4 views
0

トンネルラップ内にトンネルを持つ2つのcylinderGeometriesがあります。私はトンネルに透明度を加え、ラップに黒色を加えたpngテクスチャを持っています。私は、alphaMap不透明の回避策として、tunnelWrapの透明度を下げるつもりです。内側ジオムの内側(THREE.JS R76)

tunnelWrapは、内側のトンネルの内側にあるときに透明に見えます。どうしてこれなの?私ははるかに大きな半径で試しました、そして、それは同じ結果でした。

function addTunnel(){ 
    var cylTexture = loader.load("wormhole2.png"), 
     cylGeom = new THREE.CylinderGeometry(5000, 5000, 50000, 32, 32, true), 
     cylMat = new THREE.MeshPhongMaterial({ 
      map: cylTexture, 
      side: THREE.DoubleSide, 
      transparent: true 
     }), 
     cyl = new THREE.Mesh(cylGeom, cylMat); 

    cylTexture.wrapT = THREE.RepeatWrapping; 
    cylTexture.wrapS = THREE.RepeatWrapping; 
    cyl.name = "tunnel"; 
    scene.add(cyl); 
    scene.getObjectByName("tunnel").position.z = -12000; 
    rotateObject(scene.getObjectByName("tunnel"), -90, 0, 0); 
    octree.add(scene.getObjectByName("tunnel")); 
    tunnel = scene.getObjectByName("tunnel"); 
} 

function addTunnelWrap(){ 
    var cylGeom = new THREE.CylinderGeometry(5100, 5100, 50000, 32, 32, true), 
     cylMat = new THREE.MeshBasicMaterial({ 
      color: 0x000000, 
      side: THREE.BackSide, 
      transparent: true 
     }), 
     cylWrap = new THREE.Mesh(cylGeom, cylMat); 

    cylWrap.name = "tunnelWrap"; 
    scene.add(cylWrap); 
    scene.getObjectByName("tunnelWrap").position.z = -12000; 
    rotateObject(scene.getObjectByName("tunnelWrap"), -90, 0, 0); 
    tunnelWrap = scene.getObjectByName("tunnelWrap"); 
    tunnelWrap.material.opacity = 1.0; 
} 
+0

材料に「THREE.DoubleSide」を試しましたか? – Wilt

+0

はい私はそれと同じ結果でした –

答えて

0

私は、裏側と二重目が混ざっていると思います。

私はフィドルhttp://jsfiddle.net/cg0aayw5/

は、おそらくこれは、それが質問を解読するのは難しい、右ではありませんしました。

フィドルは、不透明度の効果を円筒の内側に示すために、不透明度のテクスチャとアニメーションの代わりに色を使用します。

function addTunnel(){ 
    cylGeom = new THREE.CylinderGeometry(500, 500, 500, 32, 32, true); 
    cylMat = new THREE.MeshBasicMaterial({ 
    color: 0xFF0000, 
    side: THREE.FrontSide, 
    transparent: true, 
    }); 
    cyl = new THREE.Mesh(cylGeom, cylMat); 
    scene.add(cyl); 
} 

var cylWrap; 
function addTunnelWrap(){ 
    var cylGeom = new THREE.CylinderGeometry(510, 510, 500, 32, 32, true); 
    var cylMat = new THREE.MeshBasicMaterial({ 
    color: 0xFFFFFF, 
    side: THREE.BackSide, 
    transparent: true, 
    opacity:.6 
    }); 
    innerCyl = new THREE.Mesh(cylGeom, cylMat); 
    scene.add(innerCyl); 
} 
+0

こんにちはラジオ、コメントありがとう。私はこのコードを試したが、それは私のために働いていない。私はあらゆる種類の組み合わせを試しましたが、それは私がどのように意図して動作するようには見えません。ここに写真へのリンクがあります:http://imgur.com/ubcKjbF ....これはメインビュー(トンネル内)で、私はトンネルラップを使ってアルファシェイダーを書く必要がなくなります。トンネルを透過する不透明度現在、トンネルを通して見ることができ、トンネルラップは表示されません。 –