1

我的问题类似于透视投影 (OpenGL) 中的 3D 场景平移,但我不知道如何计算移动网格的方向。

我有一个可以选择各种网格的程序。选择网格后,我希望它在单击拖动光标时进行平移。当光标向上移动时,我希望网格向上移动,以此类推为适当的方向。换句话说,我希望网格沿着垂直于观察方向的平面平移。

我在光标位置有 Delta (x,y) 的 Vector2,我有相机的 Vector3 viewDirection 和网格的中心。如何确定使用 Delta 和 viewDirection 在 3d 空间中转换网格的方式?我是否需要其他信息才能进行此计算(例如向上或眼睛)?

如果翻译的比例关闭也没关系,我现在只是想弄清楚方向。

编辑:出于某种原因,我对向上方向感到困惑。显然,它可以通过将相机旋转应用于指定的透视向上向量来计算。

4

1 回答 1

1

您将需要一个额外的向量 ,upDirection它是从您的相机“向上”指向的单位向量。您现在可以交叉乘积viewDirectionupDirection得到rightDirection,从您的相机指向“右”的向量。

您想将y增量映射到沿upDirection(或-upDirection) 的运动,并将x增量映射到沿 的运动rightDirection。这些向量在世界空间中。

您可能希望缩放平移速度以匹配鼠标速度。如果您使用透视投影,您需要根据模型相对于相机的深度来缩放平移速度(对象离相机越远,如果您希望它与鼠标匹配,则需要移动得越快.)

于 2013-04-15T17:00:32.903 回答