2017-06-15 3 views
0

私がタイトルで言ったように私の球体が映っていると、キューブのライブリフレクション球の周りの完全な円を取得します。私は軌道を描くボックスで動的に反射する球を作ろうとしていますが、反射は「ドラッグする」

ここに私の形状があります。

var cubeGeometry = new THREE.BoxGeometry(1, 1, 1); 
var sphereGeometry = new THREE.SphereGeometry(3, 64, 64); 
var smallSphereGeometry = new THREE.SphereGeometry(1, 64, 64); 

var cubeCamera = new THREE.CubeCamera(0.1, 5000, 512); 
scene.add(cubeCamera); 

var mirrorShpereMaterial = new THREE.MeshBasicMaterial({envMap:cubeCamera.renderTarget }); 
var material1 = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: false}); 

var cube = new THREE.Mesh(cubeGeometry, material1); 
var sphere = new THREE.Mesh(sphereGeometry, mirrorShpereMaterial); 
var smallSphere = new THREE.Mesh(smallSphereGeometry, material); 

cube.position.x = 5; 

その後私はシーンにすべての図形を追加し、私は小さな球にキューブを添付し、軌道の効果を得るために小さな球体を回転させます。

私は目に見えないに球を設定すると、カメラが、スナップショットを取り、新しい有する材料を更新する必要があり反射を動的にする必要があり、ここの部分を理解して何からレンダリング機能

function render(){ 

      var delta = clock.getDelta(); 
      renderer.clear(); 



      sphere.visible = false; 
      cubeCamera.updateCubeMap(renderer, scene); 
      sphere.visible 



      composer.render(delta); 
      requestAnimationFrame(render); 
      smallSphere.rotation.y += 0.05; 

      cube.rotation.z += 0.05; 
      cube.rotation.x += 0.05; 



     } 
     var clock = new THREE.Clock() 
     controls.update(); 
     render(); 

次キューブの位置ですが、実行すると新しい位置が更新されず、以前の位置がすべて球面上に維持されたまま新しい位置が追加されます。だから私はここに何かを紛失しているのか、これをどうやって違うのかと思っています。

答えて

0

私はこの問題を発見しました。私はエフェクトコンポーザーを使用していましたが、何らかの原因でリフレクションを引き起こしていました。一旦除去されると、反射は正しく働いた。

+0

コンポーザーと反射面の両方を使用するには、レンダリングループの内側にautoClear = falseを移動して、レンダリングステップを実行するたびに戻していた –