给定相机朝向的方向的 3D 向量和 3D 空间中 3D 对象的方向/方向向量,我如何计算鼠标指针在屏幕上必须遵循的 2 维斜率才能在视觉上是沿着所述物体的方向移动?
基本上,我希望能够单击箭头并通过拖动它使其前后移动,但前提是鼠标指针(大致)沿着箭头的长度拖动,即在它指向的方向上。
谢谢你
给定相机朝向的方向的 3D 向量和 3D 空间中 3D 对象的方向/方向向量,我如何计算鼠标指针在屏幕上必须遵循的 2 维斜率才能在视觉上是沿着所述物体的方向移动?
基本上,我希望能够单击箭头并通过拖动它使其前后移动,但前提是鼠标指针(大致)沿着箭头的长度拖动,即在它指向的方向上。
谢谢你
我不确定我 100% 理解你的问题。你介意张贴一张图表吗?
你可能会发现这些很有趣。我回答了之前的问题,以计算给定相机方向(查看)矢量的局部 XYZ 轴,以及在平行于相机的平面中平移物体的问题。
这两个示例都使用向量点积、向量叉积来计算所需的向量。在您的示例中,一旦找到它们,向量点积也可用于输出两个向量之间的角度。
这在一定程度上取决于您用于将 3d 真实世界坐标转换为 2d 屏幕坐标的转换,例如透视、等距等...您通常会有向前 (3d -> 2d) 和向后 (2d - > 3d) 游戏中的变换,其中反向变换丢失信息。(即前进每个 3d 点将映射到一个唯一的 2d 点,但从该点返回可能不会产生相同的 3d 点)。您通常可以将鼠标点投影到对象上以获取缺失的尺寸。
对于鼠标拖动,您通常让用户指定一个操作(在投影平面上平移、放大或缩小,或围绕锚点旋转)。您的输入是拖动开始和结束时的鼠标坐标,您将其转换为 3d 坐标系以获得两个 3d 坐标,这将为您提供 dx、dy、dz 用于拖动/平移等...