首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将屏幕空间X,Y位置转换为具有特定z位置的透视投影

将屏幕空间X,Y位置转换为具有特定z位置的透视投影
EN

Stack Overflow用户
提问于 2022-07-07 14:07:02
回答 1查看 32关注 0票数 1

我用的是ThreeJS,但这是一个普通的数学题。

我的最终目标是使用2D屏幕空间坐标在我的场景中定位一个物体;然而,我希望在透视投影中有一个特定的z位置。

举个例子,我有一个球体,我想把它放在屏幕的左下角,而球体离摄像机只有5个单位。如果相机移动,球体将保持其感知的大小和位置。

我不能用正射相机,因为球体需要能够在透视投影中移动。在某一时刻,球体将被从屏幕上移开,并通过物理与场景进行交互。

我相信解决方案在某个地方的相机逆矩阵,然而,这是超出我的能力在目前的时刻。

任何帮助都是非常感谢的。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-07 14:59:11

您的帖子包含了太多的问题,这超出了StackOverflow的范围。但我试着回答主要的问题:

  1. 使用PlaneGeometry创建平面网格。
  2. 旋转它来面对相机,把它放在离相机5单位的地方。
  3. 添加它作为一个孩子与camera.add(plane);,所以每当相机移动,飞机与它一起移动。
  4. 使用雷克斯特的.setfromCamera(cords, cam)
  5. 然后用.intersectObject(plane)方法将x,y屏幕线转换成x,y,z世界位置,在这里它与平面相交。你可以在文档里读到它
  6. 一旦它工作了,用visible = false使飞机不可见

在这个官方示例中,您可以看到光线传送器在工作:射线投射

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

https://stackoverflow.com/questions/72899292

复制
相关文章

相似问题

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