gpt4 book ai didi

c# - Unity 中的 ScreenToWorldPoint 与真实相机

转载 作者:行者123 更新时间:2023-12-02 17:41:18 25 4
gpt4 key购买 nike

我正在使用 Unity 制作 AR 应用程序。

使用“真实相机”,它使用特征匹配来匹配已经在数据库中的图片的特定对象。

特征匹配后,我在下面的实例中存储了关键点的值之一:

   KeyPoint key_point;


然后我想使用那个key_point来获得现实世界的位置。

   //let's assume that 
//'x' is x-coordinate of key_point
//'y' is y-coordinate of key_point

Vector3 p = camera.ScreenToWorldPoint (Vector3 (x, y, camera.nearClipPlane));


我不确定这是否可能,因为其他使用“camer.nearClipPlane”的人正在虚拟 3D 世界中使用它。

如果不可能,有没有其他方法可以将现实世界中的 2d 位置更改为 3d 位置(我的意思是,真实的相机世界)?

最佳答案

我认为您的解决方案存在不考虑相机FOV的问题。因此,您的屏幕点将垂直投影到近剪辑平面。但这仅适用于屏幕的中心。

一种简单的解决方案是使用射线对象:

Ray ray = Camera.main.ScreenPointToRay(x,y);

https://docs.unity3d.com/ScriptReference/Camera.ScreenPointToRay.html

根据文档:

" 产生的光线在世界空间中,从相机的近平面 开始,并通过屏幕上位置的 (x,y) 像素坐标(忽略 position.z)。

所以你的观点是:
   Vector3 point =  ray.origin;

关于c# - Unity 中的 ScreenToWorldPoint 与真实相机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44607220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com