c# - 获取 Vuforia AR 相机指南针方向

标签 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、right 等解决方案。但它始终打印 North 作为方向,无论我拿着手机的方向如何。你能指导我这里有什么问题吗?我需要找到用户拿着手机的方向,以显示该方向上的一些兴趣点。

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

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

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

最佳答案

如果您想获得一个In Game Compass,您可以从AssetStore 购买一个here .
但是如果你想自己免费制作,你可以开始here有一个非常基本的

编辑1
这是一个可以提供帮助的脚本

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

关于c# - 获取 Vuforia AR 相机指南针方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43664442/

相关文章:

c# - Automapper 在类和结构 AfterMap 之间不起作用

c# - RabbitMQ - 将未确认的消息传递到不同的队列

c# - 在 Unity3D 中使用第一人称 Controller 在空中移动,c#

android - 在 Android Studio 中安装 Vuforia

java - 为 Vuforia 创建网格 (Java)

c# - 名称在注释中使用 cref 时包含无效字符

c# - 当检索时未指定任何条件时,SQL Server 使用什么条件对其记录进行排序

c# - Unity3d进度条

c# - 统一 3D : Game Object interaction

unity3d - 在 Unity 中使用 MRTK 和 Vuforia - 选择什么相机?