如题,最近需要做模型的拖拽组装,一个大功能是零件物体表面吸附,到处找没找到资料
这个需求可以考虑用 Raycaster + Quaternion 来实现,Three.js 本身有基础的射线检测能力。
大致思路:
point,以及命中三角面的法线 face.normal。如果是复杂的工业零件组装,我更建议给每个零件预设装配锚点,并定义连接类型,例如管道接口、螺栓接口等。拖动时寻找附近匹配的锚点,自动完成位置和角度对齐。
另外,复杂模型的射线检测可以考虑 three-mesh-bvh 加速。
这里需要区分一下:普通的表面吸附和两个零件之间的精准装配是两种不同的实现思路,后者最好基于 Anchor 和装配约束来做。