获取 Vuforia AR 相机指南针方向
Get Vuforia AR Camera Compass Direction
我正在尝试弄清楚如何获取 Vuforia AR 相机罗盘方向,即 North/South/East/West。有人可以指导我吗?
尝试在下面使用,但是CameraDevice.Instance没有任何属性来获取罗盘方向。
在下面尝试,从不同的 Vuforia post,看看有什么属性,但这也没有。
// 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 作为方向,而不管我的 phone 的方向如何。你能指导我这里有什么问题吗?我需要找到用户拿着他的 phone 的方向,以显示该方向上的一些兴趣点。
我将此脚本附加到 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.
But If you want to make it yourself for free you can start 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");
}
}
看起来 Unity 有一个叫做 'Input.compass'.. 所以,如果我设置 'Input.compass.enabled=true,在开始跟踪位置和使用 Input.compass.trueHeading 之前,它会给我方向(就欧拉角而言,我相信)phone 相机..从另一个博客 post - https://blog.falafel.com/displaying-device-compass-unity/
找到
我正在尝试弄清楚如何获取 Vuforia AR 相机罗盘方向,即 North/South/East/West。有人可以指导我吗?
尝试在下面使用,但是CameraDevice.Instance没有任何属性来获取罗盘方向。
在下面尝试,从不同的 Vuforia post,看看有什么属性,但这也没有。
// 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 作为方向,而不管我的 phone 的方向如何。你能指导我这里有什么问题吗?我需要找到用户拿着他的 phone 的方向,以显示该方向上的一些兴趣点。
我将此脚本附加到 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.
But If you want to make it yourself for free you can start 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");
}
}
看起来 Unity 有一个叫做 'Input.compass'.. 所以,如果我设置 'Input.compass.enabled=true,在开始跟踪位置和使用 Input.compass.trueHeading 之前,它会给我方向(就欧拉角而言,我相信)phone 相机..从另一个博客 post - https://blog.falafel.com/displaying-device-compass-unity/
找到