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

问题描述 投票:2回答:1

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

enter image description here

假设蓝点的像素位置为X:3000和Y:1300。并且图像的总尺寸为4096x2048。

现在,我想将此点转换为球形位置,然后转换为3d位置。我尝试通过以下方式执行此操作:

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;
}

在这种情况下,offsetRadius是球体的半径。

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

我在这里做错了什么?

如果需要更多解释,我很乐意提供!

unity3d 3d 2d converters 360-virtual-reality
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.