赞
踩
最近在加载3d模型时,需要点击模型的某个部位,就遇到了获取模型部位不准备的问题。
three.js中的raycaster用法是canvas是整个页面窗口的,所以它的代码是:
- // 将鼠标位置归一化为设备坐标。x 和 y 方向的取值范围是 (-1 to +1)
- mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
- mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
但是由于我的模型展示控件没有占满整个页面,所以用上述方法获取模型老是不对,但实际上我的项目中渲染模型的区域只有页面中的一块区域,所以这么些写获取到的部位总是不准确,终于在一个博主那找到了解决方案,特此记录
- // 通过鼠标点击位置,计算出 raycaster 所需点的位置,以屏幕为中心点,范围 -1 到 1
- //这里的container就是画布所在的div,也就是说,这个是要拿整个scene所在的容器来界定的
- let getBoundingClientRect = container.getBoundingClientRect()
- mouse.x = ((event.clientX - getBoundingClientRect .left) / container.offsetWidth) * 2 - 1;
- mouse.y = -((event.clientY - getBoundingClientRect .top) / container.offsetHeight) * 2 + 1;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。