摘要:获取鼠标经过地点的元素获取鼠标经过地点的元素鼠标滑过小球市时触发的事件隐藏不可选
获取鼠标经过地点的元素
// 获取鼠标经过地点的元素
intersectObjects(pointer,camera,obj) { var domElement = viewer.impl.canvas; var pointerVector = new THREE.Vector3(); var pointerDir = new THREE.Vector3(); var ray = new THREE.Raycaster(); var rect = domElement.getBoundingClientRect(); var x = ( ( pointer.clientX - rect.left ) / rect.width ) * 2 - 1; var y = - ( ( pointer.clientY - rect.top ) / rect.height ) * 2 + 1; if (camera.isPerspective) { pointerVector.set(x, y, 0.5); pointerVector.unproject(camera); ray.set(camera.position, pointerVector.sub(camera.position).normalize()); } else { pointerVector.set(x, y, -1); pointerVector.unproject(camera); pointerDir.set(0, 0, -1); ray.set(pointerVector, pointerDir.transformDirection(camera.matrixWorld)); } var intersections = ray.intersectObjects( obj, true ); return intersections[0] ? intersections[0] : false; } // 鼠标滑过小球市时触发的事件 hoverIntersectObjects(event){ var flag =true; var pointer = event.pointers ? event.pointers[ 0 ] : event; var camera = viewer.getCamera(); var objects = viewer.impl.overlayScenes.lable.scene.children; var obj = viewer.vmethods.intersectObjects(pointer,camera,objects).object; if(obj){ //隐藏不可选 if(!obj.visible)return; if(this.oldObj) this.oldObj.material.color.setHex( this.oldObj.currentHex ); this.oldObj=obj; this.oldObj.currentHex = obj.material.color.getHex(); this.oldObj.material.color.setHex( 0x660000); viewer.impl.invalidate(false, false, true); var pos=viewer.worldToClient(this.oldObj.position); var posX=pos.x-$(".k-tooltip").width()/2; var posY=pos.y-$(".k-tooltip").height()-20; $(".k-tooltip").css({"left":posX,"top":posY}); $(".k-tooltip").show(); $(".k-tooltip .name").text(this.oldObj.name); }else{ if(this.oldObj) { this.oldObj.material.color.setHex( this.oldObj.currentHex ); viewer.impl.invalidate(false, false, true) $(".k-tooltip").hide(); } } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/103992.html
摘要:个人前端文章整理从最开始萌生写文章的想法,到着手开始写,再到现在已经一年的时间了,由于工作比较忙,更新缓慢,后面还是会继更新,现将已经写好的文章整理一个目录,方便更多的小伙伴去学习。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 个人前端文章整理 从最开始萌生写文章的想法,到着手...
摘要:在文末,我会附上一个可加载的模型方便学习中文艺术字渲染用原生可以很容易地绘制文字,但是原生提供的文字效果美化功能十分有限。 showImg(https://segmentfault.com/img/bVWYnb?w=900&h=385); WebGL 可以说是 HTML5 技术生态链中最为令人振奋的标准之一,它把 Web 带入了 3D 的时代。 初识 WebGL 先通过几个使用 Web...
摘要:两种相机的区别目前提供了几种不同的相机,最常用的,也是下面插件中使用的两种相机是透视相机正交投影相机。上面的图很清楚的解释了两种相机的区别右侧是正交投影相机他不具有透视效果,即物体的大小不受远近距离的影响,对应的是投影中的正交投影。导读 本文从绘图基础开始讲起,详细介绍了如何使用Three.js开发一个功能齐全的全景插件。 我们先来看一下插件的效果: showImg(https://user...
阅读 806·2021-11-19 11:29
阅读 3325·2021-09-26 10:15
阅读 2830·2021-09-22 10:02
阅读 2413·2021-09-02 15:15
阅读 1956·2019-08-30 15:56
阅读 2356·2019-08-30 15:54
阅读 2881·2019-08-29 16:59
阅读 611·2019-08-29 16:20