I have a function that generates a sphere using Three.js and wants to add an event listener so it'll log textureToShow
value when I clicked it. When I tested it nothing logged to my console. Here's my code
function createSphereImage(imageLocation) {
var textureToShow = 0;
var raycaster = new THREE.Raycaster();
var mouse = new THREE.Vector2();
var geometry = new THREE.SphereGeometry(500, 60, 40);
geometry.scale( - 1, 1, 1);
var textureLoader = new THREE.TextureLoader();
var texture = textureLoader.load(imageLocation[textureToShow]);
var material = new THREE.MeshBasicMaterial({
map: texture,
side: THREE.DoubleSide
});
var mesh = new THREE.Mesh(geometry, material);
raycaster.setFromCamera( mouse, camera );
window.addEventListener('click', imageIndexChanger, false);
scene.add(mesh)
function imageIndexChanger(event) {
mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
raycaster.setFromCamera(mouse, camera);
var intersects = raycaster.intersectObjects(mesh);
console.log(textureToShow)
}
}
Where did I go wrong?