Javascript 每个屏幕上的鼠标事件<;g>;三个JS中加载在材质上的svg标记
我正在使用SVGLoader将SVG图像加载到BoxBufferGeometry(立方体)的网格基本材质中。我想在用户悬停/单击加载在多维数据集特定一侧的SVG的特定元素时触发鼠标事件 在加载.svg文件之前,我尝试将事件添加到该文件中,但一旦加载到材质中,它就不会显示由事件引起的任何更改 是否有其他可能的方法来选择加载的svg图像的元素并在其上应用事件 为了更好地理解,请参考除此之外的内容,并尝试使用以下代码访问特定的一方:Javascript 每个屏幕上的鼠标事件<;g>;三个JS中加载在材质上的svg标记,javascript,css,svg,three.js,jquery-selectors,Javascript,Css,Svg,Three.js,Jquery Selectors,我正在使用SVGLoader将SVG图像加载到BoxBufferGeometry(立方体)的网格基本材质中。我想在用户悬停/单击加载在多维数据集特定一侧的SVG的特定元素时触发鼠标事件 在加载.svg文件之前,我尝试将事件添加到该文件中,但一旦加载到材质中,它就不会显示由事件引起的任何更改 是否有其他可能的方法来选择加载的svg图像的元素并在其上应用事件 为了更好地理解,请参考除此之外的内容,并尝试使用以下代码访问特定的一方: raycaster.setFromC
raycaster.setFromCamera( mouse, camera );
var intersects = raycaster.intersectObjects( scene.children );
if ( intersects.length > 0 ) {
var index = Math.floor( intersects[0].faceIndex / 2 );
if ( INTERSECTED != intersects[ 0 ].object && (index == 4 || index == 5)) {
if ( INTERSECTED ) {
INTERSECTED.material[intersects[0].faceIndex].color.setHex( INTERSECTED.currentHex );
}
INTERSECTED = intersects[ 0 ].object;
INTERSECTED.currentHex = INTERSECTED.material[4].color.getHex();
INTERSECTED.material[index].color.setHex( 0xCACACA );
f = index;
}
我使用threex.domevent.js捕获了鼠标悬停事件,并创建了一个plunker。我正在查找具有svg图像的立方体面。 链接: 和
- 使用*threex.domevent.js附加dom事件**
domEvents=新的三个.domEvents(摄影机、渲染器.domElement)
- 聆听鼠标悬停事件,找到您需要的人脸
普朗克: 希望能有帮助domEvents.addEventListener(mesh, 'mouseover', function(event) { var vector = new THREE.Vector3( (event.clientX / window.innerWidth) * 2 - 1, -(event.clientY / window.innerHeight) * 2 + 1, ); vector.unproject(camera); raycaster.set(camera.position, vector.sub(camera.position).normalize()); var intersects = raycaster.intersectObject(mesh); if (intersects.length > 0) { var index = Math.floor(intersects[0].faceIndex / 2); if (index === 4) { //index 4 is cude face having the svg image, //you can load a new svg or do required things here console.log('##############'); mesh.material[4].map = new THREE.TextureLoader().load('sample2.svg'); } } }, false)