【问题标题】:How to change Vuforia AR camera focus mode?如何更改 Vuforia AR 相机对焦模式?
【发布时间】:2017-01-12 07:53:37
【问题描述】:

我在 Unity 中使用 Vuforia 6.2 AR SDK。但是,当我在 Android 手机中测试应用程序时,相机看起来像 模糊。我在 Vuforia 的开发者网站上搜索并找到了一些相机对焦模式,但我无法实现,因为该指南适用于较旧的 Vuforia SDK,我找不到他们在他们的网站中提到的脚本。这是他们的代码示例,但它不起作用。我创建了不同的脚本并在 Start() 函数上运行这一行,但仍然无法正常工作。

CameraDevice.Instance.SetFocusMode(
        CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);

【问题讨论】:

  • 该软件包附带了一个示例,其中包括一个菜单(在手机上双击以显示它),您可以在其中切换自动对焦。如果它不能以这种方式工作,则问题可能出在您的设备上。
  • 确保在脚本顶部包含此内容:使用 Vuforia;
  • 这段代码在哪里使用?在哪个文件中?

标签: android unity3d camera augmented-reality vuforia


【解决方案1】:

试试这个

void Start () 
{
    VuforiaARController.Instance.RegisterVuforiaStartedCallback(OnVuforiaStarted);
    VuforiaARController.Instance.RegisterOnPauseCallback(OnPaused);
}
  
private void OnVuforiaStarted()
{
    CameraDevice.Instance.SetFocusMode(
        CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
}
  
private void OnPaused(bool paused)
{
    if (!paused) // resumed
    {
        // Set again autofocus mode when app is resumed
        CameraDevice.Instance.SetFocusMode(
            CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
    }
}

【讨论】:

  • 嗨,Shubham,你是对的!但是您需要将“VuforiaBehaviour”替换为“VuforiaARController”。如:VuforiaARController.Instance.RegisterVuforiaStartedCallback(OnVuforiaStarted); VuforiaARController.Instance.RegisterOnPauseCallback(OnPaused);
  • 他们更新了SDK但还没有更新文档,真是令人沮丧!我修改了前两行,现在它对我有用!请编辑您的代码,我将其作为答案。谢谢
  • @Turzo 谢谢我会改的
【解决方案2】:

这个代码是正确的代码。

bool cameramode = false;
public void OnCameraChangeMode()
{
    Vuforia.CameraDevice.CameraDirection currentDir = Vuforia.CameraDevice.Instance.GetCameraDirection();
    if (!cameramode) {
        RestartCamera(Vuforia.CameraDevice.CameraDirection.CAMERA_FRONT);
        camBtnTxt.text = "Back Camera";
    } else {
        RestartCamera(Vuforia.CameraDevice.CameraDirection.CAMERA_BACK);
        camBtnTxt.text = "Front Camera";
    }
}

private void RestartCamera(Vuforia.CameraDevice.CameraDirection newDir)
{
    Vuforia.CameraDevice.Instance.Stop();
    Vuforia.CameraDevice.Instance.Deinit();
    Vuforia.CameraDevice.Instance.Init(newDir);
    Vuforia.CameraDevice.Instance.Start();
}

【讨论】:

  • 嗨,@Subham 提供的第一个答案是我正在寻找的正确答案。感谢您的回答! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-13
  • 1970-01-01
  • 2018-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多