比如一个三维模型在一个曲面表面上移动,当移动一个位置的时候,为了调整运动模型相对曲面的位置,可能需要把模型沿着所在位置曲面的法线方向平移一定距离。
通过.face.normal
属性可以获得射线选中模型当前位置的法线值,更多信息可以参考threejs文档关于Raycaster
介绍。
模型对象的.translateOnAxis()
方法表示一个模型沿着参数1三维向量Vector3表示的方向移动一定距离,参数2用来设置平移的距离,关于方法更多介绍可以参考threejs文档Object3D
。
var intersects = raycaster.intersectObjects([sphereMesh...]);
if (intersects.length > 0) {
// 射线位置赋值给移动网格模型
moveMesh.position.copy(intersects[0].point)
// 沿着法线方向平移移动的网格模型
var normal = intersects[0].face.normal;// 当前位置曲面法线
moveMesh.translateOnAxis(intersects[0].face.normal,5);
}