首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >3D空间:使用鼠标指针跟随对象指向的方向

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

Stack Overflow用户
提问于 2012-01-27 17:15:37
回答 2查看 1.6K关注 0票数 4

给定摄像机面对的方向的3D矢量和3D空间中3D对象的方向/方向矢量,我如何计算鼠标指针在屏幕上必须跟随的二维斜率,以便在视觉上沿着所述对象的方向移动?

基本上,我希望能够单击一个箭头,并通过拖动它来使它来回移动,但前提是鼠标指针沿着箭头的长度拖动(粗略地),即沿着它所指向的方向拖动。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2012-01-27 17:28:19

我不确定我100%理解你的问题。你介意贴一张图表吗?

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

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

票数 1
EN

Stack Overflow用户

发布于 2012-01-27 18:31:39

这在一定程度上取决于您将3d现实世界坐标转换为2d屏幕坐标所使用的转换,例如透视、等轴测等。您通常会使用向前(3d -> 2d)和向后(2d -> 3d)变换,其中向后变换会丢失信息。(即向前看,每个三维点将映射到唯一的二维点,但从该点返回可能不会产生相同的三维点)。您通常可以将鼠标指针投影到对象上,以获得缺少的尺寸。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9031088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档