Je cherche une sorte de gestion d'événements pour les géométries / caméras / lumières (choses que nous ajoutons à la scène) dans trois.js?
J'ai googlé mais je n'ai pas trouvé de pertinence. J'ai fait un simple rendu de Sphère et j'ai essayé de voir le contenu de DIV dans Firebug, mais il n'y a qu'une seule toile, et ajouter un "onclick" à la toile fait l'événement pour tout le canevas, c'est-à-dire non seulement pour la sphère ou la lumière .
Aucune suggestion ?
Vous avez besoin d'un couple de choses pour obtenir l'interactivité en 3D:
Cela pourrait sembler compliqué, mais le code est déjà là:
function onDocumentMouseDown( event ) { event.preventDefault(); var vector = new THREE.Vector3( ( event.clientX / window.innerWidth ) * 2 - 1, - ( event.clientY / window.innerHeight ) * 2 + 1, 0.5 ); projector.unprojectVector( vector, camera ); var ray = new THREE.Ray( camera.position, vector.subSelf( camera.position ).normalize() ); var intersects = ray.intersectObjects( objects ); if ( intersects.length > 0 ) { intersects[ 0 ].object.material.color.setHex( Math.random() * 0xffffff ); var particle = new THREE.Particle( particleMaterial ); particle.position = intersects[ 0 ].point; particle.scale.x = particle.scale.y = 8; scene.add( particle ); } /* // Parse all the faces for ( var i in intersects ) { intersects[ i ].face.material[ 0 ].color.setHex( Math.random() * 0xffffff | 0x80000000 ); } */ }
Ce code ci-dessus à partir de l'exemple toile_interactive_cubes qui vient avec la bibliothèque. En cas de doute, il est toujours bon de vérifier s'il existe un exemple qui résout le problème déjà.