我希望能够拖动一个对象,但让它“捕捉”到另一个对象的表面。我不在乎它是否只是在我释放鼠标时“捕捉”,或者它是否实时更新。
最终目标:在 Blender 中创建一个平滑的形状,将其导入,并能够捕捉到该形状。我知道我可以通过一些数学运算来使用程序生成的表面来做到这一点,但我希望使用一些非程序生成的表面......或者至少,我想要使用的表面我还没有弄清楚如何在程序上生成呢。
我试着举这个例子:http ://stemkoski.github.io/Three.js/Mouse-Click.html 并将“点击”效果更改为“拖动”效果。然后我将它与这个例子结合起来:http: //mrdoob.github.io/three.js/examples/webgl_interactive_draggablecubes.html
效果是有效的,因为我可以将任何立方体拖过球体,并且面部突出显示。
然后我尝试使用这个有缺陷的逻辑将拖动的对象捕捉到球体的表面:
SELECTED.position.x = intersectsRay[ 0 ].face.normal.x;
SELECTED.position.y = intersectsRay[ 0 ].face.normal.y;
SELECTED.position.z = intersectsRay[ 0 ].face.normal.z;
问题:拖动的对象总是捕捉到球体的中心......
原因是,(我认为......)在这种情况下,面部“正常”是(球体)的中心。
有谁知道找到 FACE 的 x、y、z 的方法(无论是什么形状),或者任何其他方法来实现这个概念?