【问题标题】:Vuforia Multi CameraVuforia 多摄像头
【发布时间】:2015-07-28 03:45:28
【问题描述】:

我有一个设置,我想展示 AR 场景的某些部分,所以我的计划是使用常规 AR 相机,然后添加第二个相机作为子相机,带有平面和深度蒙版。

ARCamera
 |
 +- Camera <-- Vuforia Prefab
      |
      +- Background Plane
      |
      +- RevealCamera <- My camera
              |
              +- DepthMask Plane

但是两个摄像头没有保持同步。我所有的场景几何体都在一个根节点下并且从不移动。我已经观看了场景窗口并验证了这一点。我确保两台相机都具有相同的截锥体设置。因此,此时唯一可能的情况是摄像机的移动方式不同。怎么可能? Vuforia 会用他们的相机玩一些花样吗?

这是我用来尝试匹配 Vuforia 相机的代码:

[RequireComponent(typeof(Camera))]

public class FollowMainCamera : MonoBehaviour
{
    public Camera target;
    private Camera _camera;

    void Start()
    {
        _camera = GetComponent<Camera>();
    }

    void Update()
    {
        transform.position = target.transform.position;
        transform.localPosition = target.transform.localPosition;
        transform.rotation = target.transform.rotation;
        transform.localRotation = target.transform.localRotation;

        _camera.fieldOfView = target.fieldOfView;
    }
}

【问题讨论】:

    标签: unity3d augmented-reality vuforia


    【解决方案1】:

    Vuforia 摄像头有一个技巧,那就是在运行时它会更改摄像头 FOV 以匹配设备的 FOV,因此您需要在运行时更新 RevealCamera 以匹配 ARCamera。

    【讨论】:

    • 我会检查的!谢谢!
    • 那行不通。它仍然关闭,我将编辑我的问题以放置我拥有的代码。
    • 如果您的摄像头是 AR 摄像头的子代,那么您无需更新它的位置或旋转,这会固有地发生。
    【解决方案2】:

    问题是“投影矩阵”。 Vuforia 的 AR 相机似乎使用了自己特定版本的投影矩阵,它定义了“世界”将如何在屏幕上显示。试试这个

    void Start()
    {
    SetProjectionMatrixAndFOV
    }
    
    void Update()
    {
        overlayCamera.transform.position = Camera.main.transform.position;
        overlayCamera.transform.rotation = Camera.main.transform.rotation;
    }
    
    
    private void SetProjectionMatrixAndFOV()
    {
        overlayCamera.fieldOfView = Camera.main.fieldOfView;
        overlayCamera.projectionMatrix = Camera.main.projectionMatrix;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      • 1970-01-01
      相关资源
      最近更新 更多