3D空间:使用鼠标指针跟随对象指向的方向

时间:2012-01-27 09:15:37

标签: algorithm math drag-and-drop 3d dot-product

考虑到摄像机所面向的方向的3D矢量以及3D空间中3D对象的方向/方向向量,如何计算鼠标指针必须在屏幕上按顺序进行的二维斜率在视觉上沿着所述物体的方向移动?

基本上我希望能够点击箭头并通过拖动它来前后移动,但前提是鼠标指针沿着箭头的长度拖动(大致),即朝向它的方向指着。

谢谢

2 个答案:

答案 0 :(得分:1)

我不确定我100%理解你的问题。你介意发布图表吗?

您可能会发现这些感兴趣的内容。我回答了之前的问题calculate a local X Y Z axis given a camera direction(看看)向量,还有一个问题translate an object in a plane parallel to the camera

这两个示例都使用Vector dot productVector cross product来计算所需的向量。在您的示例中,vector dot product也可以用于在找到它们之后输出两个向量之间的角度。

答案 1 :(得分:0)

这取决于您用于将3d真实世界坐标转换为2d屏幕坐标的转换程度,例如透视,等距等......你通常会在游戏中有向前(3d - > 2d)和向后(2d - > 3d)变换,其中向后变换会丢失信息。 (即前进每个3d点将映射到唯一的2d点,但从该点返回可能不会产生相同的3d点)。您通常可以将鼠标点投影到对象上以获取缺少的维度。

对于鼠标拖动,您通常会让用户指定操作(在投影平面上平移,放大或缩小,或围绕锚点旋转)。您的输入是拖动开始和结束时的鼠标坐标,您可以将其转换为三维坐标系统以获得两个3d坐标,这将为您提供dx,dy,dz用于拖动/翻译等...