获取Vuforia AR相机指南针方向

时间:2017-04-27 17:33:54

标签: c# unity3d vuforia

我试图弄清楚如何获得Vuforia AR相机指南针方向,即北/南/东/西。有人可以指导我吗?

试图在下面使用,但是CameraDevice.Instance没有任何属性来获取罗盘方向。

在下面尝试,从另一个Vuforia帖子,看看有什么属性,但这也没有。

// Get the fields
IEnumerable cameraFields = CameraDevice.Instance.GetCameraFields();

// Print fields to device logs    
foreach (CameraDevice.CameraField field in cameraFields) {    
   Debug.Log("Key: " + field.Key + "; Type: " + field.Type);    
}

尝试过类似下面的内容。

GameObject cam;
cam = GameObject.Find("ARCamera");

并尝试打印cam.transform.forward,但它给了我类似的东西(0.0,0.0,1.0)。如果这是正确的方法,你能帮助我理解如何从中获取方向吗?

更新: 我曾尝试过使用Vector3.forward,右等的解决方案。但它总是将North打印为方向,而不管我拿着手机的方向。你能指导我这里有什么问题吗?我需要找到用户拿着手机的方向,以显示该方向的一些兴趣点。

我将此脚本附加到ARCamera(vuforia)对象本身,并在脚本的start方法中添加了这些语句。我也尝试将它们放在更新方法中,但仍然是相同的行为。

如果您需要更多详细信息,请告诉我。

GameObject cam; 
cam = GameObject.Find ("ARCamera"); 
var dir = cam.transform.forward; 
dir.y = 0; 
dir.Normalize (); 
if (Vector3.Angle(dir, Vector3.forward) <= 45.0) { 
    Debug.Log("In Start method.. North"); 
} else if (Vector3.Angle(dir, Vector3.right) <= 45.0) { 
    Debug.Log("In Start method.. East"); 
} else if (Vector3.Angle(dir, Vector3.back) <= 45.0) { 
    Debug.Log("In Start method.. South"); 
} else { 
    Debug.Log("In Start method.. West"); 
}

2 个答案:

答案 0 :(得分:1)

如果您想要获得在游戏指南针,您可以从AssetStore here购买一个。
但如果您想免费自己制作一个你可以用一个非常基本的

开始here

<强> EDIT1
这是一个可以帮助的脚本

GameObject cam; 
cam = GameObject.Find ("ARCamera"); 

    if (cam.transform.eulerAngles.y >= 0 && cam.transform.eulerAngles.y <= 90)
    {
        print("Looking at NORTH");
    }
    else if (cam.transform.eulerAngles.y >= 91 && cam.transform.eulerAngles.y <= 180)
    {
        print("Looking at EAST");
    }
    else if (cam.transform.eulerAngles.y >= 181 && cam.transform.eulerAngles.y <= 270)
    {
        print("Looking at SOUTH");
    }
    else if (cam.transform.eulerAngles.y >= 271 && cam.transform.eulerAngles.y <= 360)
    {
        print("Looking at WEST");
    }   
 }

答案 1 :(得分:0)

看起来Unity有一些名为&#39; Input.compass&#39; ..所以,如果我设置&#39; Input.compass.enabled = true,在开始跟踪位置并使用Input.compass.trueHeading之前,它给了我手机相机的方向(我相信的是eulerangle)..从另一篇博文发现 - https://blog.falafel.com/displaying-device-compass-unity/