我们目前正在开发一个应用,该应用将显示叠加在摄像机视图上的对象(基本上是增强现实),但是发现这些对象看起来不是“真实的”。这样做的原因是因为我们对象的大小不会像现实生活中的对象那样改变大小。
例如,假设我们在增强现实中将对象放置在lat = 43,长= -70处。如果我们开始用手机走近这一点,我们应该看到物体随着离我们越来越近而变得越来越大,但是到目前为止,尺寸的增长是线性的。但是,当我们开始向现实生活中的物体靠拢时,我们会发现它会根据特定功能变得更大。
关于该功能可能有什么想法?
谢谢。
最佳答案
它应该相对于摄像机后面的某个点呈线性。
想象一个3D世界,您将图像投影到飞机上(拍摄照片)。如果保持这种状态,则当飞机(摄像机)移动时,对象不会改变大小。那将是正交投影(http://en.wikipedia.org/wiki/Orthographic_projection)。
现实世界中的相机的工作原理类似于透视投影(http://en.wikipedia.org/wiki/Perspective_(graphical)),不同之处在于该点位于相机之前,并且图像在平面上反转了。这意味着图像上对象的大小就是这样的函数
realSize * (constantDistanceBetweenPlaneAndPoint / distanceFromPoint)
我对相机的了解还不足以告诉您是否记录了该值,但是对于特定的缩放系数,该值应为常数。只是通过实验弄清楚它的问题。
关于java - 增强现实尺寸转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8055404/