Alexander Hein
Alexander Hein

Reputation: 990

Mesh only visible in reflection

I'm using a cubeCamera for live cube maps reflections. How do I show a mesh only in the reflection.

Can anyone guide me how to accomplish it, or is it possible at all ?

  cubeCamera = new THREE.CubeCamera( 1, 600, 512 );
  cubeCamera.renderTarget.texture.minFilter = THREE.LinearMipMapLinearFilter;
  scene.add( cubeCamera );

envMap

envMap: cubeCamera.renderTarget,

Basic mesh

  var geometry = new THREE.PlaneBufferGeometry( 1, 1 );
  var material = new THREE.MeshBasicMaterial({color: 0xffffff });

var mesh = new THREE.Mesh( geometry, material);
mesh.position.set( 0, 0, 0 );
scene.add( mesh );

Render

function animate() {

  requestAnimationFrame(animate);
  renderer.render(scene, camera);

}

function render() {

  cubeCamera.updateCubeMap( renderer, scene );
  renderer.render( scene, camera );

}

function update() {

  requestAnimationFrame( update );
  render();

}

Upvotes: 0

Views: 223

Answers (1)

2pha
2pha

Reputation: 10165

Try this (I have not tested it)
I am assuming it is the mesh object that you want only visible in the reflections.

Basic mesh

var geometry = new THREE.PlaneBufferGeometry( 1, 1 );
var material = new THREE.MeshBasicMaterial({color: 0xffffff });

var mesh = new THREE.Mesh( geometry, material);
mesh.position.set( 0, 0, 0 );
// make your mesh invisible.
mesh.visible = false;
scene.add( mesh );

Render

function render() {
  // Make mesh visible to the cubeCamera.
  mesh.visible = true;
  cubeCamera.updateCubeMap( renderer, scene );
  // Make mesh invisible again.
  mesh.visible = false;
  renderer.render( scene, camera );
}

Upvotes: 1

Related Questions