Three.js中的raycaster射线获取模型不准确问题
three.js
JavaScript 3D Library.
项目地址:https://gitcode.com/gh_mirrors/th/three.js

·
最近在加载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;




JavaScript 3D Library.
最近提交(Master分支:1 个月前 )
dcabbf73
3 小时前
a3fe811a
* Examples: Fix shadows in physics instancing demos.
* Clean up. 22 小时前
更多推荐
所有评论(0)