将360图像上的2d位置转换为3d位置(球形)

我有一堆360个等角图像,每个图像上我都想放置一个兴趣点。为了简化此操作,我只想确定该点在图像上的2d位置。参见下图以进行澄清:

将360图像上的2d位置转换为3d位置(球形)

让我们说蓝点的像素位置为X:3000和Y:1300。 并且图像的总尺寸为4096x2048。

现在,我想将此点转换为球形位置,然后转换为3d位置。我尝试通过以下方式做到这一点:

Year = 2017
Month = 9

2017 > 2017 || (2017 == 2017 && 9 > 10)
false || (true && false)
false || false
false

在这种情况下,Vector3 PlaceMenu(Vector2 loc2d) { var phi = 2 * Mathf.PI * (loc2d.x / imageDimensions.x); var theta = ( loc2d.y / imageDimensions.y) * Mathf.PI; var pos = new Vector3(Mathf.Cos(phi) * Mathf.Sin(theta),Mathf.Sin(phi) * Mathf.Sin(theta),Mathf.Cos(theta)); pos *= offsetRadius; return pos; } 是球体的半径。

但是我通过这段代码得到的结果很奇怪。因为蓝点出现在其他二维位置所指定的其他位置。

我在这里做什么错了?

如果需要更多说明,我很乐意提供!

hanhjj 回答:将360图像上的2d位置转换为3d位置(球形)

也许这可以帮助? https://blog.nobel-joergensen.com/2010/10/22/spherical-coordinates-in-unity/我正在寻找您想要实现的目标,我还没有尝试过这种解决方案,但这听起来很有希望。

本文链接:https://www.f2er.com/3013988.html

大家都在问