我用的是ThreeJS,但这是一个普通的数学题。
我的最终目标是使用2D屏幕空间坐标在我的场景中定位一个物体;然而,我希望在透视投影中有一个特定的z位置。
举个例子,我有一个球体,我想把它放在屏幕的左下角,而球体离摄像机只有5个单位。如果相机移动,球体将保持其感知的大小和位置。
我不能用正射相机,因为球体需要能够在透视投影中移动。在某一时刻,球体将被从屏幕上移开,并通过物理与场景进行交互。
我相信解决方案在某个地方的相机逆矩阵,然而,这是超出我的能力在目前的时刻。
任何帮助都是非常感谢的。
谢谢!
发布于 2022-07-07 14:59:11
您的帖子包含了太多的问题,这超出了StackOverflow的范围。但我试着回答主要的问题:
camera.add(plane);,所以每当相机移动,飞机与它一起移动。.setfromCamera(cords, cam).intersectObject(plane)方法将x,y屏幕线转换成x,y,z世界位置,在这里它与平面相交。你可以在文档里读到它。visible = false使飞机不可见在这个官方示例中,您可以看到光线传送器在工作:射线投射。
https://stackoverflow.com/questions/72899292
复制相似问题